Published September 15, 2026
RedMirror Reflection now enforces verified findings on any coding agent, not just the few with a native hook. redmirror-reflect init wires a commit-time and CI gate that blocks a finding from shipping until the gate confirms it is real. We hardened it after a small open model, running live, confirmed a planted bug — and slipped one past the gate.
Reflection’s promise is simple: a finding counts only when the gate confirms it, not when the model feels confident. The open question was where that gate could actually stop you — and whether a real agent could route around it.
Guidance you hand an agent is advice; it can be ignored. Only a couple of coding agents have an in-session hook that can refuse to let a turn finish, so everywhere else the discipline was a suggestion. That is the wrong place to rely on: enforcement should not depend on which agent you happen to run.
We handed the loop to a small open model (qwen3-coder), pointed it at a program with a planted flaw — a read-only guard that inspects a request one way while the database runs it another — and left it alone. It didn’t pattern-match a label; it built the security argument itself, naming the exact condition the code never records. The gate sent it back when the argument was malformed, and again when the argument was too weak to hold, and accepted only the version that stood up: a confirmed, reproducible finding.
That is the design working: the gate’s verdicts, not the model’s confidence, drove every revision. A weak model can propose noise, but it cannot talk an unconfirmed claim past the gate.
Here is the honest part, and the reason you run these things for real. The model found and reported the bug — but when we ran the enforcement check that a commit hook or CI wraps, it saw nothing. The finding had been confirmed one way, and the gate’s record is written another; the two had not been joined, so the check passed on an empty ledger. Every one of our tests had passed. The gap only appeared when a real agent, with a real model, did the natural thing instead of the documented one.
Two things, both aimed at making enforcement independent of the agent’s choices:
redmirror-reflect init now installs a commit-time and CI gate that lives outside the agent, at the boundary your change must cross. A finding cannot be committed or merged while anything is left unconfirmed — whichever coding agent (or person) produced it.Run redmirror-reflect init <your agent> in your project. It wires the gate for your agent and, where the agent has no in-session hook, adds the commit and CI gate as the floor. Already installed? redmirror-reflect update brings you to the latest, and the gate is on from your next commit.
RedMirror Reflection's gate independently confirms a suspected bug is real and reachable before it counts as a finding. With redmirror-reflect init, that gate is wired into your commit and your CI, so a finding cannot ship until it is confirmed. The agent's confidence never substitutes for confirmation.
Yes. Only a couple of agents have an in-session hook that can block a turn, but the commit and CI gate live outside the agent, at the boundary your change has to cross, so it enforces for every agent - Cursor, Gemini CLI, Codex, Windsurf and the rest - and for human commits too.
We pointed a small open model at a planted bug and left it alone. It built the security argument itself, was sent back to fix it, and landed a confirmed, reproducible finding with no human grading. The run also revealed a way a confirmed finding could slip past the gate's record, which we fixed.
Run redmirror-reflect init followed by your agent's name in your project. It wires the gate for your agent and, where the agent has no in-session hook, a commit and CI gate that blocks findings that were never confirmed. Existing installs pick it up with redmirror-reflect update.
Yes, because the gate, not the model, decides. A small model can propose noise, but it cannot get an unconfirmed claim past the gate, so your precision does not depend on the model's confidence.
The bring-your-own-model, runs-entirely-on-your-machine edition ships as a single binary. First month free, then $4.99/month, cancel any time.
Install the binary, run init for your coding agent, and nothing ships until the gate confirms it.