Global permissions not applied when project-level settings.local.json exists
Resolved 💬 3 comments Opened Mar 16, 2026 by jemilad-ers Closed Apr 13, 2026
Description
Global permissions defined in ~/.claude/settings.json are not being respected when a project-level .claude/settings.local.json file exists, even if the project-level file has empty allow/deny arrays.
Steps to Reproduce
- Define wildcard permissions in
~/.claude/settings.json(e.g.,Bash(git *:*)) - Have an empty or minimal
.claude/settings.local.jsonin the project directory:
``json``
{ "permissions": { "allow": [], "deny": [] } }
- Run a command that should match the global wildcard (e.g.,
git fetch) - Result: User is prompted to approve the command
- Expected: Command runs without prompt, matching the global
Bash(git *:*)rule
Additional Context
- This has been a recurring issue over the past week in a specific project
- The project-level
settings.json(committed, non-local) contains onlyhooksandenabledPlugins— no permissions block - Workaround: duplicating the full global permissions list into the project-level
settings.local.json - OS: macOS (Darwin 25.3.0)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗