[BUG] Fable 5 on Max: "You've hit your monthly spend limit" despite Unlimited spend limit and meters at 5% session / 41% weekly
Status Open
Reported on v2.1.201
Maintainer reply None cached
Activity 4 comments · opened Jul 15, 2026
Environment
- Claude Code version: 2.1.201, running inside the Claude desktop app for macOS 1.21459.0 (f7518f) (build 2026-07-14)
- OS: macOS 26.1 (Darwin 25.1.0), Apple Silicon
- Model: Fable 5 (
claude-fable-5) - Plan: Claude Max (20x) (subscription auth, not API key), usage credits enabled
- Usage pattern: heavy multi-agent orchestration via the
ultracodekeyword / Workflow tool — sessions regularly fan out many parallel subagents
Describe the bug
Mid-session, requests fail with a "Usage limit reached" error chip whose expanded text reads:
You've hit your monthly spend limit · raise it at claude.ai/settings/usage
But the settings page it points at (Settings → Usage, "Last updated: just now") shows no limit anywhere near reached at that moment:
- Current session: 5% used (resets in 4 hr 42 min)
- Weekly, all models: 41% used (resets Mon 2:59 AM)
- Weekly, Fable: 41% used (resets Mon 2:59 AM)
- Usage credits: ON — A$237.69 spent, resets Aug 1, spend limit shows "Unlimited"
So the error claims a monthly spend limit was hit while the spend limit is set to Unlimited, and none of the session/weekly meters are close to exhausted.
Intermittent — retry succeeds
The error fired twice in one session ~15 minutes apart, and in both cases clicking try again / continue resumed the run successfully with no settings change and no wait. Whatever check rejects the request is transient — the account state (spend, meters) is the same seconds later when the retry succeeds.
Expected behavior
- With usage credits enabled and the spend limit set to Unlimited, requests should not be rejected for a "monthly spend limit".
- If some other constraint is actually being hit (burst/concurrency rate limit from parallel subagent traffic on
claude-fable-5, or a transient billing-check failure), the error should say that — the current message points the user to a settings page that contradicts it, which makes the state impossible to reason about.
Context that may be relevant
- The sessions triggering this run ultracode multi-agent workflows (Workflow tool fanning out parallel subagents), so the request pattern is bursty — many concurrent requests on
claude-fable-5. A rate/concurrency 429 or a flaky spend-limit lookup being rendered as "monthly spend limit" would fit the intermittent behaviour.
Evidence / diagnostics
- Screenshots (error chip with expanded message, and the Settings → Usage page captured at the same time) attached in a comment below.
- Note for triage: the error text is not persisted anywhere locally — it does not appear in the session transcripts under
~/.claude/projects/**.jsonlnor in~/Library/Logs/Claude/*.log, so there is nothing local to grep after the fact. It appears to be rendered directly from the API error response at request time. Persisting these errors to the session transcript/logs would make reports like this one much easier to evidence.
Possibly related
- #61012 (usage limit reached without active use, Pro plan)
- #74195 (usage meter jumping to 100%)
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
Adding a sanitized related signal because this is another case where Claude usage-credit controls and user-visible billing state appear to disagree.
Your report is about Claude Code rejecting requests for a monthly spend limit even while the usage page shows the spend limit as Unlimited and other meters are not exhausted. My direct case is a different usage-credit surface: manual prepaid / bulk Claude usage-credit purchases fail or fail to commit, while automatic usage-credit reloads on the same paid billing setup continue charging successfully.
The overlap is the important part: usage-credit purchase/commit state, auto-reload charging, spend-limit/account controls, entitlement/model access gates, and the visible credit ledger can diverge in ways that the customer cannot resolve with ordinary card troubleshooting or local restarts. When the UI says Unlimited but the API path says monthly spend limit, or when auto-topups work but manual prepaid purchase fails, this needs Billing Platform / payment-operations / entitlement reconciliation rather than generic support scripts.
Requested triage path: please route this class of issues to a human owner who can inspect usage-credit ledger state, model-access flags, spend-limit evaluation, auto-reload triggers, manual purchase/commit state, and the exact API error rendered at request time.
Privacy-sanitized public evidence hub for my related case:
https://coolak.github.io/anthropic-claude-billing-incident/
I am intentionally not posting card details, bank names, payment IDs, invoice IDs, support IDs, screenshots, raw logs, or private support-thread text here.
Additional public owner map / reconciliation matrix:
https://coolak.github.io/anthropic-claude-billing-incident/reconciliation-matrix.html
Same failure in a non-interactive / CI context, with the raw error payload — which I don't think any report here has yet.
Environment
anthropics/claude-code-actionin GitHub Actions (not interactive Claude Code)claude_code_oauth_tokenfrom a Max 20x seatclaude_args: --model fable --fallback-model opusAccount state at time of failure
| | |
|---|---|
| Fable | 100% used, resets Sunday |
| All models | 84% used, resets Sunday |
| Usage credits | On |
| Monthly spend limit | Unlimited |
| Current balance | $494.42, auto-reload on |
| Credits spent | $201.41 (resets Sep 1) |
Per Fable 5 on your plan — "When you reach your Fable 5 limit, you can keep using Fable 5 with usage credits" — credits should cover this. They don't.
Raw payload (SDK result object):
Note
rateLimitType: "seven_day_overage_included"alongside result text naming a monthly spend limit — while the account's monthly spend limit is Unlimited. The session dies on turn 1 at ~590 ms with zero cost, so nothing is billed and no work is attempted.Not transient here. ~10 runs across 7 hours, 100% failure, identical payload each time. (I see the original report recovered on retry — that isn't the case for us.)
--fallback-modeldoes not engage. With--fallback-model opusset, the session initialises asclaude-fable-5and terminates without attempting the fallback — telemetry reportsfallback model used: no. So the documented "switch to another model" remedy has to be applied manually; the configured fallback won't rescue it.The raw payload @no-flaks-given posted is the tell:
"rateLimitType": "seven_day_overage_included". That's a seven-day (rolling weekly) overage limiter, not a monthly spend limit — so the "You've hit your monthly spend limit → claude.ai/settings/usage" chip is pointing at the wrong control. That's why the settings page contradicts it: your monthly spend limit really is Unlimited; the thing rejecting the request is the seven-day overage bucket, which isn't the meter shown on that page.That also explains why it's intermittent for you specifically. Your ultracode/Workflow runs fan out many concurrent
claude-fable-5requests, so you brush the seven-day overage bucket in bursts at the fan-out boundary — one request gets rejected and, seconds later as the burst clears, the retry lands with no state change. @no-flaks-given's CI case is the saturated end of the same axis: Fable at 100% weekly, so the bucket stays exhausted and the retry can't clear it — even though usage credits + Unlimited spend limit should cover it per the Fable-5-on-your-plan doc.So there look to be two separable defects in this one thread:
seven_day_overage_includedrate-limit is shown with monthly-spend-limit copy and a link to a page that reads Unlimited, which makes the state impossible to reason about. Rendering the actualrateLimitType(and pointing at the meter that's actually saturated) would clear the "UI contradicts the error" problem for all three reports here.seven_day_overage_includedrejection while balance/credits remain is the substantive bug behind the 100%-weekly case, and that one needs a Billing Platform / entitlement look rather than a copy fix.Cheap confirmation for anyone else landing here: capture the SDK result object (as @no-flaks-given did) and check
rate_limit_info.rateLimitType. If it'sseven_day_overage_included, the "monthly spend limit" chip is a misnomer and your monthly limit isn't the blocker.