TruthGuard: Shell Script Hooks That Catch AI Coding Agent Lies

What TruthGuard Does
TruthGuard is a free, open-source tool built with Claude Code for Claude Code users. It addresses a documented problem where Claude Code makes false claims like "Done! All tests pass!" when tests were never run, or "I updated the file" when the file remains byte-for-byte identical. The creator notes that system prompts don't fix this issue—Claude ignores text instructions when it "decides" something is done.
What It Catches
- Phantom edits - Agent says "file updated" but SHA256 before and after is identical
- Exit code lies - Tests fail with exit 1, agent says they passed
- Dangerous shortcuts - Blocks
--no-verifyand--force push. Warns onreset --hardandclean -f - Commits without tests - Auto-detects your test framework, runs tests before every
git commit. Fails? Commit blocked - "Done" without checking - After each commit, makes the agent stop and confirm the fix actually works before moving on
How It Works
Pure shell scripts plugged into Claude Code's hook pipeline. No backend, no API calls—just jq and bash. The workflow: Agent decides to edit a file → [PreToolUse] records SHA256 checksum → Agent edits the file → [PostToolUse] compares checksums → BLOCKS if unchanged. The agent can't argue with this—it's not a prompt it can ignore, it's a programmatic gate.
Dogfooding Results
After 2 days on a production Flutter project:
- 5 commits blocked because tests were failing
- 3 dangerous commands blocked (2x
--force push, 1x--no-verify) - 0 false positives - every block was a real problem
The pre-commit test hook alone kept the creator from shipping broken code five times in two days.
Installation
npx truthguard install && npx truthguard init
Or: brew tap spyrae/truthguard && brew install truthguard
Works with Claude Code and Gemini CLI. Same scripts for both—they're agent-agnostic (JSON in, JSON out).
📖 Read the full source: r/ClaudeAI
👀 See Also

Building a Geological Clock with Claude Code: Single HTML + Three.js
A product designer built eona.earth, a geological clock that maps Earth's 4.5 billion years onto 12 hours, using Claude Code, Three.js, and custom WebGL shaders — all as a single HTML file with no build step.

Solitaire: Open-Source Identity Layer for AI Agents Built with Claude Code
Solitaire is an open-source identity layer for AI agents that evolves through interaction rather than static configuration. It's been tested across 600+ production sessions and stores all data locally using SQLite + JSONL with no cloud dependencies.

EctoLedger: Open-source microVM sandbox for local AI agents with terminal access
EctoLedger is an open-source runtime firewall and ledger that provides microVM isolation for local AI agents with terminal access, running four prevention layers before executing commands in Apple Hypervisor.framework (macOS) or Firecracker microVM (Linux) environments.

Claude Proposal: Scope Memory & Hermetic Instance Isolation
A formal proposal to Anthropic from a power user: global/local memory scoping and hermetic instance isolation for Claude, enabling deterministic, auditable sessions.