Sonnet 5 selected and displayed, but every response is silently served by claude-fable-5, consuming capped Fable allowance
<img width="1277" height="672" alt="Image" src="https://github.com/user-attachments/assets/f92c5cf2-f285-4b8d-a6eb-30e9c9199f50" />
Description
Since 07-02-26, every assistant response in my Claude Code sessions has been served by claude-fable-5 despite the model being explicitly set to Sonnet 5. The UI reports Sonnet 5 everywhere: the status line shows [Sonnet 5], /model confirms "Set model to Sonnet 5", and the injected system prompt tells the model it is claude-sonnet-5. But the server-side "model" field stamped on every assistant message in the session transcript JSONL says claude-fable-5.
Steps to reproduce
- Set model to Sonnet 5 via /model (status line confirms [Sonnet 5])
- Run any turns
- Inspect the session transcript in ~/.claude/projects/<project>/<session-id>.jsonl
- Every "type":"assistant" record shows "model":"claude-fable-5"
Evidence (redacted transcript excerpts)
First/middle/last assistant records from each session's local transcript JSONL. Content redacted; timestamps, session IDs, server-issued message IDs, and model stamps verbatim. Full transcripts available privately on request.
Session A, model set to Sonnet 5, 546/546 turns served by fable-5:
{"timestamp": "2026-07-03T16:59:24.675Z", "sessionId": "2c9bffa8-a823-456e-be0c-fb348c21ecbf", "type": "assistant", "message": {"model": "claude-fable-5", "id": "msg_01Dm3iCPYaS6wrVRjNjt8qua", "content": "<REDACTED>"}}
{"timestamp": "2026-07-03T23:05:44.842Z", "sessionId": "2c9bffa8-a823-456e-be0c-fb348c21ecbf", "type": "assistant", "message": {"model": "claude-fable-5", "id": "msg_01XBZqRwJ6E39KFjxhaW1eq5", "content": "<REDACTED>"}}
{"timestamp": "2026-07-04T05:54:10.982Z", "sessionId": "2c9bffa8-a823-456e-be0c-fb348c21ecbf", "type": "assistant", "message": {"model": "claude-fable-5", "id": "msg_017eBtwTDDapySXMhJYKU5j3", "content": "<REDACTED>"}}
Session B, Sonnet 5 re-selected via /model mid-session, 67/67 turns served by fable-5:
{"timestamp": "2026-07-04T06:52:13.680Z", "sessionId": "e803a47f-4b18-4ac7-bc82-d6206367d15c", "type": "assistant", "message": {"model": "claude-fable-5", "id": "msg_01JytSDLeHdQrkWN66VWjoUV", "content": "<REDACTED>"}}
{"timestamp": "2026-07-04T17:45:57.539Z", "sessionId": "e803a47f-4b18-4ac7-bc82-d6206367d15c", "type": "assistant", "message": {"model": "claude-fable-5", "id": "msg_01TMF4HdGHCLVuysybXLhGka", "content": "<REDACTED>"}}
Control, session ending 2026-07-02 before the Fable 5 redeployment, correctly served as configured:
{"timestamp": "2026-06-29T16:37:27.730Z", "sessionId": "2c419fdd-39af-4f0e-8845-697d5461a75d", "type": "assistant", "message": {"model": "claude-opus-4-8", "id": "msg_01BFc5kQYiRgRPZWf8vaiPig", "content": "<REDACTED>"}}
{"timestamp": "2026-07-02T20:47:13.260Z", "sessionId": "2c419fdd-39af-4f0e-8845-697d5461a75d", "type": "assistant", "message": {"model": "claude-opus-4-8", "id": "msg_012hVSFmiburdLnFudZ3rfCG", "content": "<REDACTED>"}}
Expected behavior
Selecting Sonnet 5 serves claude-sonnet-5. The published model-switching policy (help center article 15363606) covers exactly one automatic switch: Fable 5 falling back to Opus 4.8 on safety blocks, with a visible notice and response labeling. Silent upward routing from Sonnet to Fable, with the UI continuing to claim Sonnet, is documented nowhere.
Impact
Fable 5 access on Max plan is a limited allowance through 6/7/26. I had explicitly planned how to spend my remaining Fable 5 capacity. Instead, lightweight HTML/deck iteration that I deliberately routed to Sonnet 5 was silently served by Fable, consuming that allowance roughly 3x faster than the model I chose. The plan I built around my remaining Fable access is now destroyed. Beyond my case, this means Max users cannot trust that the displayed model is the billing/limits reality.
Environment
- Claude Code CLI 2.1.201, macOS (Darwin 25.5.0), iTerm2
- Max 5x plan
- settings.json model was opus[1m] for part of the window; explicitly re-set to Sonnet 5 via /model with no change in serving