[Bug] Bash tool permission syntax silently fails with deprecated colon syntax
Bug Description
Problem
The allowed-tools syntax for Bash commands changed from Bash(command:) to Bash(command ) (colon replaced with space). The old :* syntax silently does nothing — no warning, no
error, just no permission granted.
This is a painful debugging experience. We had an entire plugin with skills using the old syntax across 5+ skill files, and none of the auto-approve rules were actually working.
We only discovered it by accident when testing a new change.
Making this worse: Claude Code itself still generates permissions in the old Bash(command:*) format when you ask to add permissions. We spent significant time debugging why our skills kept prompting for permissions that were supposedly already granted.
Reproduction
In a skill's markdown frontmatter or in .claude/settings.json:
"Bash(git:*)"
Run any git command — it still prompts for permission. Change to:
"Bash(git *)"
Now it auto-approves as expected.
Suggested fix
- When Claude Code parses allowed-tools and encounters a pattern matching Bash(:), emit a warning like:
⚠️ Deprecated syntax Bash(command:) detected in skill "skill-name". Use Bash(command ) instead.
Environment Info
- Platform: darwin
- Terminal: iTerm.app
- Version: 2.1.74
- Feedback ID: afb42d7e-5d98-4f41-8868-2239d52b9e38
This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗