[BUG] Claude code only recognizes legacy `:*` suffix in `.claude/settings.json` file

Status Fixed / completed
Reported on v2.1.38
Maintainer reply None cached
Activity 4 comments · opened Feb 10, 2026 · closed Feb 26, 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?

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

  1. Create a .claude/settings.json file
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "allow": [
      "Bash(pnpm lint *)"
    ]
  }
}
  1. Create a new skill like .claude/skills/test/SKILL.md
---
allowed-tools: 
---

Run pnpm lint
  1. Try triggering this skill and checking if the command is run without prompting
  2. Change it to Bash(pnpm lint:*)
  3. Try triggering this skill and checking if the command is run without prompting
  4. Change allow in .claude/settings.json to be empty [] and in SKILL.md, add allowed-tools: Bash(pnpm lint *)
  5. 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_

View original on GitHub ↗

4 Comments

github-actions[bot] · 6 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/23869
  2. https://github.com/anthropics/claude-code/issues/23926
  3. https://github.com/anthropics/claude-code/issues/18160

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

EugeneMsv · 6 months ago

Hello @bcherny , wanted to bump this with a broader impact summary since the stale label may underrepresent how disruptive this is in practice.

The core issue: Bash(cmd *) in settings.json silently does nothing. No error, no warning — Claude keeps prompting as if the rule
doesn't exist. Users following the official docs end up with permissions that look correctly configured but don't work.

This is particularly painful to debug because there's no feedback loop — you write the rule, it appears valid, but it never fires. The
only way to discover the workaround is to stumble upon legacy examples or GitHub threads like this one.

Ask: Even a doc note acknowledging that :* is the currently working syntax would immediately unblock users. A proper fix aligning
settings.json parsing with the documented space syntax would be the right long-term resolution.

Thanks for the great tool overall — this is one of the few friction points that comes up daily.

ericmatthys · 6 months ago

I think this can be closed in favor of https://github.com/anthropics/claude-code/issues/26229. Using both "Bash(pnpm lint)" and "Bash(pnpm lint *)" works. It just doesn't work as described in the docs. The space before the wildcard causes the bare pnpm lint to request approval when it's in settings.json.

github-actions[bot] · 5 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.