/re-audit
Fix-review / re-audit. Takes a prior audit report + the current tree and classifies every prior finding FIXED / PARTIALLY-FIXED / STILL-OPEN / REGRESSED / ACKNOWLEDGED / DISPUTED (re-running Rule 5b on the fix, citing the remediation commit/PR hash), audits the changed surface
> /plugin marketplace add solanabr/auditor-skill> /plugin install auditor@auditor
Command definition
re-audit.mdname: auditor:re-audit
description: Fix-review / re-audit. Takes a prior audit report + the current tree and classifies every prior finding FIXED / PARTIALLY-FIXED / STILL-OPEN / REGRESSED / ACKNOWLEDGED / DISPUTED (re-running Rule 5b on the fix, citing the remediation commit/PR hash), audits the changed surface for NEW findings via the diff-audit path, and runs a sibling-patch-propagation sweep for un-patched copies of every fixed anti-pattern. Emits a finding-diff.
argument-hint: "[prior-report] [base..head] [--strict]"
allowed-tools:
- Read
- Grep
- Glob
- Task
- Edit(/audit_*/**)
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/rundir.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/git-ro.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/recipes/lock-delta.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/recipes/web3js-history.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-scan" --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" warm --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" regressions --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/deps.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/sast.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/probe.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/target.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/templates/poc/run.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/rpc-read.sh" *)'
- Skill(auditor:audit-report *)auditor-skill — Fix Review / Re-Audit
**Arguments:** $ARGUMENTS
Re-audit a codebase after a fix round. **Input:** a prior `audit_<n>/REPORT.md` (arg 1) and the current tree; the delta range is `base..head` (arg 2, default `main..HEAD` — the fix commits). Read `OUTPUT-RULES.md` first (severity 1-10, the **Rule 5b** gate). This is a fix review, not a fresh audit: it reuses the prior report as the baseline and reports what changed.
*(Precedents: Zenith's and Certora's fix reviews, Certora's and Trail of Bits' variant analysis, and Neodyme's differential fuzzing; see `references/audit-lifecycle/firm-coverage.md`.)*
Run each bundled tool as a Bash call of its own, from the working directory, exactly in the form given here: its quoted absolute path first, with nothing in front (no `bash`, no `cd`, no `VAR=value`), then its arguments, every value you fill in written out literally. Join no other command to it with `;` or `&&`, pipe it only into `grep`, `head`, `tail` or `wc`, and put no `$` or backtick anywhere in the line, inside quotes too: Claude Code asks about any command that holds one, whatever its allow rules say. Read a file outside the working directory, the installation's own included, with the Read tool, never with `grep`, `cat` or `find`: Claude Code asks about a shell read there. Give each runner call (`run.sh`, `target.sh`, `deps.sh`, `sast.sh`) the Bash tool's longest timeout, in the foreground, never with `run_in_background`: a call that moves to the background loses these pre-approvals, and so does the turn its completion starts. The `allowed-tools` above pre-approve exactly these forms, and the agents and the report skill you start in this turn run under them; anything else asks, and in a non-interactive run (`claude -p`) it is denied: name the tool as unavailable, and why, in `RE-AUDIT.md`, and go on. This command's pre-approvals last for the turn that invoked it, so spawn every agent in the foreground and wait for its result, never with `run_in_background`; while fork mode is on and background tasks are allowed, as by default in interactive sessions, Claude Code cannot wait and runs the agent in the background. If the user sends a message before the run ends, or an agent's result arrives in a later turn, first invoke this command again through the Skill tool as `auditor:re-audit --resume <step> audit_<n+1>` (and `--strict` when the user's arguments held it), run step 0 again, and go on from that step without repeating the other finished ones. That invocation asks unless the user-level rules in `docs/permissions-and-isolation.md` (Turns and resuming) are set: the human may answer "Yes", or "Yes, and don't ask again", whose rule goes into this repository's `.claude/settings.local.json`, which step 0 does not refuse while git does not track it (outside a git repository strict mode still refuses it, so answer "Yes" there).
Steps
0. **Preflight — before anything reads the working tree or an input.** Run `"${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh"`; when the user's arguments hold `--strict`, run `"${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh" --strict` instead. Its first line names the mode, default or strict (`OUTPUT-RULES.md` Rule 11f): state it in the report's Coverage & Limitations. In default mode it refuses only what could hang or confuse its own checks (a named pipe or device in a `.git`, a `.git` file over 16 KiB, a line end in a name there, a git config with more than 64 includes; Rule 11e lists them all), a bad argument, a bad value of one of its own variables, and a run from a folder that contains the installation. What strict mode would refuse besides (project config, config under this plugin's names, a link out of the tree, a linked worktree) is a `preflight: note:` line. Copy each distinct note into Coverage & Limitations once, as it stands, and go on; when one says Claude Code loads project config, tell the user once that it loaded with this session, unless the session was started with the strict launch line, and that strict mode is for a repository they do not trust: nothing in the repository can turn strict mode off when Claude Code starts with the strict launch line, or with `AUDITOR_STRICT=1` in managed settings, while started any other way the repository's own settings (hooks, `env`, `CLAUDE_ENV_FILE`) apply first and can switch it off (Rule 11f). On a refu
Read more
name: auditor:re-audit
description: Fix-review / re-audit. Takes a prior audit report + the current tree and classifies every prior finding FIXED / PARTIALLY-FIXED / STILL-OPEN / REGRESSED / ACKNOWLEDGED / DISPUTED (re-running Rule 5b on the fix, citing the remediation commit/PR hash), audits the changed surface for NEW findings via the diff-audit path, and runs a sibling-patch-propagation sweep for un-patched copies of every fixed anti-pattern. Emits a finding-diff.
argument-hint: "[prior-report] [base..head] [--strict]"
allowed-tools:
- Read
- Grep
- Glob
- Task
- Edit(/audit_*/**)
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/rundir.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/git-ro.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/recipes/lock-delta.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/recipes/web3js-history.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-scan" --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" warm --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" regressions --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/deps.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/sast.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/probe.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/target.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/templates/poc/run.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/rpc-read.sh" *)'
- Skill(auditor:audit-report *)auditor-skill — Fix Review / Re-Audit
**Arguments:** $ARGUMENTS
Re-audit a codebase after a fix round. **Input:** a prior `audit_<n>/REPORT.md` (arg 1) and the current tree; the delta range is `base..head` (arg 2, default `main..HEAD` — the fix commits). Read `OUTPUT-RULES.md` first (severity 1-10, the **Rule 5b** gate). This is a fix review, not a fresh audit: it reuses the prior report as the baseline and reports what changed.
*(Precedents: Zenith's and Certora's fix reviews, Certora's and Trail of Bits' variant analysis, and Neodyme's differential fuzzing; see `references/audit-lifecycle/firm-coverage.md`.)*
Run each bundled tool as a Bash call of its own, from the working directory, exactly in the form given here: its quoted absolute path first, with nothing in front (no `bash`, no `cd`, no `VAR=value`), then its arguments, every value you fill in written out literally. Join no other command to it with `;` or `&&`, pipe it only into `grep`, `head`, `tail` or `wc`, and put no `$` or backtick anywhere in the line, inside quotes too: Claude Code asks about any command that holds one, whatever its allow rules say. Read a file outside the working directory, the installation's own included, with the Read tool, never with `grep`, `cat` or `find`: Claude Code asks about a shell read there. Give each runner call (`run.sh`, `target.sh`, `deps.sh`, `sast.sh`) the Bash tool's longest timeout, in the foreground, never with `run_in_background`: a call that moves to the background loses these pre-approvals, and so does the turn its completion starts. The `allowed-tools` above pre-approve exactly these forms, and the agents and the report skill you start in this turn run under them; anything else asks, and in a non-interactive run (`claude -p`) it is denied: name the tool as unavailable, and why, in `RE-AUDIT.md`, and go on. This command's pre-approvals last for the turn that invoked it, so spawn every agent in the foreground and wait for its result, never with `run_in_background`; while fork mode is on and background tasks are allowed, as by default in interactive sessions, Claude Code cannot wait and runs the agent in the background. If the user sends a message before the run ends, or an agent's result arrives in a later turn, first invoke this command again through the Skill tool as `auditor:re-audit --resume <step> audit_<n+1>` (and `--strict` when the user's arguments held it), run step 0 again, and go on from that step without repeating the other finished ones. That invocation asks unless the user-level rules in `docs/permissions-and-isolation.md` (Turns and resuming) are set: the human may answer "Yes", or "Yes, and don't ask again", whose rule goes into this repository's `.claude/settings.local.json`, which step 0 does not refuse while git does not track it (outside a git repository strict mode still refuses it, so answer "Yes" there).
Steps
0. **Preflight — before anything reads the working tree or an input.** Run `"${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh"`; when the user's arguments hold `--strict`, run `"${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh" --strict` instead. Its first line names the mode, default or strict (`OUTPUT-RULES.md` Rule 11f): state it in the report's Coverage & Limitations. In default mode it refuses only what could hang or confuse its own checks (a named pipe or device in a `.git`, a `.git` file over 16 KiB, a line end in a name there, a git config with more than 64 includes; Rule 11e lists them all), a bad argument, a bad value of one of its own variables, and a run from a folder that contains the installation. What strict mode would refuse besides (project config, config under this plugin's names, a link out of the tree, a linked worktree) is a `preflight: note:` line. Copy each distinct note into Coverage & Limitations once, as it stands, and go on; when one says Claude Code loads project config, tell the user once that it loaded with this session, unless the session was started with the strict launch line, and that strict mode is for a repository they do not trust: nothing in the repository can turn strict mode off when Claude Code starts with the strict launch line, or with `AUDITOR_STRICT=1` in managed settings, while started any other way the repository's own settings (hooks, `env`, `CLAUDE_ENV_FILE`) apply first and can switch it off (Rule 11f). On a refu
Production-grade security audit for any codebase, powered by AI agents. 20 checklists · 1,446 verification items · 140 known attack vectors · executable PoCs + fix patches A full audit-firm lifecycle (automated + interactive) · Benchmarked against CertiK, SOC
Other commands on auditor.
More commands from other plugins.
audit
CommandAudit a file, directory, or whole repo for insecure default configuration: fallback secrets, default credentials, fail-open…
agt-check
CommandCheck text against AGT prompt-injection, context-poisoning, and MCP threat detectors.
arsenal
CommandShow which external bug-bounty tools are installed on this machine and print install hints for the missing ones. Curated from…

