claude-code - 💡(How to fix) Fix [BUG] Auto-generated permission rule with a literal : inside a quoted argument is rejected on load ("The :* pattern must be at the end")

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Error Messages/Logs

Root Cause

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.

Code Example

Found 1 settings issue · /doctor for details
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • 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

  1. 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*'
  2. Approve it with "Always allow" so Claude Code writes it to .claude/settings.local.json: Bash(./tests --gtest_filter='*texcoord*:*texture_uv*')
  3. 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

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING