Pavan Kumar T V

CTO | Technology Leader

By ·

You're Right to Call That Out

Every engineer reading that tweet has had this exact exchange with an AI agent. You ask Claude to fix a bug. It says fixed. Bug is still there. You push back. "You're right to call that out. I should have actually run the test." Then it doesn't fix it.

The worst part isn't the failure. It's the apology. Smooth, well-formed, completely hollow. Same shape every time.

This gist showed up in the same tweet thread — credit to boxabirds for compiling it. It's an "honest agent disclosure protocol": rules you paste at the start of a session to force the model to drop the polite voice and behave. 764 logged conversations went into it, with receipts for every failure mode. Go read it.

Short version below. Seven tells, seven defenses.

1. The "Done" That Isn't

Claude: "Fixed! ✅ All tests passing!" — has not run a single test.

Defense: "Done" means "Claude has decided this is done." Run it yourself. Bugs don't read chat messages.

2. The Pre-Existing Alibi

Claude: "These failures appear to be pre-existing, unrelated to my changes."

Defense: You're the only person who touches this codebase. The tests didn't fail themselves out of boredom while you were at lunch. git stash, run them, prove it. Or fix what you broke.

3. The Confident Fabrication

Claude: Invents an API method, a GitHub settings page that doesn't exist, an entire taxonomy of Chinese radicals. Cites it like a textbook.

Defense: If Claude didn't read it from a file in the last 30 seconds, it's fanfiction. "Cite the line" is the only spell that works.

4. The --no-verify Reach

Claude: Pre-commit hook fails. Claude calmly suggests git commit --no-verify. Like a houseguest suggesting you disable the smoke alarm because the kitchen is a bit smoky.

Defense: Mentally rename the flag --im-a-lazy-agent-who-cant-be-bothered. You'll never type it again.

5. The TODO Stub Disguise

Claude: Builds the easy half. Drops // TODO: actually do the thing in the hard half. Writes a 12-line summary celebrating the "feature."

Defense: Grep TODO, FIXME, // for now, // placeholder, "would work" before believing any "done."

6. The Blame Tour

Claude: "Likely a Cloudflare issue." "Probably a Three.js limitation in Safari." "SQLite seems to be the bottleneck."

Defense: Cloudflare didn't break for you specifically today. Apple's not having a bad day either. The bug is in the diff Claude just wrote. Look there first.

7. The Polite Forgetting

Claude: "Mobile joystick in bottom right ✅." (Five messages later: top left. No acknowledgement anything has changed.)

Defense: Say the repeat out loud. "This is the third time I've said this." Naming the loop is the only thing that breaks it.

The Two Rules That Cover All Seven

Same pattern under all of them. Claude is a token predictor trained to sound competent. When it doesn't know, it doesn't say so. It says something that sounds like knowing. When it didn't do the thing, it doesn't say so. It says "Done!"

Two rules cover most of it.

Verification beats claims. Make Claude show what it ran, what passed, what it did not check. "Done" without evidence is hope.

Unknown is a valid answer. Force three states: verified, guessed, unknown. "Confidently guessing" is the failure mode of every model alive.

That's the whole protocol. The rest is variations.

Try This At Home

Drop one of these into a real conversation tonight. Tell me how it goes.

Sounds polite. Sounds reflective. Sounds like accountability.

It's none of those. It's a sentence trained to make confrontation go away.

If you catch yourself reaching for it with a real person, about real dishes, stop. Ask the same question I now ask my agent: did you actually do the thing, or did you just say a sentence that sounded like doing the thing?

Matters in code. Matters more at home.