[Bug] Anthropic API fallback from claude-fable-5 to claude-opus-5 silently discards prompt cache

Status Open
Reported on v2.1.220
Maintainer reply None cached
Activity 0 comments · opened Aug 2, 2026

Bug Description

# Bug report: claude-fable-5 silently falls back to claude-opus-5 (13 occurrences, one-way, never recovers) ## Environment | Item | Value | |---|---| | Claude Code | 2.1.220 | | OS | Windows 11 Pro, Build 26200 (x64) | | Node | v24.14.1 | | settings.json model | claude-fable-5[1m] | | effortLevel | high | | Concurrent sessions | 8 | ## Summary With claude-fable-5[1m] pinned in settings.json, sessions are repeatedly switched to claude-opus-5 by a server-emitted fallback event. Across 13 occurrences (2026-07-31 10:57:56 to 2026-08-02 07:48:28) the switch is always in the same direction - there is not a single fallback back to claude-fable-5, and no automatic recovery. The pinned model only returns when I manually re-select it via /model. The transcripts contain the event itself but no reason field: ``json {"type":"fallback","from":{"model":"claude-fable-5"},"to":{"model":"claude-opus-5"}} ` ## Why this is severe rather than cosmetic Each fallback invalidates the prompt cache. The transcripts record this explicitly next to the fallback events: `json "diagnostics":{"cache_miss_reason":{"type":"model_changed","cache_missed_input_tokens":[REDACTED]}} ` Observed values in this data set: **190,979, 239,142, 318,538, 352,623, 387,782, 403,938, 495,480, 541,124, 620,688, 621,442** cache-missed input tokens. The session then stalls while the whole context is re-read. From the user side this is indistinguishable from a hang - which is exactly how it was first reported ("Fable collapses after seconds"). ## Evidence: all 13 occurrences | # | Timestamp (local, CEST) | Session | From | To | requestId | Tool call in flight | Cache tokens lost | |---|---|---|---|---|---|---|---| | 1 | 2026-07-31 10:57:56 | 440ce71a | claude-fable-5 | claude-opus-5 | req_011Cda1tyMHmfg7FCrAwozjL | Grep | 318,538 | | 2 | 2026-07-31 13:03:26 | 440ce71a | claude-fable-5 | claude-opus-5 | req_011CdaBSqyDxevMtFhKNHPZz | PowerShell | 495,480 | | 3 | 2026-08-01 00:36:56 | faa2d9b2 | claude-fable-5 | claude-opus-5 | req_011Cdb6M2GMCExGcdAoH5kfv | Read | 239,142 | | 4 | 2026-08-01 07:56:31 | 6bc51f13 | claude-fable-5 | claude-opus-5 | req_011CdbfrX6baHi69Dv6eA9Yk | Read | (not recorded) | | 5 | 2026-08-01 09:39:07 | 6bc51f13 | claude-fable-5 | claude-opus-5 | req_011Cdbog8P1TAhnXa5Uu4Az5 | (none recorded) | 352,623 | | 6 | 2026-08-01 09:43:27 | 69a5df51 | claude-fable-5 | claude-opus-5 | req_011Cdbp1fz5651xgY5L9BU9y | PowerShell | (not recorded) | | 7 | 2026-08-01 09:55:18 | 69a5df51 | claude-fable-5 | claude-opus-5 | req_011CdbpueaRxkfqMaKU5ECzH | (none recorded) | 190,979 | | 8 | 2026-08-01 14:47:08 | 6bc51f13 | claude-fable-5 | claude-opus-5 | req_011CdcD9xgK2CB9zwEwuXk5u | (none recorded) | 541,124 | | 9 | 2026-08-01 18:13:30 | 6bc51f13 | claude-fable-5 | claude-opus-5 | req_011CdcUrMhmDthKb9faGX2gQ | (none recorded) | 620,688 | | 10 | 2026-08-01 18:15:14 | 6bc51f13 | claude-fable-5 | claude-opus-5 | req_011CdcV3F6hfz6iDGtwfH8hv | (none recorded) | 621,442 | | 11 | 2026-08-01 19:19:21 | b1e59816 | claude-fable-5 | claude-opus-5 | req_011CdcZkC12jRmuHvUn2imqD | Read | 387,782 | | 12 | 2026-08-01 19:48:55 | b1e59816 | claude-fable-5 | claude-opus-5 | req_011CdccBaxLCY8yXNXhntQDw | PowerShell | 403,938 | | 13 | 2026-08-02 07:48:28 | 6bc51f13 | claude-fable-5 | claude-opus-5 | req_011CddZ3JFvTUFCsHR2hxPaz | (none recorded) | (not recorded) | Reverse fallbacks (claude-opus-5 -> claude-fable-5) in the same data set: **0**. Model mix per affected session (assistant messages): - 440ce71a: claude-fable-5=559, claude-opus-4-8=202, claude-opus-5=290 - 69a5df51: claude-fable-5=472, claude-opus-5=336 - 6bc51f13: <synthetic>=3, claude-fable-5=111, claude-opus-5=1035 - b1e59816: <synthetic>=1, claude-fable-5=6, claude-opus-4-8=621, claude-opus-5=812 - faa2d9b2: claude-fable-5=166, claude-opus-5=548 ## What I ruled out locally - **Not a client crash.** All 8 claude.exe processes ran continuously for 9.5-36.6 hours with zero restarts. Zero Windows Application error events (1000/1001/1002), zero WER reports for claude.exe/node.exe, zero Resource-Exhaustion events in 48h. - **Not a stream abort.** Only 5 API Error: Connection closed mid-response messages exist across all sessions in 40 hours - far too few to explain the observed behaviour, and not correlated with the fallbacks. - **Not content-triggered, as far as the transcript shows.** Every fallback occurs in the middle of an ordinary tool call - Read of a scratchpad note, PowerShell running nvidia-smi, Read of a Python config file, Grep`. None coincides…
Note: Content was truncated.

View original on GitHub ↗