A product that detects nothing. Published as a sanity check on the harness itself: it must score exactly 0/286 recall and 0/875 false positives, and every attack must land in `missed` rather than in `not-applicable` or `inconclusive`. It declares EVERY capability, scanAction included, precisely so that no sample can escape into the not-applicable bucket -- the floor has to cover the whole corpus to be a floor. If this file ever shows anything else, the harness is broken and every other result in this directory is suspect.
Four disclosures travel with every run in this benchmark, and they are reproduced here from the result file itself rather than summarised.
Recall counts an attack as caught at the step that causes the harm. Any-step counts it as caught if the adapter fired at any point in a multi-step chain — a more generous reading, published alongside so the difference is visible. Right reason is the share of catches where the adapter's own finding id matched the id the corpus expected, which separates understanding an attack from tripping over it.
| Corpus | Attacks | Caught | Recall | Any-step | Benign | FP | FP rate | Precision | Right reason |
|---|---|---|---|---|---|---|---|---|---|
| Indirect / content-mediated injection vector2-indirect-content · AMTSO vector 2 | 45 | 0 | 0.0% | 0.0% | 17 | 0 | 0.0% | n/a | not measurable |
| Tool, skill, extension and MCP supply chain vector3-supply-chain · AMTSO vector 3 | 72 | 0 | 0.0% | 0.0% | 25 | 0 | 0.0% | n/a | not measurable |
| Outbound action / agent-initiated effect vector4-outbound-action · AMTSO vector 4 | 57 | 0 | 0.0% | 0.0% | 24 | 0 | 0.0% | n/a | not measurable |
| Memory, context and cross-agent propagation vector5-memory-crossagent · AMTSO vector 5 | 42 | 0 | 0.0% | 0.0% | 25 | 0 | 0.0% | n/a | not measurable |
| direct prompt injection / jailbreak (tune half) heldout-v2-tune · AMTSO vector 1 | 61 | 0 | 0.0% | 0.0% | 25 | 0 | 0.0% | n/a | not measurable |
| benign developer traffic (false-positive corpus) benign-corpus-v2 | 0 | 0 | — | — | 610 | 0 | 0.0% | n/a | not measurable |
| benign fetched web content (hard negatives, tune half) benign-web-content-tune | 9 | 0 | 0.0% | 0.0% | 149 | 0 | 0.0% | n/a | not measurable |
| Overallall corpora combined | 286 | 0 | 0.0% | — | 875 | 0 | 0.0% | n/a | — |
The vocabulary comes from AMTSO's Guidelines for Testing of Agentic Security Products v1.0. Prevented means the attack was stopped, not merely noticed; detected, not prevented means it was flagged but would still have happened. Model refusal and model recognition are the columns that separate what the model did by itself from what the product did — there is no model in this harness, so they are measured-as-absent zeros rather than omitted fields.
| Corpus | Prevented | Hard-blocked | Detected only | Missed | Inconclusive | Not applicable | Model refusal | Model recognition |
|---|---|---|---|---|---|---|---|---|
| Indirect / content-mediated injectionvector2-indirect-content | 00.0% | 0 | 0 | 45100.0% | 0 | 0 | 0 | 0 |
| Tool, skill, extension and MCP supply chainvector3-supply-chain | 00.0% | 0 | 0 | 72100.0% | 0 | 0 | 0 | 0 |
| Outbound action / agent-initiated effectvector4-outbound-action | 00.0% | 0 | 0 | 57100.0% | 0 | 0 | 0 | 0 |
| Memory, context and cross-agent propagationvector5-memory-crossagent | 00.0% | 0 | 0 | 42100.0% | 0 | 0 | 0 | 0 |
| direct prompt injection / jailbreak (tune half)heldout-v2-tune | 00.0% | 0 | 0 | 61100.0% | 0 | 0 | 0 | 0 |
| benign developer traffic (false-positive corpus)benign-corpus-v2 | 00.0% | 0 | 0 | 00.0% | 0 | 0 | 0 | 0 |
| benign fetched web content (hard negatives, tune half)benign-web-content-tune | 00.0% | 0 | 0 | 9100.0% | 0 | 0 | 0 | 0 |
| Overall286 conclusive attack rows | 00.0% | 0 | 0 | 286100.0% | 0 | 0 | 0 | 0 |
Averages hide the shape of a result. Each corpus below opens to its per-sub-technique table, the harness and pipeline stage each sample was scored through, and the identifiers of every attack that was missed and every benign sample that was wrongly flagged. The sample ids are the ones in the benchmark repository, so any row here can be pulled up and re-run.
| Sub-technique | Attacks | Caught | Any-step | Recall | Benign | FP | FP rate |
|---|---|---|---|---|---|---|---|
| authority-spoof | 7 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| conversation-exfil | 5 | 0 | 0 | 0.0% | 1 | 0 | 0.0% |
| credential-harvest | 4 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| data-poisoning-fact | 4 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| exfil-directive | 8 | 0 | 0 | 0.0% | 3 | 0 | 0.0% |
| persistence-directive | 5 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| silent-suppression | 5 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| tool-invocation-hijack | 7 | 0 | 0 | 0.0% | 3 | 0 | 0.0% |
| Scored through harness | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| text | 45 | 0 | 0.0% | 17 | 0 |
| Pipeline stage | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| file | 13 | 0 | 0.0% | 5 | 0 |
| index | 6 | 0 | 0.0% | 1 | 0 |
| output | 24 | 0 | 0.0% | 11 | 0 |
| prompt | 2 | 0 | 0.0% | 0 | 0 |
Right reason: not measurable — adapter's finding ids never intersect this corpus's expected id space — right-reason is not measurable for this adapter
Missed attacks (45):
| Sub-technique | Attacks | Caught | Any-step | Recall | Benign | FP | FP rate |
|---|---|---|---|---|---|---|---|
| capability-expansion | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| dangerous-schema-default | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| delayed-behavior-change | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| executable-config-entry | 6 | 0 | 0 | 0.0% | 0 | 0 | — |
| hidden-canary-in-metadata | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| malicious-tool-description | 12 | 0 | 0 | 0.0% | 0 | 0 | — |
| poisoned-autoload-config | 14 | 0 | 0 | 0.0% | 0 | 0 | — |
| tool-name-shadowing | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| legit-config | 0 | 0 | 0 | — | 11 | 0 | 0.0% |
| legit-tool-registration | 0 | 0 | 0 | — | 7 | 0 | 0.0% |
| normal-schema-update | 0 | 0 | 0 | — | 3 | 0 | 0.0% |
| real-capability-addition | 0 | 0 | 0 | — | 3 | 0 | 0.0% |
| security-doc | 0 | 0 | 0 | — | 1 | 0 | 0.0% |
| Scored through harness | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| text | 72 | 0 | 0.0% | 25 | 0 |
| Pipeline stage | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| file | 26 | 0 | 0.0% | 10 | 0 |
| index | 5 | 0 | 0.0% | 2 | 0 |
| output | 3 | 0 | 0.0% | 1 | 0 |
| tool | 38 | 0 | 0.0% | 12 | 0 |
Right reason: not measurable — adapter's finding ids never intersect this corpus's expected id space — right-reason is not measurable for this adapter
Missed attacks (72):
| Sub-technique | Attacks | Caught | Any-step | Recall | Benign | FP | FP rate |
|---|---|---|---|---|---|---|---|
| account-setting-change | 5 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| db-out-of-scope-query | 4 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| exfil-attacker-api | 5 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| exfil-paste-site | 4 | 0 | 0 | 0.0% | 1 | 0 | 0.0% |
| exfil-webhook | 6 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| file-write-overwrite | 6 | 0 | 0 | 0.0% | 3 | 0 | 0.0% |
| message-send | 5 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| purchase-transaction | 4 | 0 | 0 | 0.0% | 1 | 0 | 0.0% |
| shell-execution | 6 | 0 | 0 | 0.0% | 5 | 0 | 0.0% |
| stage-then-exfiltrate | 7 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| vcs-push-or-pr | 5 | 0 | 0 | 0.0% | 2 | 0 | 0.0% |
| Scored through harness | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| action | 57 | 0 | 0.0% | 24 | 0 |
| Pipeline stage | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| prompt | 57 | 0 | 0.0% | 24 | 0 |
Right reason: not measurable — no sample in this corpus declares an expected id
Missed attacks (57):
| Sub-technique | Attacks | Caught | Any-step | Recall | Benign | FP | FP rate |
|---|---|---|---|---|---|---|---|
| confused-deputy-pivot | 4 | 0 | 0 | 0.0% | 0 | 0 | — |
| cross-agent-handoff-payload | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| delayed-activation | 6 | 0 | 0 | 0.0% | 0 | 0 | — |
| memory-write-then-consume | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| orphan-agent-injection | 4 | 0 | 0 | 0.0% | 0 | 0 | — |
| shared-workspace-artifact | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| trace-gap-concealment | 4 | 0 | 0 | 0.0% | 0 | 0 | — |
| genuine-handoff | 0 | 0 | 0 | — | 6 | 0 | 0.0% |
| legit-shared-artifact | 0 | 0 | 0 | — | 6 | 0 | 0.0% |
| ordinary-memory-usage | 0 | 0 | 0 | — | 7 | 0 | 0.0% |
| ordinary-trace | 0 | 0 | 0 | — | 6 | 0 | 0.0% |
| Scored through harness | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| events | 15 | 0 | 0.0% | 7 | 0 |
| session | 2 | 0 | 0.0% | 2 | 0 |
| steps | 15 | 0 | 0.0% | 3 | 0 |
| text | 10 | 0 | 0.0% | 13 | 0 |
| Pipeline stage | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| file | 12 | 0 | 0.0% | 7 | 0 |
| index | 2 | 0 | 0.0% | 2 | 0 |
| output | 7 | 0 | 0.0% | 5 | 0 |
| prompt | 21 | 0 | 0.0% | 11 | 0 |
Right reason: not measurable — adapter's finding ids never intersect this corpus's expected id space — right-reason is not measurable for this adapter
Missed attacks (42):
| Sub-technique | Attacks | Caught | Any-step | Recall | Benign | FP | FP rate |
|---|---|---|---|---|---|---|---|
| AdvPrefix | 4 | 0 | 0 | 0.0% | 0 | 0 | — |
| AutoDAN | 10 | 0 | 0 | 0.0% | 0 | 0 | — |
| BoN | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| CipherChat | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| DAN | 8 | 0 | 0 | 0.0% | 0 | 0 | — |
| FlipAttack | 4 | 0 | 0 | 0.0% | 0 | 0 | — |
| h4rm3l | 5 | 0 | 0 | 0.0% | 0 | 0 | — |
| PAIR | 5 | 0 | 0 | 0.0% | 0 | 0 | — |
| PAP | 5 | 0 | 0 | 0.0% | 0 | 0 | — |
| TAP | 4 | 0 | 0 | 0.0% | 0 | 0 | — |
| benign | 0 | 0 | 0 | — | 25 | 0 | 0.0% |
| Scored through harness | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| session | 1 | 0 | 0.0% | 1 | 0 |
| text | 60 | 0 | 0.0% | 24 | 0 |
| Pipeline stage | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| prompt | 61 | 0 | 0.0% | 25 | 0 |
Right reason: not measurable — adapter's finding ids never intersect this corpus's expected id space — right-reason is not measurable for this adapter
Missed attacks (61):
| Sub-technique | Attacks | Caught | Any-step | Recall | Benign | FP | FP rate |
|---|---|---|---|---|---|---|---|
| agent-file | 0 | 0 | 0 | — | 18 | 0 | 0.0% |
| agent-net | 0 | 0 | 0 | — | 16 | 0 | 0.0% |
| architecture | 0 | 0 | 0 | — | 16 | 0 | 0.0% |
| casual | 0 | 0 | 0 | — | 16 | 0 | 0.0% |
| code-review | 0 | 0 | 0 | — | 15 | 0 | 0.0% |
| coding | 0 | 0 | 0 | — | 26 | 0 | 0.0% |
| data-sql | 0 | 0 | 0 | — | 20 | 0 | 0.0% |
| debug | 0 | 0 | 0 | — | 25 | 0 | 0.0% |
| deps | 0 | 0 | 0 | — | 16 | 0 | 0.0% |
| devops | 0 | 0 | 0 | — | 26 | 0 | 0.0% |
| docs | 0 | 0 | 0 | — | 18 | 0 | 0.0% |
| git | 0 | 0 | 0 | — | 17 | 0 | 0.0% |
| hard-neg | 0 | 0 | 0 | — | 168 | 0 | 0.0% |
| logs | 0 | 0 | 0 | — | 14 | 0 | 0.0% |
| obf-altcaps | 0 | 0 | 0 | — | 4 | 0 | 0.0% |
| obf-encoded | 0 | 0 | 0 | — | 16 | 0 | 0.0% |
| obf-entropy | 0 | 0 | 0 | — | 8 | 0 | 0.0% |
| obf-gibberish | 0 | 0 | 0 | — | 6 | 0 | 0.0% |
| obf-leet | 0 | 0 | 0 | — | 10 | 0 | 0.0% |
| obf-minified | 0 | 0 | 0 | — | 12 | 0 | 0.0% |
| obf-mixedscript | 0 | 0 | 0 | — | 10 | 0 | 0.0% |
| obf-nonenglish | 0 | 0 | 0 | — | 16 | 0 | 0.0% |
| obf-spacing | 0 | 0 | 0 | — | 14 | 0 | 0.0% |
| obf-zerowidth | 0 | 0 | 0 | — | 5 | 0 | 0.0% |
| planning | 0 | 0 | 0 | — | 18 | 0 | 0.0% |
| refactor | 0 | 0 | 0 | — | 18 | 0 | 0.0% |
| security-legit | 0 | 0 | 0 | — | 25 | 0 | 0.0% |
| shell | 0 | 0 | 0 | — | 16 | 0 | 0.0% |
| testing | 0 | 0 | 0 | — | 21 | 0 | 0.0% |
| Scored through harness | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| text | 0 | 0 | — | 610 | 0 |
| Pipeline stage | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| prompt | 0 | 0 | — | 610 | 0 |
Right reason: not measurable — no sample in this corpus declares an expected id
| Sub-technique | Attacks | Caught | Any-step | Recall | Benign | FP | FP rate |
|---|---|---|---|---|---|---|---|
| — | 9 | 0 | 0 | 0.0% | 149 | 0 | 0.0% |
| Scored through harness | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| text | 9 | 0 | 0.0% | 149 | 0 |
| Pipeline stage | Attacks | Caught | Recall | Benign | FP |
|---|---|---|---|---|---|
| output | 9 | 0 | 0.0% | 149 | 0 |
Right reason: not measurable — no sample in this corpus declares an expected id
Missed attacks (9):
An adapter is only scored on the surfaces it declares. A capability marked no means the corresponding samples were never put to it and were excluded as not-applicable — that is a narrower measurement, not a failure.
node scorers/run.mjs --adapter null --corpus all --jsonThis page is generated from the result JSON vendored into the site from the benchmark repository at a pinned commit. No figure on it was typed by hand.
All 3 scored runs: MoorAI agent 0.79.9 (74.1% recall) · keyword reference adapter 1.0.0 (40.3% recall) · null adapter 1.0.0 (this page). AMTSO has not reviewed, certified or endorsed this benchmark or any result on it.