
Claude Code looked busy. The postmortem showed where I should have stopped.
I ran a Claude Code validation session against my KubeAttention project. The goal was:
>verify whether the scheduler and deployment path are production-ready enough to ship
From the terminal, it looked useful. Claude read docs, ran Go tests, inspected the scheduler module, tried kubectl, and rendered the Helm chart.
But the useful answer had already arrived before the checklist finished: stop this session and fix the blockers. The attached image is the actual cc-blackbox terminal postmortem renderer, including its Claude-analysis section, generated from this session's local JSONL evidence.
- 15 assistant turns in 31 seconds
- 321,345 total tokens through the session
- 299,649 of those were cache reads
- 13 Bash commands
- 6 failed commands
The concrete blockers were not subtle:
- go test ./pkg/scheduler failed because the package path was outside the main module
- cd pkg/scheduler && go test . failed because the nested module was missing go.sum data
- go test ./pkg/scheduler/... failed for the same module-boundary reason
- kubectl checks hit localhost:8080 with no cluster available
That is the pain I am trying to solve. When a Claude Code session is still producing output, I want a local tool that can turn the evidence into a concrete stop/restart decision:
>stop this session, fix the module boundary and go.sum, attach a real cluster, then rerun validation
So I built cc-blackbox: a local flight recorder and guardrail for Claude Code sessions. It runs through a local proxy, watches the stream, labels direct versus heuristic evidence, and produces this kind of redacted postmortem when the session is done.
The important part for me: this postmortem did not need the raw source or a full transcript to show the problem. Command names, exit codes, timestamps, token buckets, and redacted file categories were enough.
Question for heavy Claude Code users:
What should make a local guard tell you to stop early?