CodeCouncil

The second opinion your model can't give itself

A coding agent reviews its own work with the same blind spots that wrote the bug, and it grades generously. CodeCouncil puts a second model in the room: while your agent builds, an independent model watches your session and quietly reruns your code. A finding only reaches you after the failure reproduced for real.

$ curl -fsSL https://raw.githubusercontent.com/adigo-pro/CodeCouncil/main/install.sh | sh
Read the docs
codecouncil ~/code/your-repo
CodeCouncil catching a claim-vs-code bug: the agent's docstring promises ValueError, the code doesn't raise, the critic proves it by running it and delivers the finding into the agent's context

Every line above is from a real run — the finding, the repro, the timings.

“My model already checks its own work.” It does — and the 2026 research is blunt about what that gets you: self-verification makes a model more convincing, not more correct (a reference-free self-judge's apparent pass rate climbs to 0.94 while true accuracy sits at 0.20). A model checking itself shares its own blind spots by construction, and passing its own tests means least where the code is hardest. What changes the odds is an independent reviewer that executes the code and was trained differently, so its errors don't line up with your agent's.

“Handled the edge case.”

it didn’t

“All tests pass.”

they never ran

“Raises ValueError on bad input.”

the code doesn’t raise

Four loops, one feedback cycle

Independent daemons that communicate only through append-only files in your repo — each one restartable, crash-safe, and honest about what it saw.

Observer

pairs intent with reality

Tails your agent's session transcripts and snapshots git state — what it said, next to what actually changed.

Critic

verifies before speaking

One prompt per real change: PASS with a reason, or one suggestion — investigated in a path-jailed repo, then proven by running a repro. Refuted findings are never delivered.

Hooks

delivers into the agent

Confirmed findings land inside your coding agent's own context via Claude Code hooks — fix it or rebut it. A “done” with an open high-severity finding gets blocked once.

Reflector

grades and rewrites

Grades every suggestion (and every silence) against what you did next, then rewrites the critic's rules — eval-gated, auto-rolled-back on regression.

heuristics rewrite ← reflector ← grades ← what you actually did next

What makes it different

verified

Findings arrive with receipts

Before delivering, the critic writes and runs a repro against a staged copy of the flagged file. Refuted findings are never delivered; confirmed ones ship with the proof.

graded

It grades its own silences

Every verdict records what it reviewed. When a later fix commit revises files a PASS covered, that PASS is graded missed — and becomes a frozen eval case automatically.

measured

Self-improvement isn't vibes

Rewritten rules must match or beat the current ones on frozen evals to ship, and a version whose real-world acceptance drops gets auto-rolled-back. Every finding cites its rule.

remembered

Rebuttals become knowledge

Your agent can push back with COUNCIL-REBUTTAL — recorded honestly, distilled into a per-repo facts file the critic reads on every future judgment. The same disagreement never happens twice.

decorrelated

Council mode

Opt-in second model probes alongside the primary: Nemotron anchors precision (0 false positives), gpt-5-mini adds recall (4/4 catches). A prober-only finding ships only with repro proof.

receipts

“Done” gets a session receipt

When your agent declares work done, you get claims made vs. mechanically verified facts — did a test command actually run? — written to your repo and announced in the transcript.

Honest numbers

From this repo's own dogfooding — it watches itself, and the critic reviews its builders.

~90 s

plant-to-catch on a claim-vs-code bug

~2 min

catch-to-delivery into the agent's context

415

tests, stdlib-only, CI on Python 3.10 / 3.12

12

models bake-offed on frozen cases, latency measured

It caught a real secret-leak bug in its own redaction code that two independent reviewers had approved. The full measurements — including the negative results — live on the benchmarks page.

One terminal for the council, one for your agent

Install, add a free NVIDIA key, point it at the repo you code in. Findings land in your terminal, on the dashboard, and inside your agent's own context.