permissionslisted
Install: claude install-skill MaisonDeVolonte/construct
**provable deny rules:** ensure every command in your corpus is tested against your actual merged rules
- answers one question: does the gate refuse what the corpus says it must refuse
- a config can read perfectly and still have a dead hook, which only a replay catches
- audits the merged rules for drift, dead entries and wildcards that auto-approve
# Instructions
## Telemetry
```!
"${CLAUDE_PLUGIN_ROOT}"/skills/permissions/permissions.sh $ARGUMENTS
echo "sidecar exit: $?"
```
- `help: requested` → the run was refused before it started; `## Help` below is the whole turn
- it already ran, so there is no command to issue
- fail (`sidecar exit` > 0) → findings exist; report them and continue to step 1
- success (`sidecar exit` = 0) → report the clean replay and continue to step 1
- `--strict` promotes warnings to errors and `--keep` preserves scratch; the block passes both
1. read the two tiers differently, because they carry different weight
- a tier 1 failure is measured, not inferred: the hook was fed that exact string and answered
wrongly. an effect labelled `hook` that came back silent is a hole in the guard
- an effect labelled `none` that came back denied is over-blocking, which costs real work
- a tier 2 finding is structural: it reports what the files literally say, never what the
matcher would do, so read it as a lead rather than a verdict
- `no deny rule names X, and an allow wildcard covers it` is the one to act on first: that
command is auto-