[BUG] Claude Code Remote: fired `send_later` one-shot Routines keep a live-looking `next_run_at` +24h and can fire again
Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 15, 2026
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Every send_later one-shot, after firing, is left in this state (from list_triggers):
ended_reason: "run_once_fired"(correct — the Routine should be permanently disabled)next_run_at: <fire time + 24h>(wrong — a disabled one-shot should have no next run)updated_at= the fire time, i.e. the +24h stamp is written as part of firing
Example shape (values generic):
{
"id": "trig_…",
"name": "send_later 2026-08-15T13:08Z #…",
"run_once_at": "2026-08-15T13:08:00Z",
"last_fired_at": "2026-08-15T13:14:38Z",
"ended_reason": "run_once_fired",
"next_run_at": "2026-08-16T13:14:38Z"
}
This happens on every firing, so a session that arms a short check-in chain (a PR watch re-arming a ~4-minute one-shot each turn) accumulates a row per wake-up, each showing a fire time tomorrow.
What Should Happen?
Firing a run_once_at Routine should clear or null next_run_at (or the row should be omitted from default list_triggers output), and a Routine with ended_reason: "run_once_fired" must never fire again.
Error Messages/Logs
Steps to Reproduce
- In a Claude Code Remote session, call
send_laterwithdelay_minutes: 5. - Wait for it to fire.
- Call
list_triggers: the fired Routine showsended_reason: "run_once_fired"andnext_run_atexactly 24 h after the fire time.
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Version 1.260813.10 com.anthropic.claude
Platform
Anthropic API
Operating System
Other
Terminal/Shell
Other
Additional Information
- One-shots regularly fire several minutes late (a 13:08 fire time delivered at 13:14).
- A
send_laterfor 5 minutes was once accepted but returned a fire time ~100 minutes out.