Skip to content

Cron jobs with kind: 'cron' (expression-based) don't auto-fire #10336

@atl4so-labs-claw

Description

@atl4so-labs-claw

Summary

Cron jobs using kind: "cron" with cron expressions (e.g., "0 10 * * *") do not automatically fire at their scheduled time. However, jobs using kind: "every" (interval-based) work correctly.

Steps to Reproduce

  1. Create a cron job with kind: "cron" and a cron expression:
{
  "schedule": {
    "kind": "cron",
    "expr": "0 10 * * *",
    "tz": "Europe/London"
  }
}
  1. Wait for the scheduled time to pass
  2. Check cron runs — no runs recorded
  3. Check job state — nextRunAtMs has jumped to the next day

Expected Behavior

The job should fire at the scheduled cron time (e.g., 10:00 daily).

Actual Behavior

  • The job never fires automatically
  • nextRunAtMs keeps advancing without any actual run
  • cron runs shows empty entries

Workaround

  • Using openclaw cron run <jobId> --force from CLI works
  • Converting to kind: "every" with everyMs and anchorMs works

Evidence

  • Job with kind: "every" (Twitter Monitor, hourly) fires correctly and shows lastRunAtMs, lastStatus: "ok"
  • Job with kind: "cron" (Daily Email Digest) never fires, no lastRunAtMs until manually forced

Environment

  • OpenClaw version: 2026.2.3-1
  • OS: Linux (Ubuntu)
  • Gateway running continuously (no sleep/restarts during test window)
  • OPENCLAW_SKIP_CRON not set
  • Timezone explicitly set in job config

Additional Context

This was discovered while trying to schedule a daily email digest at 10:00 AM. The job was updated at 09:32, should have fired at 10:00 (28 min later), but nextRunAtMs was set to the following day instead. Even after disable/re-enable cycle and setting schedule to 10:15 (7 min in future), the job did not fire and nextRunAtMs again jumped to the next day.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions