C:/Program Files/Git/model fails to switch to Fable 5 with "no usage credits" despite weekly Fable quota showing 0% used
Description
Running /model in Claude Code CLI and attempting to switch to Fable 5 fails with the message:
"You don't have usage credits yet. Set up usage credits on claude.ai to use this model."
However, /usage in the same session shows a "Current week (Fable)" quota bar at 0% used (i.e., the subscription includes a weekly Fable allotment that has not been consumed). This suggests the model is entitled to be used via subscription quota, not a separate pay-as-you-go usage-credits pool.
Additionally, Fable 5 is usable from claude.ai (web) and the Claude desktop app under the same account, with no usage-credits prompt.
Steps to reproduce
- Have an active Claude subscription with a weekly Fable 5 quota (confirm via
/usage→ "Current week (Fable)" shows 0% used, i.e. available). - In Claude Code CLI, run
/modeland select Fable 5. - Observe the CLI blocks the switch, claiming no usage credits, and links to claude.ai/settings/usage to purchase credits.
- Compare: the same account can use Fable 5 in claude.ai web / desktop app without issue.
Expected behavior
Claude Code CLI should recognize and use the subscription's included weekly Fable 5 quota (as shown in /usage), consistent with web/desktop behavior, rather than requiring a separately purchased usage-credits balance.
Actual behavior
CLI refuses to switch to Fable 5, citing missing usage credits, even though the account's weekly Fable quota is unused (0%).
Environment
- Claude Code CLI
- OS: Windows 11
- Model attempting to switch to: Fable 5 (from Sonnet 5)
3 Comments
Adding a related billing/entitlement-routing signal from a separate unresolved Claude billing case, kept public-safe.
This issue is a clean example of the same reconciliation boundary: the account-visible quota says Fable 5 is included and unused, web/desktop can use Fable 5, but Claude Code routes the CLI model switch to a separate usage-credit purchase path.
That matters for the related billing case because Anthropic's manual prepaid / discounted usage-credit purchase path fails or fails at confirmation, while automatic reload billing can still charge from saved payment methods. If Claude Code incorrectly asks a paid subscriber to buy usage credits for included Fable quota, the customer may be pushed into a purchase path that is itself failing or unreconciled.
The shared failure class is not "user needs to buy credits." It is a mismatch between plan entitlement, model-access gating, usage-credit pool state, payment-method state, support-visible account state, and billing-ledger state.
Actionable owner request: please have Anthropic correlate
/usageFable quota, web/desktop model entitlement, Claude Code model picker/session routing, separate usage-credit pool state, credit-purchase prompts, payment events, and support routing before sending paid users to generic credit-purchase or billing-support loops.Sanitized public incident packet for the related cluster:
https://coolak.github.io/anthropic-claude-billing-incident/
Reconciliation matrix / owner map:
https://coolak.github.io/anthropic-claude-billing-incident/reconciliation-matrix.html
I am intentionally not posting card details, bank names, private payment IDs, exact balances from someone else's account, raw logs, screenshots, support-thread bodies, token values, or private identifiers here.
Same symptom here on Max, with a couple of data points I haven't seen posted yet — in particular, one that rules out the
[1m]alias explanation proposed in #79337.Env: Claude Code 2.1.220, Linux, native install,
claude_max/default_claude_max_5x, org admin (personal single-seat org).The gate is interactive-only
Headless works. Interactive does not, on the same account, same binary, same minute.
Running
claude -p --model claude-fable-5 '...'succeeds. The client-writtenmodelfield on every assistant message in the resulting transcripts isclaude-fable-5, and there is nomodel_consent_fallbackevent anywhere in them. Seven consecutive runs, all clean. So the entitlement genuinely resolves and the request is served on plan.In the TUI, the session starts on Fable, and the fallback fires when the first message is sent:
originalModelhas no[1m]suffix#79337 attributes this to the entitlement check running against the literal
claude-fable-5[1m]instead of resolving it toclaude-fable-5plus a separate context flag. That can't be the whole story: above,originalModelis the cleanclaude-fable-5and it still routes to the credits path.Worth noting the picker only ever offers the
[1m]variant —additionalModelOptionsCachein~/.claude.jsoncontains exactly one Fable entry,{"value": "claude-fable-5[1m]", "label": "Fable"}— so users who reach this via/modelwill naturally report the suffixed string. Setting"model": "claude-fable-5"insettings.jsonto sidestep that reproduces the failure anyway.Quota is not the trigger
From the same session's utilization payload:
session(5h): 0%weekly_all: 21%weekly_scoped,scope.model.display_name = "Fable": 5%,is_active: false,severity: normalThat third entry is the plan's own Fable allowance, and it's nearly untouched. Meanwhile:
spend.enabled: false,spend.can_purchase_credits: false,spend.can_toggle: falseextra_usage.is_enabled: false,credits_ever_enabled: falsecachedExtraUsageDisabledReason: "org_level_disabled"Which is consistent with the consent gate keying off extra-usage/credits state rather than the plan's Fable allowance. Per the Help Center, Max includes Fable up to 50% of weekly limits at no extra cost, and the
weekly_scopedcounter above shows the backend already accounts for it that way — it's the interactive client that disagrees.No client-side escape
For anyone landing here looking for a workaround: there isn't one for interactive sessions. There's no setting or env var that suppresses the consent prompt (
CLAUDE_CODE_NO_MODEL_FALLBACKdoes the opposite — it errors instead of substituting). Headless-pand the web/desktop apps are the only paths that currently work.The awkward part of the fallback is that it's silent about the downgrade's cost: a user who pins Fable ends up on Sonnet 5, which may be below the model they'd have gotten by leaving the default alone. Falling back to the configured default rather than a fixed tier, or surfacing the plan's Fable allowance in the prompt instead of a credits pitch, would both be improvements independent of the entitlement fix.
Still reproduces on 2.1.246 (macOS, Team plan with a Premium seat — so Fable 5 should be included at 50% of weekly limits, no usage credits required).
Symptom: selecting Fable 5 via
/modelalways shows:Evidence the entitlement itself is fine — only the picker's check is wrong:
claude -p 'Reply ok.' --model claude-fable-5 --output-format jsonreturns
is_error: falseandmodelUsageshowsclaude-fable-5actually served the request."model": "claude-fable-5"in~/.claude/settings.jsonalso works — interactive sessions launch and run on Fable 5.So the model is served and billed correctly through every path except the
/modelswitcher, which appears to check only the prepaid usage-credit pool and never the subscription-included Fable 5 quota.Side effect worth flagging: the dialog's "Request usage credits from your admin" flow is actively misleading on Premium seats — in our org it resulted in the admin performing a seat upgrade ("more Claude usage"), which of course changed nothing.
Ruled out locally: no
managed-settings.json, noANTHROPIC_API_KEYset, fresh sessions after restart,claude update(already current).