CronCreate durable:true silently dropped — returns "Session-only" and never writes scheduled_tasks.json

Open 💬 7 comments Opened Apr 19, 2026 by sanikaram

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:

  1. Write the job to .claude/scheduled_tasks.json
  2. Return a success message that does not say "Session-only"
  3. 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 CronList tool 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.

View original on GitHub ↗

This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗