Skip to content

[BUG] permissions from user settings.json is NOT applied at project level #5140

@siraj-samsudeen

Description

@siraj-samsudeen

Environment

  • Platform (select one):
    • Other: Claude Code on macOS with VS Code
  • Claude CLI version: 1.0.68 (Claude Code)
  • Operating System: macOS Darwin 23.6.0
  • Terminal: Terminal App

Bug Description

User-level permissions in ~/.claude/settings.json are not being enforced
during command execution, even though they appear as loaded in the
/permissions command. The same permissions work correctly when placed in
project-level .settings.local.json but fail when moved to user-level
settings.

Steps to Reproduce

  1. Copy working permissions from a project's .settings.local.json to
    user-level ~/.claude/settings.json:
    {
    "permissions": {
    "allow": [
    "mix:",
    "mcp__serena__
    ",
    "mcp__context7__",
    "Bash(ls:
    )",
    "Bash(find:)",
    "Bash(grep:
    )",
    "Bash(sqlite3:)",
    "Bash(mkdir:
    )",
    "Bash(cp:)",
    "Bash(mv:
    )",
    "Bash(git add:)",
    "Bash(git push:
    )",
    "Bash(git checkout:)",
    "Bash(git stash show:
    )",
    "Bash(git stash pop:)",
    "Bash(git fetch:
    )",
    "Bash(git stash push:)",
    "Bash(git merge:
    )",
    "Bash(git cherry-pick:)",
    "Bash(python:
    )",
    "Bash(python3 -m pip install:)",
    "Bash(npm install:
    )",
    "Bash(npx playwright test:*)"
    ]
    }
    }
  2. Open a project in VS Code with Claude Code
  3. Run /permissions - it correctly shows all permissions as loaded
  4. Try to run any allowed command (e.g., mix --version)
  5. Claude Code still asks for permission despite the command being in the
    allow list

Expected Behavior

  • I want a way to allow the mcp of serena to execute all its commands without asking for explicit permission each time.
  • Commands in the user-level allow list should execute without requiring
    approval
  • User-level permissions should work identically to project-level
    permissions
  • If /permissions shows a command as allowed, it should not require
    approval

Actual Behavior

  • All commands require manual approval even when listed in user-level
    permissions
  • /permissions command shows the permissions as loaded but they are not
    enforced
  • The exact same permissions work when placed in project
    .settings.local.json but not in ~/.claude/settings.json
  • MCP wildcard permissions (e.g., mcp__serena__*) also don't work at the
    user level

Additional Context

  • These permissions were originally auto-generated by Claude Code (not
    manually written) - I just copied them from .settings.local.json to the user-level settings.json
  • This significantly impacts workflow as every command requires manual
    approval across all projects

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions