diff --git a/.claude/settings.json b/.claude/settings.json index 888d5fb..ffa42c0 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -53,7 +53,7 @@ "Bash(*creds-matrix.py *--privileged*)", "Bash(scp *)", "Bash(* | ssh *)", - "Bash(ssh * virsh *)", + "Bash(ssh * virsh *)", "Bash(ssh *'virsh *)", "Bash(ssh *\"virsh *)", "Skill(*)", "Edit(.claude/settings.json)", "Edit(.claude/settings.local.json)" ], diff --git a/docs/changelog-20260726-d137-tier1.md b/docs/changelog-20260726-d137-tier1.md index 71650ae..a056dc5 100644 --- a/docs/changelog-20260726-d137-tier1.md +++ b/docs/changelog-20260726-d137-tier1.md @@ -310,3 +310,17 @@ conflation, and 3x S5 asymmetry -- dc0's snap power key is the generic `id_ed25519` while dc1's is the dedicated `id_dc1_power`, i.e. the SEC-012/SEC-016 per-DC-isolation divergence made machine-visible. + +## Item 12 -- `ssh * virsh *` pattern gap closed (the flagged twin of item 11) + +Operator-directed follow-up to the item-11 finding. `Bash(ssh * virsh *)` had the identical +defect: it requires a literal space before `virsh`, so a quoted remote command +(`ssh 'virsh list --all'`) matched NO rule and fell through to the classifier. +Added `Bash(ssh *'virsh *)` and `Bash(ssh *"virsh *)`. + +Verified by matching the real command shapes against the parsed rule list: single-quoted, +double-quoted and bare forms now all resolve to an ask rule, `ssh 'sudo virsh ...'` +resolves via the sudo rule, and an unrelated `ssh 'ls -la'` still matches nothing -- +the widening did not become a catch-all. + +**Revert:** drop the two rules from `.claude/settings.json`.