[BUG] permissions precedence not followed between user settings and local project settings

Resolved 💬 2 comments Opened Nov 30, 2025 by GomezDerek Closed Nov 30, 2025

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?

Local project settings permissions are overridden by user settings permissions. If a bash command is allowed by .claude/settings.local.json but it's denied in ~/.claude/settings.json, Claude Code will be denied execution permission.

What Should Happen?

Claude Code should have permissions to execute the bash command allowed in .claude/settings.local.json

Local project settings should take precedence and override user settings. According to the docs, https://code.claude.com/docs/en/settings#settings-precedence

Settings are applied in order of precedence (highest to lowest): 1. Enterprise managed policies (managed-settings.json) > - Deployed by IT/DevOps > - Cannot be overridden 2. Command line arguments > - Temporary overrides for a specific session 3. Local project settings (.claude/settings.local.json) > - Personal project-specific settings 4. Shared project settings (.claude/settings.json) > - Team-shared project settings in source control 5. User settings (~/.claude/settings.json) > - Personal global settings

Furthermore, https://code.claude.com/docs/en/settings#key-points-about-the-configuration-system

- Precedence: Higher-level configurations (Enterprise) override lower-level ones (User/Project) - Inheritance: Settings are merged, with more specific settings adding to or overriding broader ones

Error Messages/Logs

Bash(ls)
  ⎿  Error: Permission to use Bash with command ls has been denied.

Bash(ls -la)
  ⎿  Error: Permission to use Bash with command ls -la has been denied.

Steps to Reproduce

  1. Add "Bash(ls:*)" to the deny list in user settings, ~/.claude/settings.json
  2. Add "Bash(ls:*)" to the allow list in local project settings, .claude/settings.local.json
  3. Start a Claude Code instance and prompt run the ls bash command

Claude Model

Sonnet (default)

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.0.55

Platform

Anthropic API

Operating System

Ubuntu/Debian Linux

Terminal/Shell

VS Code integrated terminal

Additional Information

<img width="2552" height="1498" alt="Claude Code Screenshot" src="https://github.com/user-attachments/assets/f89f3a04-c283-495b-9a63-134b80482f60" />

View original on GitHub ↗

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