Bug Description
Recurring cron jobs with schedule.kind: "cron" are scheduled but never actually execute. One-shot jobs with schedule.kind: "at" work correctly.
Environment
- OpenClaw version: 2026.2.3-1
- OS: macOS (arm64)
- Node: v24.6.0
Steps to Reproduce
- Create a recurring cron job with
"expr": "* * * * *"
- Wait several minutes
- Check
cron runs <jobId> — returns empty
- Check the store file —
nextRunAtMs advances every minute but lastRunAtMs is never set
Observations
- The store file mtime updates on schedule (timer IS firing)
nextRunAtMs advances correctly in the store
- But
lastRunAtMs never gets set and cron runs returns empty
- One-shot
at jobs work fine
- Gateway restart does not resolve the issue
Workaround
One-shot at jobs continue to work as expected.