Environment
Claude Code CLI on macOS (darwin 24.6.0), subscription auth (not Bedrock), model claude-fable-5, heavy use of background subagents via the Workflow/Agent tools.
What happened (timeline, one session, 2026-07-03, America/Los_Angeles)
- ~06:08 PT: a background workflow subagent failed terminally with: "You've hit your session limit - resets 8am (America/Los_Angeles)".
- 06:08-11:38 PT: the MAIN session loop kept working fine the whole time (deploys, tool calls), and two more multi-agent workflows ran to completion (~3.3M subagent tokens). Only individual subagents were dying.
- 11:38 PT: another background subagent failed terminally with: "You've hit your session limit - resets 2:10pm (America/Los_Angeles)".
- After 2:10pm PT the user was STILL blocked, now with errors projecting a reset around 7pm PT (2:10pm + 5h -- exactly one rolling-window length later, consistent with freshly-resumed consumption re-pinning the projection).
- The user purchased usage credits, which unblocked everything immediately.
Why this is a bug (or at least three UX defects)
- The reset time reads as a promise but is a snapshot. Each error message states an absolute clock time, but the 5-hour rolling window means any consumption after the snapshot silently moves the real reset later. A user who waits until the stated time and finds a LATER time in the next error reasonably concludes state corruption (this user's exact question: "Is there an auth token corruption?"). The message should either say the window is rolling ("earliest possible resume, moves with continued usage") or the client should show live window state.
- Background subagents share the pool invisibly and die terminally. The main loop and its background workflow agents draw from one subscription window, but there is no attribution in the error: the user cannot see that their own session's background fan-out is what consumed the window and keeps pushing the reset forward. Subagents that hit the limit die with a terminal failure rather than pausing/queueing until the window frees; after the user purchases credits, dead subagents do not resume -- the orchestrating session has to detect the death and respawn manually.
- Inconsistent enforcement within one session. For hours, the main loop succeeded while spawned subagents were rejected with session-limit errors. If the limit applies per pool, the main loop should have been throttled too; if subagents have a separate/earlier cutoff, the error message should say so. The mixed behavior amplifies the corruption impression.
Expected
- Rate-limit errors state that the window is rolling and the projection is a lower bound, or the CLI surfaces live usage-window state (e.g. in /usage).
- Subagent limit-failures are queued/retried when the window frees or credits are added, rather than requiring manual respawn.
- Reset projections that account for the session's own in-flight background consumption.
Related
#56570 (closed) reported the reset-not-triggering symptom; this report adds the rolling-window snapshot semantics + background-subagent attribution + terminal-subagent-death angle, reproduced across multiple errors in a single session.
Environment
Claude Code CLI on macOS (darwin 24.6.0), subscription auth (not Bedrock), model claude-fable-5, heavy use of background subagents via the Workflow/Agent tools.
What happened (timeline, one session, 2026-07-03, America/Los_Angeles)
Why this is a bug (or at least three UX defects)
Expected
Related
#56570 (closed) reported the reset-not-triggering symptom; this report adds the rolling-window snapshot semantics + background-subagent attribution + terminal-subagent-death angle, reproduced across multiple errors in a single session.