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 hooks
  • permissions — user-scope permissions overwrite project-scope permissions

Reproduction Steps

  1. Define hooks in project-scope settings (e.g., .claude/settings.json)
  2. Define different hooks in user-scope settings (e.g., ~/.claude/settings.json)
  3. 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)

View original on GitHub ↗

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