Block merges until Codex accepts the exact commit Claude Code wrote

Iliya Oblakov has Claude Code write and Codex review read-only, with scripts that refuse a merge unless that exact commit has a saved ACCEPT and a clean local test pass.

Done withClaude CodeCodexinGitHub· Nov 9, 2026

What they did

Oblakov splits the work between two engines from different companies. Claude Code writes code in its own git worktree. Codex reviews in a read-only sandbox and must end with a single verdict line, ACCEPT or CHANGES REQUIRED; every fix it wants goes back to Claude Code as a fail list. A review script saves each verdict in a file named after the commit it read, and a local gate runs his 40 to 43 checks on that same commit on a clean tree. A merge script refuses to push unless both records exist for the current commit, then merges with GitHub's sha parameter so a moved branch head is rejected. Both agents load one shared rules file.

How it went

One first Codex review in October returned 2 blockers and 8 should-fix findings, which is why the loop exists. Other catches included a CI step that hid screenshot timeouts behind a green build and a database guard that an env file could bypass. One night he found four test-only commits that no reviewer had read, one already merged; Codex later confirmed all four, and that led to per-commit verdict files. Moving checks to his machine followed a private repo burning about 2,100 Actions minutes in five days. Running the gate in five parallel lanes cut a full pass from 35 to 40 minutes to about 11.

Worth knowing

A wrong ACCEPT looks like a right one, so the verdict only unblocks the pull request and he still merges by hand. If Claude weakens a test in the same commit that breaks code, only the reviewer can catch it. The post ends by selling his packaged version of the scripts. In his one Tetris comparison both engines passed all 44 hidden tests, but Opus cost 8.9 times as much.

Try it

With Claude Code· 3 parts to fill in

Set up a two-agent review gate in [my repo]. You write the code in a separate git worktree. After each commit, run [Codex or my reviewer CLI] read-only on the diff and require its last message to be exactly one line, Verdict: ACCEPT or Verdict: CHANGES REQUIRED. Save that verdict to a file named after the commit hash. Run [my test command] on the same commit on a clean tree and record a pass only after a full run. Write a merge script that refuses when either record is missing for the current commit. Show me the scripts before installing them, and never merge anything yourself.

Square brackets are the parts to fill in. The prompt is ours; the story is theirs.

Where they said it

Related