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

  1. Set "defaultModel": "sonnet" in ~/.claude/settings.json
  2. Start a new Claude Code session
  3. Run /model to 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 defaultModel override
  • Verified session-start hook (~/.claude/hooks/session-start.sh) does not touch model settings
  • No /model command 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.

View original on GitHub ↗

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