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

  1. Set "model": "opus" in ~/.claude/settings.json
  2. Start Claude Code
  3. Observe that the model is Sonnet, not Opus
  4. Alternatively: Use /status → Config to set Opus
  5. Restart Claude Code
  6. 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

View original on GitHub ↗

This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗