/model picker: Enter persists the choice globally — should default to session scope like /effort

Status Open
Reported on v2.1.211
Maintainer reply None cached
Activity 0 comments · opened Jul 17, 2026

The /model picker's Enter key saves the selection as the global default for all new sessions (writing settings.json "model"), with session-only scope demoted to the 's' key. /effort has the opposite (saner) polarity: it applies to the current session and says so explicitly.

Expected: ephemeral by default, persistence as the deliberate act — or a setting to choose (e.g. "modelPickerScope": "session" | "global").

Why it bites: in mixed-backend setups (Anthropic API + Bedrock via CLAUDE_CODE_USE_BEDROCK and ANTHROPIC_MODEL), opening /model inside a Bedrock-env session and pressing Enter writes a Bedrock inference-profile id (us.anthropic.claude-opus-4-8[1m]) into the GLOBAL default that native-API sessions then read — instantly breaking every non-Bedrock launch (invalid model id for the Anthropic API). In our case a subsequent re-pick also left the "model" key wiped entirely. One keypress in one session should not silently reconfigure every other session's model.

Sequence observed (Claude Code 2.1.211, macOS 26.5):

  1. Session A launched with env CLAUDE_CODE_USE_BEDROCK=1, ANTHROPIC_MODEL='us.anthropic.claude-opus-4-8[1m]'
  2. /model → Enter on the active entry → "saved as your default for new sessions" → settings.json "model" is now a Bedrock-only id
  3. Every subsequent plain-API session inherits an id its backend can't serve
  4. A later /model pick in the same session removed the "model" key from settings.json entirely

Related but distinct: #62199 (default changed without notification). This report is about the picker's scope polarity: Enter = global persist, 's' = session, where session should be the default (matching /effort).

View original on GitHub ↗