cd /news/ai-agents/i-built-a-tiny-cli-to-see-how-my-cod… · home › topics › ai-agents › article
[ARTICLE · art-139978] src=dev.to ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

I built a tiny CLI to see how my coding agent actually worked

A developer built Agent Pigeon, an open-source CLI that reads local Claude Code and Codex session history after a run and condenses it into a short "Flight" report of edits, verification checks, and fail-to-pass transitions. The tool runs read-only against completed sessions via `npx agent-pigeon flight`, and a `compare` subcommand lines up observed facts from two sessions without model scores or a declared winner. The author notes that Codex can perform reads inside broader exec commands, so the parser reports `READ: N/A` when it cannot reliably attribute them, and that live-warning experiments were dropped after false positives from incomplete event history.

by read2 min views3 publishedSep 26, 2026

Agent Pigeon reads local Claude Code and Codex session history after a run and turns it into a short Flight report. I built it because a final answer rarely shows the path that led there: the edits, checks, and retries in between.

npx agent-pigeon flight

I wanted one command that could turn a long coding-agent session into something I could scan in a few seconds.

The GIF uses sanitized synthetic history. The header shows the provider and session span. EDIT counts observed edits; VERIFY includes checks the parser recognizes; FAIL→PASS marks a recognized failure followed by a later pass. The final line shows the latest recognized verification state.

That screen is enough to see where activity went and whether a recognized check eventually passed. I open the original session when I need more context.

Claude Code exposes Read tool calls directly. Codex can perform reads inside broader exec commands, so its history may not show individual reads in a form Agent Pigeon can attribute. When that happens, READ: N/A means the parser cannot count reliably. READ: 0 would imply it saw the full set and found none.

I experimented with live warnings and intervention. While dogfooding it, I got false positives and noisy warnings because the event history was incomplete. I couldn't always tell whether a check had been skipped or the log had failed to capture it, so I stopped treating gaps as a reason to interrupt. The public CLI reads completed sessions in read-only mode; when the signal is incomplete, observation can be more useful than interruption.

agent-pigeon compare <session-a> <session-b>

Compare lines up observed facts from two sessions so I can scan them side by side. It has no model scores or declared winner. Provider logs can expose different details, so matching labels may still come from uneven evidence.

npx agent-pigeon@latest flight

The source is on GitHub. If you try it, tell me what it misses or misreads, especially around edge cases or provider formats.

Disclosure: AI tools helped draft and edit this post and assisted with parts of the launch workflow. I reviewed the technical claims against the source code and the published v0.1.2 CLI.

── more in #ai-agents 4 stories · sorted by recency
── more on @agent pigeon 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-a-tiny-cli-t…] indexed:0 read:2min 2026-09-26 · —