Global settings.json allow list not applied in non-git workspaces

Resolved 💬 3 comments Opened Mar 12, 2026 by JakeSummers Closed Mar 16, 2026

Bug Description

Global ~/.claude/settings.json permission allow-list patterns are not auto-approving tool calls when the working directory is not a git repository but has a .claude/ directory.

Steps to Reproduce

  1. Configure ~/.claude/settings.json with an allow pattern:

``json
{
"permissions": {
"allow": ["mcp__claude_ai_Slack__slack_read_*"],
"defaultMode": "acceptEdits"
}
}
``

  1. Create a workspace directory (not a git repo) that has a .claude/ subdirectory (e.g., for skills symlinks):

``
~/.rtb-workspaces/my-workspace/
└── .claude/
└── skills -> /path/to/skills
``

  1. Start Claude Code from that workspace: cd ~/.rtb-workspaces/my-workspace && claude
  2. Invoke a tool matching the global allow pattern (e.g., mcp__claude_ai_Slack__slack_read_channel)

Expected Behavior

The tool call should be auto-approved because it matches mcp__claude_ai_Slack__slack_read_* in the global settings.

Actual Behavior

The user is prompted to approve the tool call. Approving creates a <workspace>/.claude/settings.local.json with the specific tool name, rather than recognizing the global allow pattern.

Environment

  • macOS (Darwin 25.2.0)
  • Working directory is NOT a git repository
  • Working directory HAS a .claude/ subdirectory (containing a skills symlink)
  • No project-scoped settings.json or settings.local.json exists before the prompt
  • No ~/.claude/projects/<project>/settings.json exists

Hypothesis

The presence of a .claude/ directory in a non-git workspace may interfere with the settings resolution chain, causing the global ~/.claude/settings.json allow list to not be merged/applied.

View original on GitHub ↗

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