[BUG] Remote Control model picker accepts taps that have no effect, displays wrong "current model" checkmark
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
The Remote Control model picker (Android) appears to be non-functional for sessions whose terminal-side configuration uses a model variant the picker doesn't know about. Specifically: a CC v2.1.148 terminal session pinned to claude-opus-4-7[1m] produces a Remote Control model picker with three observable defects:
- Opus 4.7 is not in the list at all. The picker lists Opus 4.8, Opus 4.8 (1M), Sonnet 4.6, Haiku 4.5. A user on a 4.7 configuration has no list entry to map to their actual model.
- The "currently selected" checkmark is wrong. Picker marks Opus 4.8 (1M) ✓ for a session that has only ever run Opus 4.7 (standard context).
- Tapping a different model does nothing. Selecting Sonnet 4.6 produces a "✓" next to Sonnet 4.6 in the picker UI — but the terminal session continues running on Opus 4.7. No change to the running model, no change to
~/.claude/settings.json, no change to the outbound model identifier on the wire. The picker provides visual confirmation of a model swap that has not actually happened.
The third finding is the most material. The picker presents a functional-looking UI control that silently does nothing while confirming visually that it succeeded.
What Should Happen?
Either:
- The picker should actually switch the running session's model (matching the semantics of
/modelin the terminal), with: real changes to either user settings or session model, a list that includes every model variant the running session could be on, a "currently selected" checkmark that reflects the actual running model not a settings-file guess, and visual distinction between 1M-context variants and standard variants with cost-implication subtext.
- OR the picker should be read-only with: no apparent-success "✓" toggling on tap, clear visual indication that the control is not functional from RC, and accurate display of the running model (no checkmark if the running model isn't in the list).
Error Messages/Logs
Pre-tap (turn #1):
JSONL message.model claude-opus-4-7
JSONL usage.service_tier standard
/status Model claude-opus-4-7[1m]
Outbound anthropic-beta includes context-1m-2025-08-07
settings.json model claude-opus-4-7[1m]
RC picker checkmark Opus 4.8 (1M) ✓
User taps Sonnet 4.6 in the RC picker. Picker dismisses. RC shows
"Settings dialog dismissed / Remote Control connecting." Re-opening
the picker shows Sonnet 4.6 ✓.
Post-tap (turn #2, terminal sends "2+2=?"):
JSONL message.model claude-opus-4-7 (unchanged)
JSONL usage.service_tier standard (unchanged)
/status Model claude-opus-4-7[1m] (unchanged)
Outbound anthropic-beta includes context-1m-2025-08-07 (unchanged)
settings.json model claude-opus-4-7[1m] (byte-identical, mtime unchanged)
RC picker checkmark Sonnet 4.6 ✓
Steps to Reproduce
- Launch a fresh terminal CC v2.1.148 session with
~/.claude/settings.jsoncontaining"model": "claude-opus-4-7[1m]". - Verify
/statusreportsModel: claude-opus-4-7[1m]. - Send one prompt (e.g.,
1+1=?). Verify the assistant turn lands in the session JSONL. - Open Remote Control on Android, attach to the session.
- Open the model picker. Observe the list (see "Screenshot 1" in the comment below):
- Opus 4.8 — "Most capable for ambitious work"
- Opus 4.8 (1M) ✓ — same subtext, marked as currently selected
- Sonnet 4.6 — "Most efficient for everyday tasks"
- Haiku 4.5 — "Fastest for quick answers"
- Tap Sonnet 4.6. The picker dismisses; RC briefly shows "Remote Control connecting" (reconnect); re-opening the picker shows Sonnet 4.6 ✓. (See "Screenshot 2" in the comment below.)
- Send another prompt in the terminal session (e.g.,
2+2=?). - Inspect the new assistant turn's model field via:
- Session JSONL:
jq 'select(.type=="assistant").message.model' ~/.claude/projects/<encoded>/<sid>.jsonl /statusin the terminal- Outbound
anthropic-betaheader (capturable via a local proxy)
The new turn's model field, /status output, and outbound headers all show the running model is unchanged from before the picker tap.
What the picker IS apparently displaying
The "Opus 4.8 (1M) ✓" baseline correlates with the settings.json model field's [1m] suffix — the same baseline appears across multiple sessions on the same host when settings has [1m]. Best guess at the mapping logic:
- Settings has
[1m]suffix → picker picks a 1M-list entry - Settings model-family not in picker's hardcoded list (Opus 4.7 absent) → picker falls back to the newest 1M entry, which is Opus 4.8 (1M)
This is consistent with the picker reading settings.json on attach and mapping the literal value to a list entry, with no awareness of what the session is actually executing.
Related reports
- #62199 — silent default-model change to 1M-context on Pro plans
- #64919 — VS Code extension forces 1M-context on Pro plan
- #65283 — stuck with "Usage credits required for 1M context" after
/clear - @srvstrnull's comment on #62199: "when i use Claude code with remote-control, even though i have set sonnet 4.6 as default model it always keep changing automatically to opus 4.7 1M during sessions. Model switching does do work, only if the session is restarted."
srvstrnull's "model switching does work, only if the session is restarted" observation is consistent with what's reported here: the in-session switching surface (RC picker) doesn't actually change the running model. Whether their "automatically to opus 4.7 1M during sessions" flip has the same root cause as my findings is unclear — could be the same UI surface misreporting + ineffective taps, could be a separate server-side or settings-mutation mechanism. Either way the user-visible defect is similar: the picker creates a false belief about what model is running.
Claude Model
Other
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.148
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Other
Additional Information
Screenshots of the picker pre-tap (Opus 4.8 (1M) ✓) and post-tap (Sonnet 4.6 ✓) are attached in the comment below. The session was attached via the Android Remote Control client, current build as of 2026-06-04 morning local.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗