[BUG] Project-level settings don't inherit model configuration from user-level settings

Resolved 💬 6 comments Opened Mar 30, 2026 by Sereger13 Closed May 3, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

When a project-level .claude/settings.local.json file exists, the model setting from user-level ~/.claude/settings.json is not inherited. Instead, the system falls back to a hardcoded default (Sonnet) rather than merging configurations.

Any field not specified in the project-level config uses system defaults instead of falling back to user-level settings. This means I must duplicate the model setting in every project's .claude/settings.local.json file.

What Should Happen?

More intuitive behaviour would be that project-level settings inherit/merge missing fields from user-level settings. If I've set a default model at the user level, it should apply unless explicitly overridden at the project level.

This would follow the principle of least surprise and reduce configuration duplication across projects.

Error Messages/Logs

Steps to Reproduce

  1. Set "model": "opus" in ~/.claude/settings.json
  2. Create a project-level .claude/settings.local.json with only permissions configured (no model field)
  3. Start a fresh conversation from that project directory
  4. Observe that Sonnet is used instead of Opus

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.77

Platform

Anthropic API

Operating System

Other Linux

Terminal/Shell

Xterm

Additional Information

_No response_

View original on GitHub ↗

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