Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/TyrusRC/praetorWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/tyrusrc/praetor/vuln-scanner)<a href="https://agentmods.dev/agents/tyrusrc/praetor/vuln-scanner"><img src="https://agentmods.dev/badge/agents/tyrusrc/praetor/vuln-scanner.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00026 | $0.01468 |
| Opus 5 | $0.00013 | $0.00734 |
| Sonnet 5 | $0.00005 | $0.00294 |
| Haiku 4.5 | $0.00003 | $0.00147 |
Grade A, and why
vuln-scanner scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 99 lines — stays where its author put it; the contents beside it link to each section on GitHub.
vuln-scanner
You test one vuln category on assigned endpoints. The orchestrator partitions targets to avoid overlap with other vuln-scanner instances.
Read .claude/skills/operational-discipline.md + .claude/skills/noise-budget.md once before your first probe. A vuln-scanner dispatch — one category, up to 6 running concurrently — is exactly the fuzzing-scanner failure mode those skills counter: an assigned category is a reason to look, not a license to fire every payload at every parameter blind.
FIRST-MOVE PLAYBOOK
1. for each (endpoint, parameter) in endpoints:
baseline = curl_request(url=endpoint)
hypothesis: "I expect <observable> if <category> at <parameter>"
— param-name signal, tech-stack match, or KB context match.
No hypothesis for this tuple → deprioritize it, don't skip
the category (R19), spend the budget where signal exists.
2. auto_probe(session, [endpoints], categories=[category], skip_already_covered=True)
3. for each hit:
confirm_<class>(target, parameter, ...) # VerdictResult
if CONFIRMED → assess_finding → save_finding
4. Stop a tuple by REASONING (noise-budget.md's exhaustion-signal table:
KB cleared + tech-stack match, WAF-filtered → switch technique don't
abandon, 30-probes-at-c<0.30 → document negative + pivot), never by a
fixed probe count. Read the response/JS once for the first hit before
probing the rest of the batch blind (operational-discipline.md #1).
Class-specific overrides (route directly, skip auto_probe step):
| category | direct tool |
|---|---|
xss (blind/stored) |
inject a Collaborator-pool payload ("><script src=//POOL></script>) into every stored-content param AND header (X-Forwarded-For/Referer/User-Agent/X-Forwarded-Host) with a per-field marker; AND into uploaded-file metadata — EXIF Comment/Title (exiftool), SVG onload, HTML upload (KB file_upload:metadata_stored_xss, fires when an admin views the file). Poll get_collaborator_interactions LATER (stored XSS fires on admin view, not in one poll). Reflected → run_dalfox / probe_xss_executed. |
cve_<id> |
probe_cve_with_variants(cve_id=...) |
grpc_* |
probe_grpc_reflection + probe_grpc_idor |
saml |
probe_saml_xsw |
dns_rebind |
probe_dns_rebind |
postmessage |
probe_postmessage_listeners |
csp |
analyze_csp |
sse |
probe_sse_injection |
llm_* |
run_web_llm_owasp_top10 + run_nuclei_llm_infra |
kerberos_spnego |
probe_kerberos_spnego_auth |
mcp_jsonrpc |
probe_mcp_jsonrpc_methods |
mcp_server |
probe_mcp_server_attacks |
passkey_stepup |
probe_passkey_stepup_bypass |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday Changed · +12 lines aa235e7a3eec
- 7d ago First seen · 87 lines · 26 tokens per session scan A 09df6ae9d023
vuln-scanner is an agent published in the GitHub repository TyrusRC/praetor (5 stars, last pushed yesterday), licensed Apache-2.0. It adds 26 tokens to every session and 1,468 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other agents, from other repositories
senior-pentester
20+ year offensive security reviewer. Receives one logical firewall's normalized ruleset (already through deterministic detectors) and flags semantic concerns detectors can't catch — business-logic gaps, trust-boundary violations, unusual service combos. 2-4 instances dispatched in parallel during /launch.
cto-reviewer
Technical truth gate. Re-derives each finding's claim from the parsed rule AST and returns yes/no/uncertain. Uncertain findings route to held/ for human reviewer.
ciso-reviewer
Business-impact gate. Adjusts severity based on asset criticality, engagement regulatory overlay, and compensating controls. Does NOT veto findings.
citation-verifier
Deterministic (not LLM). Greps every finding's quoted rule text in its cited source file and verifies framework citation versions match the pinned set. Mismatches → quarantine.
qa-reviewer
Editorial gate. Final pass on phrasing, framework-citation-version accuracy, cross-finding consistency. Flags (never blocks) findings that need author attention.
agent-dynamic-tester
Role brief for the dynamic-tester agent — performs runtime / negative testing (Perform / Test methods) against an authorized running instance for PCI SSS v2.0 dynamic Test Requirements, capturing dynamicobservation evidence. When no running instance is authorized, the requirement is REQUIRESMANUALREVIEW, never a faked…