User-scope settings overwrite project-scope instead of merging (hooks, permissions)
Resolved 💬 2 comments Opened Mar 9, 2026 by the0807 Closed Mar 11, 2026
Bug Description
When both project-scope and user-scope settings define hooks or permissions, the user-scope settings overwrite the project-scope settings entirely instead of being deep-merged with them.
Expected Behavior
User-scope settings (settings.local.json, ~/.claude/settings.json) should be deep-merged with project-scope settings (settings.json, .claude/settings.json), so that both layers contribute their configurations.
For example, if project-scope defines hooks for PreToolUse and user-scope defines hooks for PostToolUse, both should be active.
Actual Behavior
The user-scope settings completely replace the project-scope settings for hooks and permissions keys, discarding any project-level configuration.
Affected Settings
hooks— user-scope hooks overwrite project-scope hookspermissions— user-scope permissions overwrite project-scope permissions
Reproduction Steps
- Define hooks in project-scope settings (e.g.,
.claude/settings.json) - Define different hooks in user-scope settings (e.g.,
~/.claude/settings.json) - Observe that only user-scope hooks are active; project-scope hooks are ignored
Environment
- Claude Code version: 2.1.71
- OS: macOS (Darwin 25.3.0)
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗