Skip to content

Cron agentTurn payload delivers [object Object] to LLM instead of message string #54579

@ario

Description

@ario

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions