CronCreate: `durable: true` silently ignored for one-shot tasks

Resolved 💬 3 comments Opened May 11, 2026 by ntemian Closed May 14, 2026

Summary

CronCreate accepts a durable: true parameter per its schema, documented as "persist to .claude/scheduled_tasks.json and survive restarts." In practice the flag appears to be ignored for one-shot tasks — the response confirms scheduling but states the task is session-only and will die when Claude exits.

This is a silent failure: the assistant reports a successful schedule, and the user assumes durability. Any "remind me in N days/weeks/months" workflow built on CronCreate is broken once N exceeds session lifetime, with no error surfaced.

Reproducer

CronCreate(
  cron="7 9 11 6 *",
  prompt="...",
  recurring=false,
  durable=true
)

Returns:

Scheduled one-shot task 2cde82ff (7 9 11 6 *). Session-only (not written to disk, dies when Claude exits). It will fire once then auto-delete.

.claude/scheduled_tasks.json is not created/updated.

Expected

Either:

  • durable: true actually persists the task to .claude/scheduled_tasks.json and the response reflects this, OR
  • The tool rejects/warns when durable: true is combined with recurring: false (if one-shots are intentionally non-durable, say so in the description and surface an error rather than silently downgrading).

Impact

Reproducible on Claude Code Opus 4.7 (1M context), 2026-05-11. The user-visible behaviour is a silent contract violation between tool schema and runtime, which is the worst class of bug for an agent to hand to a user — the agent reports success and moves on.

Workaround

For durable reminders beyond session lifetime, use a calendar event (Google Calendar via MCP) or a launchd one-shot. Avoid relying on CronCreate for cross-session scheduling.

Environment

  • Claude Code with Opus 4.7 (1M context)
  • macOS Darwin 23.4.0
  • Encountered while scheduling a recurring /cleaning audit one month out

View original on GitHub ↗

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