[BUG] Project-level settings don't inherit model configuration from user-level settings
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
- Set "model": "opus" in ~/.claude/settings.json
- Create a project-level .claude/settings.local.json with only permissions configured (no model field)
- Start a fresh conversation from that project directory
- 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_
This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗