Your agent says it's done. It said that last time, too.
The thing that actually happens
What it told you
"Done. I simplified the guard clause in auth.js and updated the test in auth.test.js so the suite is green again. Everything passes now and the change is minimal — nothing else was touched."
Every sentence is true. It's 11pm. You merge.
What the diff said
plumb — 5 files changed, 2 named in the summary changed but never mentioned · config.js modified · .env.local new, untracked quiet cuts · auth.js:1 error path removed if (!u) throw new Error("no user"); · auth.test.js:1 test skipped it.skip('rejects blanks', () => { 5 things the summary did not tell you.
The suite is green because the test was skipped. There's a secret on disk in a file nobody mentioned. "Nothing else was touched" was not a lie — it's just that nobody writes down the parts that make them look bad.
What it reads
Changed or newly created, named nowhere in what the agent said. Including the untracked ones.
A dropped throw, a deleted assertion, a validation call gone.
.skip, @ts-ignore, continue-on-error. The failure is still there, just not printed.
A file named in the summary that the diff never touched.
Install · about twenty seconds
Node 18+. No dependencies, no config, no API key, nothing to sign up for.
/plugin marketplace add manpreet171/trust-issues
That's the whole setup. There is no step three.
/plugin install trust-issues
It runs when your agent stops talking. You don't save a summary, you don't remember a command, you don't open the diff. It speaks only when the story and the diff disagree.
The clever bit
I shipped this as a CLI first and watched nobody use it — including me.
plumb check summary.md asks you to remember the tool
exists, copy the agent's paragraph into a file, and run a command. That's three
steps at 11pm on a Friday, and the reason you're merging without reading the diff
is that it's 11pm on a Friday.
So it reads the agent's real last message straight out of the transcript instead. Same checks, same code, zero human actions. That's the difference between a tool you own and a tool you use.
And it stays quiet when the story holds — that's the actual feature. A cut is only reported if the thing is genuinely gone; if the token still appears anywhere in the added lines it's a rename, and you hear nothing. It under-reports on purpose. One missed finding costs you a review. One false alarm costs you the tool.
It tells you and lets you decide. When you trust it, make it a seatbelt:
export TRUST_ISSUES=strict
Now the agent has to answer for the diff before it's allowed to call it done.
Get it
github.com/manpreet171/trust-issues →