feat: close the change-2 secret-blocking gaps - #17
Conversation
Add the ssh-private-key predicate (allowlisting config, known_hosts, authorized_keys — the old regex blocked them), hardening redirect/tee rules, and pack-level nonOverridable metadata on the hardening pack. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XLCHSd4NWR45fF5atExsbf
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
|
Superseded by the standalone change-2 slice PR (change-2-secret-blocking → main); its diff is fully carried over there. |



Closes the remaining gaps of
private/openspec/changes/change-2-secret-blockingon top of the steering-first branch (stacked — retarget tomainafter #16's successor merges, or it will auto-retarget when the base branch is deleted).What
ssh-private-keypredicate rule (private-key.read-ssh-dir): blocks any non-public file under.ssh/, allowlistingconfig,known_hosts,authorized_keys, and*.pub/*.pubkey. Fixes a false positive: the previous regex/\.ssh/(?!.*\.pub$)blocked~/.ssh/configandknown_hosts.< sensitive-filereads,>/>>writes, andteeto.env/.pem/.keyfiles.nonOverridable: truepack metadata (type + YAML loader passthrough), set onhardeningper ADR-007. Declarative only for now — enforcement lands with the config override system (change-13).docs/packs.mdgallery, documentednonOverridableindocs/rule-pack-guide.md.How
TDD: three failing tests added to
src/packs/packs.test.tsfirst, then the minimal implementation. 240/240 tests pass, typecheck and lint clean.🤖 Generated with Claude Code
https://claude.ai/code/session_01XLCHSd4NWR45fF5atExsbf