Skip to content

[BUG] Contradictory 'session limit resets at X' times across one session; background subagents die terminally and reset projections silently roll forward #74006

Description

@jrobgood

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)

  1. ~06:08 PT: a background workflow subagent failed terminally with: "You've hit your session limit - resets 8am (America/Los_Angeles)".
  2. 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.
  3. 11:38 PT: another background subagent failed terminally with: "You've hit your session limit - resets 2:10pm (America/Los_Angeles)".
  4. 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).
  5. The user purchased usage credits, which unblocked everything immediately.

Why this is a bug (or at least three UX defects)

  1. 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.
  2. 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.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions