Claude Code keeps prompting for approval (found workaround) on git fetch/pull/remote/reflog/ls-files despite matching Bash allow-list wildcard entries.

Status Open
Reported on v2.1.296
Maintainer reply None cached
Activity 0 comments · opened Oct 10, 2026

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?

<html>
<body>
<!--StartFragment--><h2 aria-level="5" style="unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Full findings table</h2><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Tested one-by-one, each command run in isolation, each result manually confirmed by a human watching for the dialog (not inferred from tool output — a silently-approved call and a prompted-then-approved call return an identical result to the calling agent, so self-reporting isn't reliable here).</p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong>Bare <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">&lt;verb&gt; *</code> pattern works fine:</strong>
<code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">status</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">log</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">diff</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">show</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">branch</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">rev-parse</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">add</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">commit</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">push</code></p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong>Bare <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">&lt;verb&gt; *</code> pattern fails (prompts despite the entry existing):</strong>
<code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">fetch</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">pull</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">remote</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">reflog</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">ls-files</code></p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong>Workaround confirmed per broken subcommand</strong> — a differently-shaped pattern for the <em>same</em> subcommand works:</p>
Subcommand | Broken pattern | Working pattern(s)
-- | -- | --
fetch | fetch | fetch -, fetch origin*
pull | pull | pull -, pull origin*
remote | remote | remote -, remote show*
reflog | reflog | reflog -
ls-files | ls-files | ls-files --error-unmatch

<h2 aria-level="5" style="unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">What this rules out</h2><ul style="padding-inline-start: 2em; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><li style="unicode-bidi: plaintext;"><strong>Not about wildcard placement.</strong><span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">ls-files --error-unmatch </code><span> </span>has a space-separated bare<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;"></code><span> </span>(same shape as the broken<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">reflog *</code>) and works fine — so it isn't "glued-wildcard vs. space-separated-wildcard."</li><li style="unicode-bidi: plaintext;"><strong>Not about network vs. local commands.</strong><span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">push</code><span> </span>(network) works;<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">fetch</code><span> </span>(network) fails.<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">reflog</code><span> </span>(purely local) fails;<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">rev-parse</code><span> </span>(purely local) works.</li><li style="unicode-bidi: plaintext;"><strong>Not about read vs. write semantics.</strong><span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">add</code>/<code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">commit</code>/<code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">push</code><span> </span>(mutating) all work;<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">fetch</code>/<code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">pull</code><span> </span>(also mutating local refs) don't.</li><li style="unicode-bidi: plaintext;"><strong>Exact-string entries for one invocation don't generalize</strong><span> </span>to other arguments of the same subcommand (e.g. an exact entry for<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">reflog -3</code><span> </span>doesn't cover<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">reflog -5</code><span> </span>or<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">reflog --since=...</code>) — expected for pure exact matches, but confirms the matcher isn't doing anything smarter for these five even when given a very specific pattern.</li></ul><h2 aria-level="5" style="unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Expected behavior</h2><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">A wildcard allow-list entry of a given shape should behave consistently across all subcommands of the same base command (<code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">git</code>), not silently fail for a specific subset.</p><h2 aria-level="5" style="unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Hypothesis (unconfirmed, offered for triage only)</h2><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">May overlap with previously reported wildcard-matching issues in the permission resolver (possibly #27139 / #6850 — flagging for maintainers to check relevance; not independently re-verified against this specific repro). Without access to the matcher's source, our best guess is that these five subcommand names may be special-cased individually somewhere (e.g. a redundant/conflicting entry historically added via the "Always allow" UI flow), rather than this being a uniform glob-matching defect.</p><h2 aria-level="5" style="unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Environment</h2><ul style="padding-inline-start: 2em; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><li style="unicode-bidi: plaintext;">Claude Code, VS Code extension</li><li style="unicode-bidi: plaintext;">Windows 11, Git Bash / PowerShell</li><li style="unicode-bidi: plaintext;">Reproduced with entries in both a global<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">~/.claude/settings.json</code><span> </span>and a project-tracked<span> </span><code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">.claude/settings.json</code>, individually and together</li></ul><h2 aria-level="5" style="unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Impact</h2><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; unicode-bidi: plaintext; color: rgb(191, 191, 191); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(25, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Low severity, real annoyance — these are common, mostly-safe operations (<code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">fetch</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">pull</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">remote -v</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">reflog</code>, <code style="font-family: monospace; color: rgb(140, 140, 140); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(36, 37, 38); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">ls-files</code>) that end up prompting on every session despite correctly-configured allow-list entries, undermining the purpose of the allow-list for exactly the routine operations it's meant to streamline.</p><!--EndFragment-->
</body>
</html>

What Should Happen?

Claude Code should not prompt for approval on git fetch, git pull, git remote, git reflog, or git ls-files when a Bash allow-list wildcard entry already covers the command — the same way git status, git log, git diff, git add, git commit, and git push already run silently under identically-shaped wildcard entries. A wildcard entry's effectiveness shouldn't depend on which git subcommand it's matching.

Error Messages/Logs

Steps to Reproduce

Step 1 — Add this entry to .claude/settings.json: "Bash(git -C /path/to/repo reflog *)"
Step 2 — Start a Claude Code session in that repo.
Step 3 — Ask Claude to run: git -C /path/to/repo reflog -3
Step 4 — Observe: an "Allow this bash command?" prompt appears, even though the entry above should match it by prefix.
Step 5 — For comparison, add "Bash(git -C /path/to/repo status *)" and ask Claude to run: git -C /path/to/repo status --short — this one runs silently, no prompt, despite being the same pattern shape.
Step 6 — Repeat steps 1-4, substituting fetch, pull, remote, and ls-files for reflog — each one also prompts despite its own matching wildcard entry being present.
Step 7 — Replace the broken entry with a differently-shaped pattern for the same subcommand and retest; each resolves the prompt. Confirmed per subcommand: fetch - and fetch origin both work (broken: fetch ). pull - works (broken: pull ). remote - works (broken: remote ). reflog - works (broken: reflog ). ls-files --error-unmatch works (broken: ls-files *).
Step 8 — Note that exact-string entries for one specific invocation do not generalize to other arguments of the same subcommand — e.g. an exact entry for "reflog -3" does not cover "reflog -5" or "reflog --since=...", each still prompts and needs its own entry or a working wildcard shape from step 7.
Step 9 — Add each working pattern from step 7 to both the global settings.json and any project-tracked settings.json in use — a fix added to only one location can appear to fail when the other is still consulted.

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.296 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗