CronCreate durable:true silently dropped — returns "Session-only" and never writes scheduled_tasks.json
Summary
The CronCreate tool accepts a durable: true parameter but does not honor it. Every call — regardless of the flag — returns the session-only branch and no .claude/scheduled_tasks.json is written. Scheduled tasks die when the session ends.
Environment
- Claude Code CLI
- Model:
claude-opus-4-7 - macOS Darwin 21.6.0
- Observed: 2026-04-18
Expected
Per the tool schema:
durable: true = persist to .claude/scheduled_tasks.json and survive restarts. false (default) = in-memory only, dies when this Claude session ends.
Calling CronCreate with durable: true should:
- Write the job to
.claude/scheduled_tasks.json - Return a success message that does not say "Session-only"
- Survive
Claude exit → relaunch
Actual
Reproducer:
CronCreate(
cron="7 3 31 12 *",
prompt="DURABLE_FLAG_TEST — safe to delete",
durable=true,
recurring=false
)
Returns:
Scheduled one-shot task 875bb1c1 (7 3 31 12 *).
Session-only (not written to disk, dies when Claude exits).
It will fire once then auto-delete.
After the call:
$ ls .claude/scheduled_tasks.json
ls: scheduled_tasks.json: No such file or directory
Only the stale lock file exists:
$ cat .claude/scheduled_tasks.lock
{"sessionId":"ebbe5346-69fc-448c-825c-171144f58c15","pid":670,"acquiredAt":1776386918582}
Impact
Users following the "always-on EA agent" pattern (persistent tmux + scheduled automations) cannot rely on CronCreate for anything surviving session restart. Seven automations registered with durable: true the day prior (2026-04-17) were silently session-only and stopped firing overnight.
Workaround
Bypass CronCreate entirely — use macOS crontab + a dispatcher script that tmux send-keys the prompt into a long-lived Claude REPL session. Works but requires infrastructure the durable flag should have provided natively.
Additional notes
- The
CronListtool also returns no record of durable jobs, even in the session that created them. - If the durable path is gated on some setting (e.g.
enableDurableScheduling), that gate is undocumented in the tool schema — the schema says the flag alone controls behavior. - Request: either fix durable persistence, or update the tool schema to make clear the flag is a no-op in the current build.
This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗