fix(883): canonical Bash(:*) syntax in scaffold settings template

Claude Code 2.1.123+ honours wildcard Bash allowlist patterns only in
the canonical form `Bash(cmd:*)`. The space form `Bash(cmd *)` falls
through to prompt_permission and gets auto-denied in agent mode,
breaking spawned coders.

- Rewrite all `Bash(cmd *)` patterns in STORY_KIT_CLAUDE_SETTINGS to
  the colon form.
- Replace separate `Bash(cargo build:*)` / `Bash(cargo check:*)` with
  a single `Bash(cargo:*)`.
- Add commonly-needed patterns: python3, node, npm, which, sed, awk,
  rg, diff, sort, uniq.
- Patch the live project-root .claude/settings.json so the running
  system picks up the fix immediately (rebuilt scaffolds will match).
- Add regression test asserting no `Bash(... *)` patterns survive and
  required common commands are present.
This commit is contained in:
dave
2026-04-30 13:44:51 +00:00
parent 801f9d8a26
commit 0e4a970e3a
3 changed files with 93 additions and 31 deletions
+27 -17
View File
@@ -1,28 +1,38 @@
{
"permissions": {
"allow": [
"Bash(cargo build:*)",
"Bash(cargo check:*)",
"Bash(git *)",
"Bash(ls *)",
"Bash(mkdir *)",
"Bash(mv *)",
"Bash(rm *)",
"Bash(touch *)",
"Bash(cargo:*)",
"Bash(git:*)",
"Bash(ls:*)",
"Bash(mkdir:*)",
"Bash(mv:*)",
"Bash(rm:*)",
"Bash(touch:*)",
"Bash(echo:*)",
"Bash(pwd *)",
"Bash(pwd:*)",
"Bash(grep:*)",
"Bash(find *)",
"Bash(head *)",
"Bash(tail *)",
"Bash(wc *)",
"Bash(cat *)",
"Bash(find:*)",
"Bash(head:*)",
"Bash(tail:*)",
"Bash(wc:*)",
"Bash(cat:*)",
"Bash(python3:*)",
"Bash(node:*)",
"Bash(npm:*)",
"Bash(which:*)",
"Bash(sed:*)",
"Bash(awk:*)",
"Bash(sort:*)",
"Bash(uniq:*)",
"Bash(diff:*)",
"Bash(rg:*)",
"Read",
"Edit",
"Write",
"Glob",
"Grep",
"mcp__huskies__*"
]
},
"enabledMcpjsonServers": [
"huskies"
]
"enabledMcpjsonServers": ["huskies"]
}