Model-unavailable error on startup causes permanent input freeze (not recovered by /model switch)

Resolved 💬 2 comments Opened Jun 13, 2026 by lovebuilt Closed Jun 16, 2026

Describe the bug

When Claude Code starts with a model that is temporarily unavailable (e.g. Fable 5 suspended by Anthropic), the session enters a permanent non-recoverable frozen state where no input is processed. The 'currently unavailable' banner appears in the pane and the session never accepts new input — even after using /model to switch to an available model.

Reproduction steps

  1. Launch Claude Code with --model fable (or any model that temporarily becomes unavailable)
  2. If the model is unavailable at startup, observe the 'Claude Fable 5 is currently unavailable' banner
  3. Type /model opus and observe CC acknowledging the switch ('Set model to Opus 4.8 and saved')
  4. Send any message — the session remains frozen with no response

Expected behavior

One of:

  • CC should detect the model-unavailable error on first LLM call attempt, surface an actionable error to the user, and prompt to switch models
  • OR the /model switch should recover the session by resetting the stuck internal request loop

Actual behavior

The session is permanently frozen after model-unavailable at startup. The /model switch changes the config but does not reset the frozen internal dispatch loop. Only a full kill + restart with a working model recovers the session.

Evidence

  • Fleet bot W0 launched with --model fable froze for ~18 minutes during Fable 5 suspension (2026-06-13T02:34Z)
  • /model opus was applied — CC acknowledged the switch — session remained frozen
  • inbox queue had 0 new messages during the freeze (no input was processed)
  • Only tmux kill-session + relaunch with --model opus resolved it
  • Workaround implemented: fleet watchdog now detects the 'currently unavailable' banner via tmux capture-pane and auto-kills + restarts affected sessions

Hypothesis

When CC starts with an unavailable model, the first LLM call attempt never resolves or rejects — the internal message dispatch loop enters an awaiting state that prevents any new input from being dispatched. The /model switch changes the model config but does not reset or unblock the stuck pending request.

Environment

  • Platform: Linux VPS (Ubuntu), channels-plugin mode
  • Subscription: Claude Max
  • Session ID: 96075fd9-1fd4-4286-b78a-df79dd4091a0
  • Claude Code version: current (as of 2026-06-13)

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗