Global permission rules not matching paths under ~/Code/ and Bash commands

Resolved 💬 3 comments Opened Dec 26, 2025 by grazij Closed Dec 30, 2025

Description:

Global permission rules in ~/.claude/settings.json are not being applied correctly. Commands that should be auto-approved based
on configured rules are still prompting for confirmation.

Environment:

  • OS: macOS (Darwin 25.2.0)
  • Claude Code version: 2.0.61

Steps to Reproduce:

  1. Configure ~/.claude/settings.json with these permissions:

``json
{
"permissions": {
"allow": [
"Write(~/Code/**)",
"Write(.claude/**)",
"Bash(mkdir:*)",
"Bash(touch:*)"
]
}
}
``

  1. Navigate to a project under ~/Code/, e.g., ~/Code/browsery/
  1. Ask Claude Code to create a todo file at .claude/todo.md

Expected Behavior:

The following operations should proceed without prompting:

  • Write(.claude/todo.md) — matches Write(.claude/**)
  • mkdir -p ~/Code/browsery/.claude — matches Bash(mkdir:*)
  • touch ~/Code/browsery/.claude/todo.md — matches Bash(touch:*)

Additionally, ~/Code/browsery/.claude/todo.md should match Write(~/Code/**).

Actual Behavior:

All three operations prompt for user confirmation:
``
Bash command
mkdir -p /Users/username/Code/browsery/.claude
Do you want to proceed?
``

``
Bash command
touch /Users/username/Code/browsery/.claude/todo.md
Do you want to proceed?
``

Additional Context:

  • The .claude/ directory already existed when mkdir -p was attempted
  • The full absolute path /Users/username/Code/browsery/.claude/todo.md should match the glob pattern ~/Code/**
  • Unclear if this is a tilde expansion issue, glob matching issue, or both

View original on GitHub ↗

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