defaultModel setting in settings.json not honored — always starts as Opus
Resolved 💬 5 comments Opened Mar 12, 2026 by gsmethells Closed Mar 15, 2026
Bug Description
defaultModel: "sonnet" in ~/.claude/settings.json is not being honored. New sessions always start as Opus 4.6 despite the setting.
Steps to Reproduce
- Set
"defaultModel": "sonnet"in~/.claude/settings.json - Start a new Claude Code session
- Run
/modelto check the active model
Expected Behavior
Session should start with Sonnet as the default model.
Actual Behavior
Session starts with Opus 4.6. Running /model shows:
Kept model as Default (Opus 4.6 · Most capable for complex work)
Environment
- Claude Code v2.1.74
- macOS (Darwin 25.2.0)
- Claude Max plan
- Shell: zsh
Settings
~/.claude/settings.json contains:
{
"defaultModel": "sonnet",
...
}
No model override exists in project-level settings (.claude/settings.local.json) or session-start hooks.
Investigation Done
- Verified no project-level
defaultModeloverride - Verified session-start hook (
~/.claude/hooks/session-start.sh) does not touch model settings - No
/modelcommand was run before observing the issue — the session launched directly into Opus
Hypothesis
Possible that the welcome screen / model selection is driven by the plan tier (Claude Max) rather than respecting the defaultModel setting.
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗