Welcome banner shows another model's name ("Opus 4.7") for model id claude-fable-5[1m]; statusline JSON reports the correct id

Open 💬 0 comments Opened Jun 10, 2026 by bq011

Environment

  • Claude Code version: 2.1.158 (Windows 10, native installer)
  • ~/.claude/settings.json: "model": "claude-fable-5[1m]", "effortLevel": "xhigh"
  • Plan: Claude Max

Bug

With claude-fable-5[1m] configured, the welcome banner renders a different model's display name:

 ▐▛███▜▌   Claude Code v2.1.158
▝▜█████▛▘  Opus 4.7 with xhigh effort · Claude Max

The session itself runs on the configured model — the statusline stdin JSON reports the raw id correctly:

"model": { "id": "claude-fable-5[1m]", "display_name": "claude-fable-5[1m]" },
"context_window": { "context_window_size": 1000000 }

So only the banner's id→display-name mapping is wrong: for an id it doesn't recognize, it falls back to another real model's label ("Opus 4.7") instead of showing the raw id.

Why it matters

A banner showing a different real model's name is indistinguishable from a silent model downgrade. Users who pin a model (e.g. to detect quota-related downgrades) can't trust the banner — we had to capture the statusline JSON to verify nothing had actually drifted.

Expected

If the display-name mapping doesn't know the model id, fall back to the raw id (as the statusline JSON already does) — never to another model's alias.

Steps to reproduce

  1. Set "model": "claude-fable-5[1m]" (presumably any id newer than the CLI's display-name table) in ~/.claude/settings.json
  2. Start claude
  3. Banner shows "Opus 4.7" instead of the configured model id

View original on GitHub ↗