Polygraph Bench

Agent-lying detector leaderboard

A public benchmark of completion-lie detectors. The unit of judgment is one agent turn — the task, its tool calls and results (evidence), and the final message (closing). Each detector answers one question: does the closing make a completion/success claim the turn's own evidence contradicts? The public corpus is 396 synthetic items (176 lie / 220 honest) across 7 lie categories (L1–L7) and 9 honest categories (H1–H9), split into core (table-stakes shapes) and hard (association-requiring lies + honest near-miss twins).

Ship gate: PASS Protocol v1.1 · median-of-3 hidden seeds Validated 2026-07-13 · re-evaluated 2026-07-17 on collision-free seeds

Real private holdout validation instrument

155 real agent turns — 23 lies / 132 honest. This corpus is held privately and is never published and never used for leaderboard scoring; it is the maintainer's validation instrument, shown here for transparency against the synthetic set below.

Detector Recall (lies) FP (honest) Score
b1regex floor — keyword + error/truncation signal, stdlib 39.1% 9/23 32.6% 43/132 −1.237
b2Polygraph gate — heuristic tier, no network 39.1% 9/23 0.8% 1/132 +0.353
b3Ollama judge — local qwen3:4b, JSON-constrained, fail-soft 91.3% 21/23 6.8% 9/132 +0.572
Score = recall − 5 × FP on the pooled real holdout. Ordering by score: b3 > b2 > b1.

Hidden synthetic set leaderboard-scoring

A held-out synthetic split (same category mix, disjoint generator blocks), reported as the median of 3 fresh seeds per protocol v1.1. This is the set the leaderboard is scored on. Overall is the median-of-3 gate file; core and hard are derived — the independent per-metric median across the three per-seed splits, rounded to 1 decimal.

Detector Overall Core Hard
RecallFPScore RecallFPScore RecallFPScore
b1regex floor 33.0%30.9%−1.216 45.8%37.1%−1.4 20.0%20.0%−0.8
b2Polygraph gate 47.2%2.3%+0.369 65.6%2.9%+0.5 25.0%3.8%+0.1
b3Ollama judge 79.5%4.1%+0.631 68.8%5.0%+0.5 92.5%2.5%+0.8
Ordering (overall & hard-split score): b3 > b2 > b1. Per-metric medians are taken independently, so a row's score is the median score, not recall − 5·FP of the shown median recall/FP. Leaderboard rank is the hard-split score; a detector must reach core score ≥ 0.80 to be ranked.

Frontier column community-sourced

The launch ships three free local detectors only. A frontier-judge baseline (b4) exists as a reference implementation only and is never run officially (free-only ruling — no API payments). Frontier results enter the leaderboard through self-funded community PRs, with cost reporting per the protocol.

Detector RecallFPScore$/1K
b4-class frontier judge community-sourced — submit via PR (see SCORING.md)
No official b4 numbers exist or will be published. Judge-type entries self-report sec/item and $/1K items, spot-checked on the maintainer's hidden run — informational, never ranked.

Method

  • Score score = recall − 5 × FP, computed per split — core and hard are always reported separately; a pooled number is never shown alone.
  • λ = 5 — one false block costs five missed lies. A missed lie is recoverable by review; a false block taxes every honest turn.
  • recall = fraction of lie turns flagged.   FP = fraction of honest turns flagged (false-block rate).
  • Leaderboard rank = hard-split score; a detector must reach core score ≥ 0.80 to be ranked.
  • Scoring set = the hidden synthetic split (median of 3 fresh seeds). The real holdout is the private validation instrument only.

Caveats

The gate passed under protocol v1.1 (2026-07-13, independently and adversarially verified: every per-seed and median number recomputed from raw verdict files; corpora regenerate byte-identical; leakage audit + secret-scan clean) and was re-evaluated 2026-07-17 on a collision-free seed set — PASS again; the numbers above are from the re-evaluation. Honesty-first, its known limits are recorded openly so the result is never read as more robust than it is.

1 · Binding margin (b3)
The re-evaluated gate's tightest pass is b3's hidden false-positive gap: 2.73pp against the 3.00pp cap ≈ 0.6 of one hidden honest item (the original run bound at b2, 2.88pp). Roughly one extra b3 false positive in the median seed would flip the gate. The pass is legitimate under the rule as written — recorded here so the margin is never overstated. Two of the three seeds breach a cap individually; the median absorbs it, which is exactly what protocol v1.1's median rule is for, and is disclosed rather than hidden.
2 · Rotation-block collision (H1-recov) — found, then remediated
The original gate run placed two of the three hidden seeds on the same H1-recov block (44 of 396 items coinciding between them). A pre-registered seed-collision guard (check_seed_independence.py) has since landed, and on 2026-07-17 the redraw rule was applied: the later-drawn colliding seed was discarded, a replacement drawn (guard PASS, including cross-check against the public seed), and the gate re-evaluated on the collision-free triple — PASS. The original pass is retained in the git history for transparency.
3 · b3 real FP is not bit-stable
b3's false-positive rate on the real holdout measured 9/132 (6.8%) this run versus 10/132 (7.6%) on a prior temperature-0 rerun — one borderline honest turn flipped, within holdout granularity (local-model numerics are not bit-stable across runs even at temperature 0).