Model setting in settings.json is ignored on startup - defaults to Sonnet instead of configured Opus
Resolved 💬 5 comments Opened Dec 6, 2025 by kazuph Closed Feb 5, 2026
This issue was written with Claude Code (Claude Opus 4.5)
---
Description
When "model": "opus" is configured in ~/.claude/settings.json, Claude Code ignores this setting on startup and defaults to Sonnet instead.
Additionally, even when changing the model to Opus via /status → Config menu, this setting does not persist. On the next startup, it reverts to the default (currently Sonnet), making it impossible to maintain Opus usage across sessions.
Steps to Reproduce
- Set
"model": "opus"in~/.claude/settings.json - Start Claude Code
- Observe that the model is Sonnet, not Opus
- Alternatively: Use
/status→ Config to set Opus - Restart Claude Code
- Observe that the model has reverted to Sonnet
Expected Behavior
Claude Code should start with the model specified in settings.json (Opus in this case) and persist model selection across sessions.
Actual Behavior
Claude Code starts with Sonnet regardless of the settings.json configuration or previous session settings.
Configuration
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"model": "opus",
...
}
Environment
- OS: macOS (Darwin 24.6.0)
- Claude Code: Latest version
Possibly Related Issues
- #11291 - Default model reverts to Haiku after removing config files
- #3123 - /model command deletes settings.json content
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗