Summary
Every cron job using agentTurn payload delivers [object Object] to the LLM instead of the configured message string. The LLM responds to the serialization artifact instead of executing the cron prompt. This affects all cron jobs on the instance regardless of session isolation, model, or plugin configuration.
Reproduction
openclaw cron add --name "test" --every "24h" \
--message "Say: HELLO WORLD" \
--session isolated --light-context \
--model "anthropic/claude-sonnet-4-6" \
--no-deliver --timeout 30000
openclaw cron run <id>
# Summary references [object Object] instead of "HELLO WORLD"
Isolation Testing
| Test |
Result |
| Purged all agent sessions (10 agents) |
Still contaminated |
| Disabled all channels (Telegram + Slack) |
Still contaminated |
| Disabled all plugins (13 plugins) |
Still contaminated |
| Disabled all hooks |
Still contaminated |
| --light-context + dedicated --session keys |
Still contaminated |
| Changed workspace to clean directory |
Still contaminated |
| Purged Telegram update-offset state |
Still contaminated |
| Different models (Sonnet, Haiku, GPT-4.1-mini) |
All contaminated |
| Verified jobs.json — message field is correct string |
Payload is fine |
| Tested model provider directly (curl) |
Provider works perfectly |
Key Observation
jobs.json contains the correct string payload. The serialization failure occurs between jobs.json read and LLM API call construction inside the Gateway's cron execution pipeline.
Additional Symptom
Telegram DM responses also broken — Gateway shows "typing" but never delivers a response. Likely same root cause.
Environment
- OpenClaw: 2026.3.23-2 (7ffe7e4), stable channel
- macOS 15.7.4 (arm64, M3 Pro), Node 25.8.1
- Models: Anthropic via local proxy + OpenAI direct
- Gateway: local loopback, token auth
Workaround
Moved cron jobs to launchd plists invoking claude -p directly + openclaw message send CLI.
Summary
Every cron job using
agentTurnpayload delivers[object Object]to the LLM instead of the configured message string. The LLM responds to the serialization artifact instead of executing the cron prompt. This affects all cron jobs on the instance regardless of session isolation, model, or plugin configuration.Reproduction
Isolation Testing
Key Observation
jobs.jsoncontains the correct string payload. The serialization failure occurs between jobs.json read and LLM API call construction inside the Gateway's cron execution pipeline.Additional Symptom
Telegram DM responses also broken — Gateway shows "typing" but never delivers a response. Likely same root cause.
Environment
Workaround
Moved cron jobs to launchd plists invoking
claude -pdirectly +openclaw message sendCLI.