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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions