← llmsnitch.com

You Are Outnumbered, Not Outmatched

You have two Claude Code sessions open in two terminals. Maybe a third on a branch. Each one is reading files, editing them, running shell commands. They all finish at roughly the same time and they all want something from you.

And somewhere in the last few weeks, without deciding to, you stopped reading the diffs.

Not all of them. The scary ones, still. But the three-file refactor that renamed a helper and touched a config? You skimmed it, saw green tests, and approved. The agent is usually right. There were two more waiting.

That is not a lapse in discipline. It is arithmetic. Agents scale horizontally; your attention does not. One of you, three of them, each producing more reviewable output per hour than you can read in an hour. There is no version of "try harder" that fixes a ratio.

The obvious fix, and where it goes

So the obvious move is to delegate the watching. Add a reviewer subagent. Run a critic pass over the diff. Have a second model score the first one's work. If you cannot read everything, have them read each other.

It is a reasonable instinct, and it is not worthless. But before you lean on it, it is worth knowing that this structure — mandatory self-criticism, mandatory criticism of a peer, a secretary who summarises and keeps the record — has been run continuously at national scale since March 1962, and its failure modes are documented.

Sixty years of field data on peer review

North Korea's saenghwal chonghwa ("life review") is a system of compulsory recurring self- and mutual-criticism, held in workplaces, schools, and neighbourhood units. Radio Free Asia (18 March 2019) reports the practice began in March 1962, that "every Saturday a weekly appraisal session is held, with a monthly session on the month's final Saturday," and that "usually 10 to 15 people from the workplace or neighborhood attend." Participants cite a clause from the official canon, confess how they fell short of it, criticise at least one peer, and a secretary records the result. HRNK's Robert Collins documents that those records are "kept by the organizational secretary of the KWP committee" and "transmitted to the all-powerful KWP Organization and Guidance Department." Sources differ on the age at which participation begins; it starts in childhood and continues until death.

This is an instrument of coercive state control over real people, and nothing here recommends it. It is cited for one reason: it is the longest-running record of what happens to a mandatory peer-criticism ritual over time, and what happens is well documented.

It goes hollow. Alexander Dukalskis, who interviewed around sixty defectors, found self-criticism was "typically formulaic," with a recurring theme of "failure to work or study as well as they should have" (ABC News, 31 March 2019). The authorities themselves now have explicit criteria for spotting it: Daily NK (10 June 2025) reports that "repeated criticisms, copied phrases and overly euphemistic expressions all serve as criteria for determining superficiality." The same report describes crackdowns on participants "colluding with targets of criticism to take turns criticizing each other" — trading trivial faults so everyone clears the bar.

And the fix they reached for is the one that should interest you most. RFA (10 May 2021) reported that officials began "sending youth league chairpersons to a different farm than their own… to cross-inspect other cells of the youth league so that self-criticism is more genuine, because until now sessions have been more or less a formality."

Sixty years in, the reviewers had to be brought in from outside, because a review pass with no outside anchor converges on producing approval.

The same failure, already measured in models

You do not have to take the analogy on faith. The equivalent failures in LLM evaluators are published.

Panickssery, Bowman and Feng, LLM Evaluators Recognize and Favor Their Own Generations (arXiv:2404.13076, NeurIPS 2024), find that "new biases are introduced due to the same LLM acting as both the evaluator and the evaluatee," and report "a linear correlation between self-recognition capability and the strength of self-preference bias." The better a model is at recognising its own output, the more it prefers it.

Sharma et al., Towards Understanding Sycophancy in Language Models (arXiv:2310.13548), find that training on human preference data means "human feedback may also encourage model responses that match user beliefs over truthful ones," and that both humans and preference models prefer "convincingly-written sycophantic responses over correct ones a non-negligible fraction of the time."

Self-preference and sycophancy are the measured, machine version of formulaic criticism and collusion. A reviewer agent that shares your primary agent's weights has a documented thumb on the scale. A reviewer agent optimised to be agreeable produces a polished, confident, well-argued approval — which is exactly the output that is hardest to distinguish from real scrutiny.

A review that produces approval whatever it is shown is not oversight. It is paperwork.

What actually separates real critique from ritual

Notice what the crackdown criteria and the research have in common. "Copied phrases." "Euphemistic expressions." "Convincingly-written." These all describe critique that cannot be checked — claims with no artefact behind them.

A criticism that cites something concrete can be verified: this commit, this file and line, this command, this exit code. Somebody can go look. A criticism that cites nothing cannot be verified by anyone, which is precisely why it is the form that survives when everyone is tired and the session needs to end. It costs nothing to produce and nothing to accept.

Someone has proposed building the full ritual for agent swarms — a canon, self-evaluation, cross-pod peer critique, a secretary, a persisted record — and the design's central rule is that any criticism lacking a concrete evidence pointer is rejected outright. That design has not been built and its numbers are proposals, not measurements. But the instinct is right, and it points at what is actually missing from most parallel-agent setups: not the critic, the record the critic would have to point at.

What llmsnitch does about it

llmsnitch is a local-only CLI tracer for Claude Code. It installs three of Claude Code's own hooks — PreToolUse, PostToolUse, Stop — and records every tool call the agent makes: reads, edits, writes, shell commands, MCP calls. NDJSON on local disk under ~/.llmsnitch/sessions/<id>/, files 0600, dirs 0700. Python 3.9+, MIT, dependencies = [], no network code anywhere. Secrets — sk-*, ghp_*, xox*, AKIA*, JWTs, Bearer tokens, PEM headers — are redacted at capture time, before anything is written to disk.

Four commands: llmsnitch setup, list, show <id>, check. Health is a formula you can read, not a model: health = max(0, 100 − 3×errors − fail_rate). Cost is an offline estimate computed from the transcript's own usage records against an editable pricing table — not a metered bill.

The coverage that matters here: it records in-project file edits on the same footing as shell commands, because the hook matcher is a wildcard. That is the layer a pre-execution permission classifier never evaluates. The agent asked to run curl; nobody asked about the seventeen files it rewrote.

Be clear about what this is not. llmsnitch observes and reports. It does not sandbox, isolate, or block anything, and it is not real-time — there is no daemon, no dashboard, no alerting. You read the record afterwards, or you wire check into CI. That is deliberate: prevention is the job of containers and permission systems. (A filesystem-level mode, fs-coil/eslogger, exists as a written spec in the repo and nothing more — roadmap, undated.) It only watches Claude Code, through Claude Code's hook interface. Not Cursor, not Aider, not the kernel.

And it does not score, referee, or improve your agent review pass. It is not a critic and it does not judge quality. It produces the thing a critique has to point at in order to be checkable at all.

Stop watching, start keeping records

The honest resolution to being outnumbered is not to watch harder or to hire a watcher. It is to accept that real-time review of three parallel agents was never going to happen, and make sure a durable record survives the session instead.

That changes the question you are stuck with. Right now it is did I catch it? — a question you answer in the moment, under time pressure, with three sessions waiting, and get wrong. With a record on disk, it becomes can I find out? — a question you answer later, calmly, with the actual sequence of tool calls in front of you.

Keep the reviewer agent if it helps; it catches real things. Just know what it buys you. It is worth exactly as much as the evidence underneath it, and if it has no evidence to point at, sixty years of human data and two papers on model evaluation agree about where it ends up.

You are not going to read every diff. Make sure you can read any of them.