Session (5-hour) rate limit surfaces as 'You've hit your monthly spend limit' — wrong error message
Environment
- Claude Code v2.1.204, Windows 11 Pro (10.0.26200), PowerShell/Git Bash
- Model: claude-fable-5 (main loop) orchestrating background subagents (Agent tool / SendMessage resume) on claude-opus-4-8
What happened
A background subagent terminated early and the task-notification carried:
Agent terminated early due to an API error: You've hit your monthly spend limit · raise it at claude.ai/settings/usage
The account had not hit its monthly spend limit. The actual condition was the 5-hour session usage window, which reset on its own at 11:10 — at which point work resumed normally with no settings change and no spend-limit increase.
Why this matters
The two conditions have opposite remediations, and the message actively sends users to the wrong one:
- Session window: wait; it resets at a known time. No action needed.
- Monthly spend limit: go raise the limit / pay more.
A user seeing this message mid-workflow (in our case, mid multi-agent implementation run — the subagent died at task start) reasonably goes to claude.ai/settings/usage prepared to raise a spend limit that was never exhausted. The correct message would be shaped like:
"You've hit your session limit — usage resumes at HH:MM am/pm."
ideally with the actual reset timestamp, which the limiter clearly knows.
Expected
Rate-limit classification in the error surface: session-window exhaustion should produce a session-limit message with the reset time, distinct from the monthly spend-limit message. Subagent early-termination notifications (Agent tool background tasks) should carry the corrected message too, since that's where it surfaced here.
Repro sketch
- Run long multi-agent work (background subagents via the Agent tool) until the 5-hour session window is exhausted
- Observe the subagent's termination notification reports the monthly spend-limit message
- Wait for the session window reset — usage resumes without touching any spend setting, demonstrating the misclassification
Reported on behalf of the account owner, who diagnosed the mismatch by observing the 11:10 reset.
3 Comments
Adding related Billing Platform / cost-control context because this report shows the product surfacing a monthly-spend-limit remediation when the observed condition was a different limiter.
That distinction matters for paid users: if the error says "raise the spend limit" or otherwise points users toward credits/payment when the actual limiter is session-window, auxiliary-model capacity, entitlement routing, or another internal gate, users can spend money or change billing settings without fixing the underlying block.
Related public Anthropic-owned reports that point at the same class of wrong-pool / wrong-gate / wrong-remediation behavior:
Sanitized public evidence hub for the broader manual-credit, extra-usage, auto-topup, entitlement-routing, and support-routing pattern: https://coolak.github.io/anthropic-claude-billing-incident/
Request: please make limit errors name the exact rejecting pool/gate and route these reports to a human Billing Platform / cost-control owner. Wrong remediation text is not cosmetic when it can induce users to pay for credits or raise spend settings that do not resolve the actual limiter.
Still reproducible on 2026-08-27 — Claude Desktop for Windows (bundled Claude Code 2.1.246, entrypoint
claude-desktop), Windows 11 Pro, claude.ai subscription.Hit the five-hour session limit; the desktop app showed:
The 429 payload recorded in the session transcript shows it was the five-hour limit, with overage disabled at org level:
The error text is self-contradictory — names the monthly spend limit, then gives the five-hour reset time:
resetsAt: 1787865000is exactly that 12:10am — the five-hour window reset, ~15 minutes after the failure. Local usage telemetry at the same minute: five-hour utilization 100%, seven-day 29%, extra usage spent this month 0 — so raising the monthly spend limit is exactly the wrong advice. The string appears server-generated (isApiErrorMessage: true); the desktop banner mirrors it and drops the only correct part (the session reset time).Request IDs:
req_011CeTvAeuxypf5JoUTGzLhW,req_011CeTvGjDM38Y8Zh4Xfea6c.when a 5h session wall is labeled “monthly spend limit,” people buy the wrong fix.
name the limiter in the error and in /status — generic copy costs real money.
notes: https://github.com/webby-box/runagentops/issues/1