CronCreate: `durable: true` accepted but not persisted to disk
Summary
Calling CronCreate with durable: true accepts the parameter, returns a job ID, and confirms the cron expression — but the job is not actually persisted to disk. The success message even reads "Session-only (not written to disk, dies when Claude exits)" despite durable: true being explicitly set, and ~/.claude/scheduled_tasks.json is never created.
This means recurring jobs that are intended to survive across session restarts (which is the documented purpose of durable: true) are silently degraded to in-memory only. Any session/daemon restart loses the cron silently.
Reproduction
In a Claude Code session, call:
{
"tool": "CronCreate",
"params": {
"cron": "5 5 * * 0",
"recurring": true,
"durable": true,
"prompt": "Weekly maintenance task..."
}
}
Observed return:
Scheduled recurring job <ID> (Every Sunday at 5:05 AM). Session-only (not written to disk, dies when Claude exits). Auto-expires after 7 days.
Then check the file:
$ ls ~/.claude/scheduled_tasks.json
ls: cannot access '/home/claude/.claude/scheduled_tasks.json': No such file or directory
Expected behavior
Either:
durable: trueshould actually write to~/.claude/scheduled_tasks.jsonso the job survives daemon restart (matching the tool's own documented behavior), OR- The success message should not say "Session-only" when
durable: truewas passed, and the documented behavior in the tool description should match what actually happens.
Actual behavior
durable: true is accepted but ignored. The job behaves identically to durable: false.
Why this matters
We hit this bug three times in one day (2026-04-30) while building a multi-host Claude topology. Every cross-session-task we tried to schedule (12-hour pulse loop, weekly maintenance windows, recurring health-check) silently degraded to in-session-only and died on the first daemon restart. We've migrated everything to systemd timers as a workaround, but CronCreate with durable: true remains unusable for its documented purpose.
Environment
- Claude Code CLI (multiple sessions across Linux/macOS hosts)
- Tool:
CronCreate(built-in, version per current Claude Code)
Workaround
Use systemd timers (Linux) or launchd plists (macOS) for any cron-like task that must survive daemon restarts. CronCreate is only safe for one-off reminders or short-lived recurring tasks confined to a single agent session.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗