[DOCS] CronCreate durable: true accepted but silently no-op — session-only crons on macOS
Documentation Type
Other
Documentation Location
No response
Section/Topic
CronCreate tool — durable: true parameter
Current Documentation
The CronCreate tool description / schema documents durable: true as a persisting flag. The tool's own runtime confirmation text references ~/.claude/scheduled_tasks.json as the on-disk store.
What's Wrong or Missing?
CronCreate accepts durable: true as documented, but on macOS the resulting cron is session-only — it dies when the Claude Code REPL exits. The flag is silently a no-op: nothing is written to ~/.claude/scheduled_tasks.json (the file does not exist), and the tool's own confirmation text says Session-only (not written to disk, dies when Claude exits) even when durable: true was passed.
Reproduction
From Claude Code on macOS 26.2 (Apple Silicon), invoke:
CronCreate({
schedule: "...",
command: "...",
durable: true
})
Tool returns success.
Observe:
The returned message text says Session-only (not written to disk, dies when Claude exits).
ls ~/.claude/scheduled_tasks.json → no such file or directory.
Exiting the Claude session terminates the scheduled task.
Expected behavior
When durable: true is passed, the scheduled task should persist across session exits. Per the tool's own documentation it should write to ~/.claude/scheduled_tasks.json (or an equivalent on-disk store) and resume from disk on next Claude Code launch.
Impact
I run plugins (airgap-crucible) that dispatch long-running async work and rely on a +60–90 minute harvest cron to retrieve results. With durable: true being a silent no-op, every harvest is at risk of becoming a "ghosted run" if the dispatching Claude session ends — which the plugin's own queue discipline explicitly forbids.
Workaround in place
I shipped a launchd-based watchdog (~/.claude/scripts/harvest-cron-watchdog.sh + ~/Library/LaunchAgents/com.pai.harvest-cron-watchdog.plist) that polls a JSON watch-list every 60s. That is what durable: true should do internally. Live-fire confirmed against a real harvest at 2026-05-15T09:48+02:00.
Environment
Claude Code: latest (subscription)
macOS: 26.2 (build 25C56), Apple Silicon
mcp__scheduled-tasks__* (Anthropic-hosted Schedule/routines) is not viable as a fallback — refuses unsupervised invocation by design (billing-safety gate).
Suggested Improvement
Either:
Honor durable: true by persisting the scheduled task to ~/.claude/scheduled_tasks.json (or equivalent) and resuming from disk on next launch — the behavior the tool already advertises in its confirmation text.
Update the documentation and the tool's confirmation text to clearly state that durability is unsupported on macOS until $LATER, and steer users to alternatives (atrun / launchd / external schedulers).
If the underlying intent is "durable scheduling will only be available via the cloud-routines MCP" — please say so explicitly in the tool description so users don't expect a working local-disk path.
Impact
High - Prevents users from using a feature
Additional Context
Cross-referenced from a private PAI infrastructure tracking issue with full evidence and follow-ups.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗