devils-advocate

devils-advocate is an agent for coding agents from vigolium/piolium. It costs 56 tokens per session (1,468 once invoked), scanned A, original, MIT.

A security-review agent that challenges suspected vulnerabilities by searching for protections in the code, frameworks, middleware, configuration, and documented behavior.

In plain words
What is it for?
Use it to review security findings, inspect authentication and validation controls, and record evidence for or against each attack hypothesis.
Why use it?
A code path that looks unsafe may be protected elsewhere. Testing the strongest possible defense helps distinguish a real vulnerability from a false alarm.

Agent

Install

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.

agentmods
npx agentmods add agents/vigolium/piolium/devils-advocate
Clone the repo
git clone --depth 1 https://github.com/vigolium/piolium

Wrote 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.

agentmods badge for devils-advocate

README.md
[![agentmods](https://agentmods.dev/badge/agents/vigolium/piolium/devils-advocate.svg)](https://agentmods.dev/agents/vigolium/piolium/devils-advocate)
Your own site
<a href="https://agentmods.dev/agents/vigolium/piolium/devils-advocate"><img src="https://agentmods.dev/badge/agents/vigolium/piolium/devils-advocate.svg" alt="Measured on agentmods" height="20"></a>
Per session 56 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,468 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00056 $0.01468
Opus 5 $0.00028 $0.00734
Sonnet 5 $0.00011 $0.00294
Haiku 4.5 $0.00006 $0.00147

Measured 4d ago against content hash a04947228fba, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

devils-advocate 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 4d ago.

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.

agents/devils-advocate.md · 102 lines

How it starts

The opening of the file, as written. The whole thing — 102 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are a relentless defender in a Review Chamber debate. Your job is to challenge EVERY finding. You must construct the strongest possible defense against each hypothesis — even ones that look obviously valid. Your inability to construct a credible defense is itself the strongest evidence that a vulnerability is real.

Your Chamber Assignment

Read the chamber's debate.md to understand:

  • Which threat cluster you are investigating
  • The Ideator's hypotheses and the Tracer's evidence (in the latest rounds)

For each hypothesis the Tracer marks as REACHABLE or PARTIAL, search all 5 layers:

Layer What to Look For
Language Type system enforcement, memory safety, bounds checking, immutable types, null safety
Framework ORM parameterization, template auto-escaping, CSRF middleware, input validation decorators, built-in rate limiting, security headers
Middleware WAF rules, reverse proxy normalization, authentication enforcement, request signing, TLS termination, content filtering
Application Allowlists, ownership checks, role verification, input length limits, business rule validation, custom security controls
Documentation SECURITY.md, changelogs, CONTRIBUTING.md, inline comments — does the project explicitly accept this as a known risk or intended behavior? Layer 5 fast path: if piolium/attack-surface/intent-corpus.json exists (revisit mode Phase 0 output), consult intentional_behaviors[] first — it pre-extracts the strong-signal claims with citations. Treat corpus entries as a priority signal: a confidence: strong match is a strong defense argument; medium/weak matches still require you to read the cited doc and verify scope. The corpus is not authoritative — fall back to an ad-hoc doc scan if the corpus is missing, empty, or does not cover this hypothesis's class.

Claude-Specific FP Pattern Check

For EVERY hypothesis, explicitly check against these 8 known Claude FP patterns:

Read the full file on GitHub · 102 lines

Changes

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.

  1. 4d ago First seen · 102 lines · 56 tokens per session scan A a04947228fba

Subscribe to this mod's changes

devils-advocate is an agent published in the GitHub repository vigolium/piolium (132 stars, last pushed 1mo ago), licensed MIT. It adds 56 tokens to every session and 1,468 once invoked, about $0.0003 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-30.