[Bug] Bash tool permission syntax silently fails with deprecated colon syntax

Resolved 💬 6 comments Opened Mar 12, 2026 by david206 Closed Apr 22, 2026

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

  1. 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

View original on GitHub ↗

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