[Bug] Permission allow rules not applied for Bash(mkdir) in skill contexts and default mode
Bug Description
Bug: Bash(mkdir *) allow rule in settings.json not applied in certain contexts
Environment: Claude Code v2.1.80+ on Windows 11, permissionMode: default
Settings: Global ~/.claude/settings.json has "Bash(mkdir *)" in permissions.allow.
Issue 1 — Skill execution ignores global allow list:
When a custom skill (e.g., /init-guidelines) invokes Bash(mkdir -p guidelines docs/handover), a permission prompt is shown despite the allow rule. Session logs show permissionMode: undefined for
skill-initiated tool calls, suggesting the permission mode is not propagated into the skill execution context, causing the allow list to be bypassed.
Issue 2 — Regression in v2.1.80+ default mode:
In default permissionMode, Bash(mkdir *) was auto-allowed in v2.1.39–2.1.49 but prompts for every mkdir call since v2.1.80. The same commands auto-allow in acceptEdits and bypassPermissions modes. This
suggests the mode-specific check (mkdir only auto-allowed in acceptEdits) now takes precedence over user-defined allow rules.
Evidence: 99 mkdir calls analyzed across 814 sessions. All 16 skill-invoked cases and all default-mode cases on v2.1.80+ triggered prompts. Pattern matching logic itself is correct (/^mkdir( .*)?$/s).
Expected: User-defined allow rules in settings.json should take precedence regardless of permissionMode or skill context.
Environment Info
- Platform: win32
- Terminal: windows-terminal
- Version: 2.1.96
- Feedback ID: beaa5c53-01ad-4e48-8c27-bf4d3bc62442
Errors
[]This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗