[BUG] Classifier fallback (model_refusal_fallback / apiRefusalCategory="cyber") silently swaps model mid-session; substituted usage billed as regular subscription usage
Related to #73597 (closed as fixed for subagent model substitution — this is a neighboring path to the same accounting outcome, happening in the main session, not a subagent).
Summary
Between Jul 18 and Aug 26, 2026, across 16 Claude Code sessions I recorded 38 model_refusal_fallback events, all with apiRefusalCategory="cyber":
- 31× Fable 5 → Opus 4.8
- 3× Fable 5 → Opus 5
- 4× Opus 5 → Opus 4.8
The model was manually restored afterward in only 22 of the 38 cases — in the remaining 16, the session continued and finished its work on the substituted model without me noticing.
Impact
Turns executed after these substitutions accumulated 727,873,138 tokens (2,066 turns; 672,652,030 of that is cache-read usage), all billed as ordinary subscription usage.
Anthropic's own cookbook, "Classifier fallback and billing for Claude Fable 5" (published Jun 9, 2026), states that in most fallback cases customers should not bear these costs.
Why this is a defect, not a consequence of user choice
- There is no notification at the moment of the fallback substitution.
- Substituted turns are not marked/flagged anywhere in the usage reports — they look identical to ordinary turns.
- The only way to detect this is to reconstruct it after the fact from local session logs (
model_refusal_fallback/apiRefusalCategoryfields).
A user can neither notice this in real time, nor prevent it, nor choose to avoid it — which is what distinguishes it from an ordinary fallback the user opted into.
What's missing
- An explicit, visible notification at the moment of the fallback.
- Marking of such turns in usage/billing reports.
- A mechanism to correct the accounting for turns already billed this way.
Support channel status
Also raised via the in-app support ticket (Intercom) on Aug 27 — a live agent said they'd escalate to a human and follow up. As of this filing (Sep 16), no human response has been received there, and my Sep 3 comment on #73597 asking whether to reopen it or file a separate issue also went unanswered — hence this new issue.
Full list of affected Request IDs is available and was already shared via the support ticket rather than posted here.
Environment
Claude Code, Claude.ai OAuth subscription (Max plan).