[BUG] Remote-control spawned session ignores UI-selected model — picker shows Fable 5, first request serves claude-opus-4-8

Open 💬 1 comment Opened Jul 4, 2026 by jonathanmwatson

Environment

  • Claude Code 2.1.200, macOS 26.5.1 (Apple Silicon Mac Studio, headless)
  • Sessions hosted by claude remote-control --spawn worktree --no-create-session-in-dir --name <name> running as a launchd daemon (KeepAlive, RunAtLoad)
  • Driven from the remote-control web UI (desktop browser and mobile)
  • No model key in ~/.claude/settings.json, project .claude/settings.json, or .claude/settings.local.json at time of repro; no ANTHROPIC_MODEL env; daemon plist passes no --model

Bug

The model selector in the remote-control UI shows Fable 5 selected, but the spawned session's requests are served by claude-opus-4-8[1m] from the first turn. The picker selection is never applied to the session.

Repro

  1. Run claude remote-control --spawn worktree (launchd daemon in my case).
  2. In the remote-control UI, confirm the model picker shows Fable 5.
  3. Start a new session, send any message ("what model are you?").
  4. Reply is served by Opus 4.8.

Evidence

Session transcript is 8 lines — one user turn, one assistant turn. Checking the serving model recorded in the transcript (.message.model from the API response):

$ jq -r 'select(.type=="assistant") | [.timestamp, .message.model] | @tsv' <session>.jsonl
2026-07-04T00:16:48.037Z    claude-opus-4-8
  • No model_refusal_fallback system event, no safety-classifier notice — this is not the known Fable→Opus safety fallback (#67246 / #66657). The request itself went out on Opus.
  • Pattern is consistent across ~20 recent daemon-spawned sessions: first assistant messages serve claude-opus-4-8, flipping to claude-fable-5 only after an in-session /model re-pick. Several sessions ran 100% Opus because no re-pick happened.
  • In-session /model → Fable works and sticks (absent a classifier event), confirming the account has Fable access — only the spawn-time handoff is broken.

Expected

The model selected in the remote-control UI is the model the spawned session requests from turn 1.

Workaround

Pin "model": "claude-fable-5[1m]" in ~/.claude/settings.json, which bypasses the picker handoff.

Related but distinct

On mobile, after a mid-session safety-classifier fallback (Fable 5 → Opus 4.8), /model cannot restore Fable (matches #67246) — so when spawn starts on the wrong model AND the picker can't fix it from mobile, there is no path back to the selected model at all.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗