[BUG] Auto-generated permission rule with a literal : inside a quoted argument is rejected on load ("The :* pattern must be at the end")
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?
Claude Code auto-saves a Bash permission rule containing a literal : inside a quoted shell argument, then rejects that rule (and warns) on the next load because the parser reads the : (followed by *) as a misplaced prefix-match metacharacter.
This is the same class of bug as #43582 ($() subshell) and #25289 (WebFetch(domain:…) / URLs with https:), both now closed. This is a new variant that those fixes don't cover: the colon comes from a quoted glob argument (--gtest_filter='a:b'), not from a subshell, URL, or domain filter.
What Should Happen?
Either:
- The rule is accepted — the parser should not treat a : (and following *) that appears inside the matched command content as its own metacharacter; or
- Claude Code does not auto-save a rule it cannot round-trip (skip / truncate to a valid prefix like Bash(./tests:*)), as proposed in #43582.
Error Messages/Logs
Found 1 settings issue · /doctor for details
Steps to Reproduce
- Have Claude run a command whose quoted argument contains : next to — e.g. a googletest filter (gtest uses : to separate patterns and as a glob):
./tests --gtest_filter='*texcoord*:*texture_uv*'
- Approve it with "Always allow" so Claude Code writes it to .claude/settings.local.json:
Bash(./tests --gtest_filter='*texcoord*:*texture_uv*')
- Reload the project / run /doctor.
Claude Model
Opus
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.150 (Claude Code)
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Other
Additional Information
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗