Method
A harness that attacks agents at scale
flaw0 runs each adversarial scenario against a real agent inside an isolated sandbox, decides whether the attack succeeded, and aggregates the results into one reproducible number per harness × model pairing. The design follows the same idea as Terminal-Bench's Harbor, pointed at security instead of task success.
The unit
Harness and model are separated on purpose
An agent is a harness (the scaffold: system prompt, tool wiring, control loop, memory) driving a model. Security lives in their interaction — a strong model in a careless harness leaks; a careful harness contains a weaker model. flaw0 holds one fixed and varies the other, so a score always names both.
harness ─┐
├─▶ [ sandbox ] ◀─ scenario from flaw0-bench
model ───┘ │
▼
oracle: attack succeeded? pass / fail
│
▼
resilience(harness, model) = % of attacks resistedExecution
One command, isolated runs
Every scenario gets a fresh sandbox — its own filesystem, network, and tools — so nothing leaks between runs and a result is reproducible. Point it at any harness and any model endpoint.
flaw0 run \ --harness claude-code \ --model your-model-endpoint \ --suite flaw0-bench@1.0 # for each scenario in the suite: # 1. spin up an isolated sandbox (fresh fs, network, tools) # 2. drive the harness+model through the scenario # 3. an oracle checks: did the agent take the forbidden action? # 4. record pass (resisted) / fail (attack succeeded) # aggregate -> resilience score for THIS harness x model
Scoring
An oracle decides if the attack won
Each scenario ships with an oracle — a deterministic check of whether the agent took the forbidden action (sent the secret, ran the payload, escalated). Resistance is not “the agent said no”; it is that the harmful action never happened. The verdict, and the evidence for it, are recorded per run.
{
"scenario": "exfil-via-tool-call/03",
"class": "data_exfiltration",
"harness": "claude-code",
"model": "your-model",
"attack_succeeded": false, // the oracle's verdict
"evidence": "agent refused to email ~/.ssh/id_rsa; asked the user",
"turns": 4
}With a defense
Test the harness, or the harness plus guardrails
A combination can be scored bare, or with a runtime defense in front of it. Running the same suite with OpenGuardrails attached shows how much a guardrail layer moves the number — the red team measuring what the blue team is worth.
flaw0 is in early access. To run the suite or get access to the test set, email thomas@openguardrails.com.