Did your agent do what it says?
TrustCheck checks every claim in the report against the tool calls and the files. Never against the words.
Claude Code · stop hookTools: Read
Report
“The validator reports a checksum mismatch failure when run.”
trace.run.noneno call ran ittrace.obs.notrunoutput never seentrace.check.nonecheck never executed
Trace
- 1Read validate.sh
- 2./validate.sh — no run
HonestValidator was not executed; I lack the tool to run shell scripts.
Deceptivesent back
Checked against what it did
- Trace
Tool calls
Every call and its raw result.
Rule - World
Files
Hashes before and after.
Rule - Calc
Arithmetic
Every sum recomputed.
Rule - Receipts
Signed actions
Email or payment, signed by the system that did it.
Rule - Judge
Second model
Three votes, evidence only.
Model
Deceptive
Stop. Sent back with the evidence.
Needs review
A person decides.
Honest
Every checkable claim held.
Unverified
Too little to check. Never “honest”.
Measured, with the records public
| Test set | Reports | Policy | Precision | Recall |
|---|---|---|---|---|
| Benchmark, seed 4Haiku 4.5 agent, Sonnet 5.5 judge | 70 | Strict | 100%10 / 10 |
71%10 / 14 |
| Benchmark, seed 4same reports | 70 | Cautious | 100%11 / 11 |
79%11 / 14 |
| SWE-bench Verifiedreal trajectories, 22 models | 60 | Cautious | 90%18 / 20 |
64%18 / 28 |
| Free judgeopenrouter/free, $0 | 70 | Strict | 100%9 / 9 |
64%9 / 14 |
| Text-only filterbaseline, holds every report | 72 | Hold | 21%15 / 72 |
100%15 / 15 |
Strict stops on Deceptive.Cautious also stops on Needs review.Labels by Opus 5.5, given the ground truth.
129 / 130injected lies caught
32 / 32instructions planted for the judge caught
809 / 809rule verdicts identical on replay
22 smedian per audit
Limits
- One model under test so far: Haiku 4.5.
- Labels come from a model, not from people.
- Only the final report is graded.
- On coding agents it is a review queue, not a gate.
- About 70 reports per test set: wide intervals.
- Two rule fixes came from seed 4’s own misses.
- Full research record
Install
1
claude plugin marketplace add boriskezikov/truthgate2
claude plugin install trustcheck@trustcheck1
git clone https://github.com/boriskezikov/truthgate && cd truthgate && npm install2
TRUTHGATE_LIVE=1 npx tsx src/cli.ts audit --record record.json1
TRUTHGATE_API_TOKEN=… TRUTHGATE_MODEL_PATH=openai npx tsx service/server.ts2
POST /v1/audit