My coding agents kept failing in ways nothing reported. Not crashes — crashes announce themselves. The expensive failures were silent: a session looping on the same three tool calls, convinced it was busy. A process OOM-killed at 3am, taking its ability to tell me with it. Six hours of nothing, discovered at breakfast.
The platforms are closing the other half of this. Claude Code's Remote Control now pushes a phone notification when a session needs a decision, and you can answer from the couch. That covers every failure the agent can self-report. But an agent that stopped making progress has, by definition, nothing to say — and a dead one has no way to say it. Everything that can be self-reported already is. What's left needs an observer outside the process.
So I built nightsitter: a small MIT-licensed CLI that reads Claude Code's on-disk transcripts and classifies sessions by progress, not process health — 🟡 stalled (alive, mid-task, silent), 🔴 dead (gone mid-task) — and wraps anything else with a dead-man switch: nightsitter run --max-minutes 45 -- python nightly.py.
On day two I installed it as a daemon on the machine I was building it on. Which means it was watching the very Claude Code sessions that were writing it, and its false alarms landed on my own phone, in real time, about itself. Every bug below was found that way, not by testing. This post is the list, because the bugs turned out to be more interesting than the product.






