agentfdr reads the transcripts Claude Code already writes and turns them into a flight recording: per-turn timeline, automatic anomaly flags (loops, error streaks, token burns), live watch mode, plan-usage tracking, and cost estimates. Zero instrumentation, 100% local, MIT.
how does it flag loops in real time without hooking into the actual conversation state
Report
Maker
@emreboyvatexph It doesn’t hook anything — that’s the trick. Claude Code appends every event (tool calls, results, token usage) to a JSONL transcript on disk as the session runs. Live watch just tail-follows that file: a cheap mtime+size probe every 2 seconds, and when the file grew, the changed transcript is re-parsed (with caching) and the detectors re-run over the full turn model. They’re pure functions over the parsed session, so re-running them per poll costs milliseconds.
So “real time” here means ~2 seconds behind the recording — no IPC, no process hooks, no interception of the conversation. The upside of that design: it can never break your agent, and it works on sessions that already crashed.
Report
Maker
A lot shipped since launch day — much of it straight from the feedback in these comments. Thank you!
🔎 Full-text search (`agentfdr search` + a Search tab) — search every prompt, assistant reply, tool call and result across all your sessions, and jump straight to the matching turn. "Which session had that rate-limit error last week?" is now one command.
🟩 Activity heatmap — a GitHub-grass view of your daily token burn over the last 12 months, right in the Usage tab.
⚙️ Config file (v0.3) — tune detector thresholds, suppress loops that are legitimate for your workflow (retrying tests, polling builds), and add your own regex rules as first-class anomaly flags.
🎨 UI overhaul — anomalies get their own card with severity badges, tabs got icons, and the side panel now shows a session overview (top tools, most-edited files) while nothing is selected.
Still zero dependencies, still 100% local. `npx agentfdr`
If you tried agentfdr on launch day, `npm i -g agentfdr@latest` is worth it.
Report
Maker
v0.5 — Codex CLI support, full-text search, and a 12-month activity heatmap
A lot has shipped since launch day — much of it straight from the feedback in these comments. Thank you!
🤝 OpenAI Codex CLI support (v0.5) — agentfdr is no longer Claude Code-only. Codex rollouts under ~/.codex/sessions/ are auto-discovered next to your Claude projects, and everything works on both: the timeline, anomaly detectors, search, session diff, blame reports, and the CI gate. Same zero setup — if you use both agents, they now share one cockpit.
🔎 Full-text search (v0.4) — agentfdr search "rate limit" scans every prompt, reply, tool call and result across all your sessions and jumps straight to the matching turn. "Which session was that in?" is now one command.
🟩 Activity heatmap — a GitHub-grass view of your daily token burn over the last 12 months, right in the Usage tab.
⚙️ Config file (v0.3) — tune detector thresholds, suppress loops that are legitimate for your workflow (retrying tests, polling builds), and add your own regex rules as first-class anomaly flags. This one came directly from a comment here on launch day.
🎨 UI overhaul — anomalies get their own card with severity badges, the side panel shows a session overview while nothing is selected, and the session filter is a proper quick-open now.
Still zero dependencies, still 100% local: npx agentfdr
If you tried agentfdr on launch day, npm i -g agentfdr@latest is a very different tool today. And if you use Codex — I'd love to hear how your rollouts parse.
Report
finally something that makes my long claude code sessions actually reviewable, the loop detection caught a stuck tool call i would have missed for sure
Report
Maker
@veyselmentodzj That’s exactly the kind of catch this was built for — thank you for sharing it. Stuck calls have a second tell besides the loop flag, by the way: a tool call whose result never came back shows as “(no result recorded)” in the dissection panel, so you can distinguish “stuck waiting” from “failing repeatedly” at a glance.
Out of curiosity, how long do your sessions run? I’m tuning the detectors against real-world session shapes and long ones are the most interesting.
how does it flag loops in real time without hooking into the actual conversation state
@emreboyvatexph It doesn’t hook anything — that’s the trick. Claude Code appends every event (tool calls, results, token usage) to a JSONL transcript on disk as the session runs. Live watch just tail-follows that file: a cheap mtime+size probe every 2 seconds, and when the file grew, the changed transcript is re-parsed (with caching) and the detectors re-run over the full turn model. They’re pure functions over the parsed session, so re-running them per poll costs milliseconds.
So “real time” here means ~2 seconds behind the recording — no IPC, no process hooks, no interception of the conversation. The upside of that design: it can never break your agent, and it works on sessions that already crashed.
A lot shipped since launch day — much of it straight from the feedback in these comments. Thank you!
🔎 Full-text search (`agentfdr search` + a Search tab) — search every prompt, assistant reply, tool call and result across all your sessions, and jump straight to the matching turn. "Which session had that rate-limit error last week?" is now one command.
🟩 Activity heatmap — a GitHub-grass view of your daily token burn over the last 12 months, right in the Usage tab.
⚙️ Config file (v0.3) — tune detector thresholds, suppress loops that are legitimate for your workflow (retrying tests, polling builds), and add your own regex rules as first-class anomaly flags.
🎨 UI overhaul — anomalies get their own card with severity badges, tabs got icons, and the side panel now shows a session overview (top tools, most-edited files) while nothing is selected.
Still zero dependencies, still 100% local. `npx agentfdr`
If you tried agentfdr on launch day, `npm i -g agentfdr@latest` is worth it.
v0.5 — Codex CLI support, full-text search, and a 12-month activity heatmap
A lot has shipped since launch day — much of it straight from the feedback in these comments. Thank you!
🤝 OpenAI Codex CLI support (v0.5) — agentfdr is no longer Claude Code-only. Codex rollouts under ~/.codex/sessions/ are auto-discovered next to your Claude projects, and everything works on both: the timeline, anomaly detectors, search, session diff, blame reports, and the CI gate. Same zero setup — if you use both agents, they now share one cockpit.
🔎 Full-text search (v0.4) — agentfdr search "rate limit" scans every prompt, reply, tool call and result across all your sessions and jumps straight to the matching turn. "Which session was that in?" is now one command.
🟩 Activity heatmap — a GitHub-grass view of your daily token burn over the last 12 months, right in the Usage tab.
⚙️ Config file (v0.3) — tune detector thresholds, suppress loops that are legitimate for your workflow (retrying tests, polling builds), and add your own regex rules as first-class anomaly flags. This one came directly from a comment here on launch day.
🎨 UI overhaul — anomalies get their own card with severity badges, the side panel shows a session overview while nothing is selected, and the session filter is a proper quick-open now.
Still zero dependencies, still 100% local: npx agentfdr
If you tried agentfdr on launch day, npm i -g agentfdr@latest is a very different tool today. And if you use Codex — I'd love to hear how your rollouts parse.
finally something that makes my long claude code sessions actually reviewable, the loop detection caught a stuck tool call i would have missed for sure
@veyselmentodzj That’s exactly the kind of catch this was built for — thank you for sharing it. Stuck calls have a second tell besides the loop flag, by the way: a tool call whose result never came back shows as “(no result recorded)” in the dissection panel, so you can distinguish “stuck waiting” from “failing repeatedly” at a glance.
Out of curiosity, how long do your sessions run? I’m tuning the detectors against real-world session shapes and long ones are the most interesting.