Summary
Manual triggering a recurring cron job (schedule.kind="every") can enqueue but never produce a runs entry, while the same payload works when scheduled as a one-shot at job.
Environment
- OpenClaw: v2026.3.8
- OS: Linux (arm64)
- Channel: Telegram
What works
- One-shot
at + sessionTarget: "isolated" + payload.kind: "agentTurn" + delivery.mode: "announce" works.
- Example run (jobId
9283dec4-...): finished ok, delivered=true.
What fails
- Recurring
every job (jobId 38c2fac8-...) when manually triggered via cron run --force:
- Tool returns
{enqueued:true} with a manual runId
cron runs <jobId> remains empty (no finished/error entry)
- Logs show lane enqueue/dequeue for
session:agent:main:cron:<jobId>, but no subsequent execute/finish logs.
Repro steps
- Create a recurring cron job:
{
"name": "Server health snapshot (8h) [isolated+announce]",
"schedule": {"kind":"every","everyMs":28800000},
"sessionTarget":"isolated",
"payload": {"kind":"agentTurn","message":"(any simple exec task)","timeoutSeconds":600},
"delivery": {"mode":"announce","channel":"telegram","to":"<chat_id>"}
}
- Manually run it:
openclaw cron run <jobId> --force (or via API / UI).
- Observe it gets enqueued but no run record appears and no message is delivered.
- Create the same job as one-shot
at for +1min; it finishes and delivers normally.
Logs
See attached excerpt (lane enqueue/dequeue around the manual run time).
Summary
Manual triggering a recurring cron job (
schedule.kind="every") can enqueue but never produce arunsentry, while the same payload works when scheduled as a one-shotatjob.Environment
What works
at+sessionTarget: "isolated"+payload.kind: "agentTurn"+delivery.mode: "announce"works.9283dec4-...): finished ok, delivered=true.What fails
everyjob (jobId38c2fac8-...) when manually triggered viacron run --force:{enqueued:true}with a manual runIdcron runs <jobId>remains empty (nofinished/errorentry)session:agent:main:cron:<jobId>, but no subsequent execute/finish logs.Repro steps
{ "name": "Server health snapshot (8h) [isolated+announce]", "schedule": {"kind":"every","everyMs":28800000}, "sessionTarget":"isolated", "payload": {"kind":"agentTurn","message":"(any simple exec task)","timeoutSeconds":600}, "delivery": {"mode":"announce","channel":"telegram","to":"<chat_id>"} }openclaw cron run <jobId> --force(or via API / UI).atfor +1min; it finishes and delivers normally.Logs
See attached excerpt (lane enqueue/dequeue around the manual run time).