SECURITY REVIEW / Trail of Bits
Rust review dedup judge
Pins the rust-review dedup judge that merges only obvious duplicates, aborts when the finding list cannot be loaded, and does not declare a shell.
“An orchestrator-spawned dedup judge whose required input is output_dir, that refuses an uncertain merge, and that must not delete finding files.”
01 / THE REASONING
Why this made the selection.
- The agents index has the c-review worker and not plugins/rust-review/agents/rust-review-dedup-judge.md.
- The file names output_dir as its input, says it is spawned only by the rust-review orchestrator, and tells itself not to merge when a required check fails and not to delete a finding file.
02 / THE REVIEW RECORD
What we actually inspected.
Source review has boundaries.
A clear record is more useful than a “safe” badge.
Material inspected
- plugins/rust-review/agents/rust-review-dedup-judge.md
- README.md
- LICENSE
- Round 2: pinned definition, output contract and permission/dependency boundaries reread on 2026-10-14
- plugins/rust-review/skills/rust-review/SKILL.md (selected input/output and dependency-contract sections; not a full implementation audit)
Our findings
- The description says the judge is spawned by the rust-review skill orchestrator only. The inputs section names output_dir as the absolute path to the run directory.
- The prime directive says when in doubt, do not merge. If Glob and a direct read of the canonical index both fail, the file says to abort with one stated line.
- Tools are Read, Write, Edit, and Glob. The body says Bash, Grep, and LSP are intentionally absent, and that finding files must not be deleted.
- Tier 2 says to merge only when every listed check holds, and to leave the findings as they are if any check fails.
- An empty canonical index means zero findings; recovery without that index unions worker shards with files on disk to avoid losing unindexed findings.
- Previously absorbing primaries cannot become merged children, even when a later candidate has higher confidence, preventing orphaned alias chains.
Not established by this review
- The resource was not executed and its tools were not called.
- No findings directory was read.
- The rust-review orchestrator and the later false-positive judge were not opened.
The review applies to the material and revision named here. A newer upstream release can change its behavior.
03 / PUT IT TO WORK
Use the role in your project.
DOCUMENTED COMMAND
/plugin marketplace add trailofbits/skills Copying does not execute this command. It may retrieve a newer version than the reviewed source.
- The README's Claude Code section is that line, then /plugin menu to browse plugins.
- The same README names rust-review as the Rust security-review plugin in the plugin table. The marketplace command does not install that plugin by itself.
- The Codex section uses codex plugin marketplace add trailofbits/skills and a placeholder plugin name, so that line is not install.command.
- Use the matching review schema, preserve all files and verify merge references, counts and rerun behavior before downstream filtering.
Before you start
- Claude Code or Codex marketplace support
- The skill orchestrator that spawns this agent
04 / FOLLOW THE EVIDENCE
The source trail.
Our notes are separate from the original resource.
Check upstream before adopting a new version.
- rust-review-dedup-judge ↗Checked
https://github.com/trailofbits/skills/blob/8e54050ae63c2f62224c35b1616efe71865b4777/plugins/rust-review/agents/rust-review-dedup-judge.md
Supports: orchestrator-only spawn, doubt rule, and no delete
- Repository README ↗Checked
https://github.com/trailofbits/skills/blob/8e54050ae63c2f62224c35b1616efe71865b4777/README.md
Supports: marketplace install line and rust-review row
- Repository LICENSE ↗Checked
https://github.com/trailofbits/skills/blob/8e54050ae63c2f62224c35b1616efe71865b4777/LICENSE
Supports: Attribution-ShareAlike 4.0 International
https://github.com/trailofbits/skills/blob/8e54050ae63c2f62224c35b1616efe71865b4777/plugins/rust-review/skills/rust-review/SKILL.md
Supports: Dependency setup and source-review boundary