You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
audit-pass's report-location contract states that ${CLAUDE_PLUGIN_DATA} "resolves outside any target
repository". That is false by construction, not a misconfiguration: the resolution formula is
unconditional and rooted at ~.
**A run never writes into its own scan set.** If run 1 writes a report into the tree, run 2's tree is
not unchanged and the idempotence property is unfalsifiable by construction.
- The report goes under `${CLAUDE_PLUGIN_DATA}`, which resolves outside any target repository and
survives plugin updates, at `runs/<state-key>/<run-id>/findings.json`.
Restated as an absolute at SKILL.md:353:
Never writes into its own scan set without `--report-to`, and never scans what it wrote.
The omission that makes it bite: reference/exclusion-set.md:49-60 Class 4 enumerates exactly two
members — the suppression record and a redirected report. The default path is in no class.
Docs grounding
https://code.claude.com/docs/en/plugins-reference.md, fetched 2026-08-11 — "The ${CLAUDE_PLUGIN_DATA} directory resolves to ~/.claude/plugins/data/{id}/, where {id} is the plugin
identifier with characters outside a-z, A-Z, 0-9, _, and - replaced by -." No configuration
knob relocates it; no setting is documented that would.
Scope of the error, stated precisely
The sentence is true for an ordinary git repo under, say, C:/Projects/…. Its defect is that it is
stated unconditionally while a whole reachable target class falsifies it — any target at or above ~. A dotfiles repo is exactly that shape and is a plausible audit-pass target. State it as a
conditional, not as a universal.
Note this survives the non-git refusal filed separately: the residual class is a git repository rooted
at or above $HOME, so containment holds there by construction and independently of gitignore.
Grading
Severity: HIGH — it is the load-bearing premise of the read-only contract's headline property and
of assertions 2.1 and 2.4, and it fails by construction.
Defect
audit-pass's report-location contract states that${CLAUDE_PLUGIN_DATA}"resolves outside any targetrepository". That is false by construction, not a misconfiguration: the resolution formula is
unconditional and rooted at
~.Evidence at HEAD
plugins/claude-config/skills/audit-pass/reference/report-location-and-schema.md:10-14:Restated as an absolute at
SKILL.md:353:The omission that makes it bite:
reference/exclusion-set.md:49-60Class 4 enumerates exactly twomembers — the suppression record and a redirected report. The default path is in no class.
Docs grounding
https://code.claude.com/docs/en/plugins-reference.md, fetched 2026-08-11 — "The
${CLAUDE_PLUGIN_DATA}directory resolves to~/.claude/plugins/data/{id}/, where{id}is the pluginidentifier with characters outside
a-z,A-Z,0-9,_, and-replaced by-." No configurationknob relocates it; no setting is documented that would.
Scope of the error, stated precisely
The sentence is true for an ordinary git repo under, say,
C:/Projects/…. Its defect is that it isstated unconditionally while a whole reachable target class falsifies it — any target at or above
~. A dotfiles repo is exactly that shape and is a plausibleaudit-passtarget. State it as aconditional, not as a universal.
Note this survives the non-git refusal filed separately: the residual class is a git repository rooted
at or above
$HOME, so containment holds there by construction and independently of gitignore.Grading
of assertions 2.1 and 2.4, and it fails by construction.
rerun-contract.md.None of them is this sentence and none is the containment predicate. Adjacent at most.
20260811-020411-claude-config-audit-pass-report-path-inside-scan-set.md(ledger
I8, rowF1).