[BUG] Claude code only recognizes legacy `:*` suffix in `.claude/settings.json` file
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
With "Bash(pnpm lint *)" as an entry in the "allow" permissions of .claude/settings.json, Claude Code is prompting to run the lint command. If I change this entry to "Bash(pnpm lint:*)", using the legacy :* suffix, it correctly runs the lint command without prompting.
Within a SKILL.md file, allowed-tools: Bash(pnpm lint *) works without prompting, so it seems like only skills are respecting the wildcard syntax without the legacy suffix.
What Should Happen?
According to the docs, the :* suffix is legacy and * should work in its place consistently now.
Error Messages/Logs
Steps to Reproduce
- Create a
.claude/settings.jsonfile
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"permissions": {
"allow": [
"Bash(pnpm lint *)"
]
}
}
- Create a new skill like
.claude/skills/test/SKILL.md
---
allowed-tools:
---
Run pnpm lint
- Try triggering this skill and checking if the command is run without prompting
- Change it to
Bash(pnpm lint:*) - Try triggering this skill and checking if the command is run without prompting
- Change
allowin.claude/settings.jsonto be empty[]and inSKILL.md, addallowed-tools: Bash(pnpm lint *) - Try triggering this skill and checking if the command is run without prompting
Bash(pnpm lint *) works within SKILL.md, but not in settings.json.Bash(pnpm lint:*) works in settings.json.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.38
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗