SD-017 — settings.json Bash Wildcard Grant

SD-017 flags broad Bash or PowerShell allow entries in supported Claude settings: bare shell grants or wildcards over selected high-risk command heads.

What it matches

A Bash or PowerShell allow entry in .claude/settings.json or settings.local.json that grants the shell outright or wildcards curl, wget, sh, bash, zsh or eval.

Why it matters

Where the target Claude Code version honors the matched allow entry, it can permit a broad family of shell commands without the normal permission prompt. Exact matching, trust behavior and effective precedence are runtime and version-sensitive; this rule reports the configured grant, not an exhaustive permission inventory.

Example

json

{"permissions": {
  "allow": ["Bash(curl:*)", "Bash(sh:*)"]
}}

Each entry expresses a broad allow; effective matching and prompting depend on Claude Code version and precedence.

How to fix it

Grant the exact subcommands the work needs and leave the rest to the prompt. Where a command genuinely needs a wide argument space, wrap it in a script the repository commits and grant that one script, so what the agent may run is reviewable in the diff rather than implied by a wildcard.

Known false positives

A wildcard grant that the repository owner intends. The finding still says what was granted.

Standards mapping

OWASP ASI ASI03

CWE CWE-732

Agent Skills in the Wild PE1

Prevalence

highpermission_hygiene

Pattern SD-017 was detected in 0 of 16996 public skills scanned as of 27 October 2026.

current ruleset eb11e25d39bc2c81

Check your own skills

Scan a repository or a single skill against this rule and the rest of the catalogue, free.