Skip to Content
Tares

What happens when the second model finds problems in a commit during a challenger session?

Tares challenger sessions block Claude Code when the second model reports P1 or P2 findings on a commit. Claude must fix them and fold the fix into the same commit with git commit —amend, or make a new commit if the reviewed one is already on a remote. The amended commit is reviewed again as round 2. The loop stops at 8 rounds per commit and 5 turn ends per session, and after that the findings come back as context. P3 findings are context only, and a timeout, error or inconclusive review never blocks.

How it works

In a challenger session, Claude Code plans and builds as usual and the OpenAI Codex CLI on your laptop reviews each commit. After every git commit, the Tares plugin for Claude Code runs a Codex review on that commit. Codex tags each finding by priority, and the tag decides what happens next:

  • No findings: Claude carries on. A challenge_commit event with “no findings” lands on the session timeline.
  • P1 or P2 findings: Claude is blocked with the findings. It is told to fix them and fold the fix into the same commit with git commit --amend, or to make a new commit when the reviewed one is already on a remote. The amended commit is reviewed again as round 2, and so on until Codex is satisfied.
  • P3 findings: context only. They never block.
  • Timeout, error or inconclusive review: never blocks.

The loop has two caps. It runs at most 8 rounds per commit and 5 turn ends per session. After that, the findings come back to Claude as context instead of blocking.

The review runs locally, in the Claude Code hooks, against the Codex CLI and your OpenAI account. Tares only receives the results, so a Tares that is down or slow never blocks a review. The plugin retries shipping on the next hook. The fix-loop counters, the review history and any waivers live under the repository’s .git/ directory on your laptop.

Each review ships a challenge_commit event with the labels verdict, sha, round, finding_count, blocking_count and duration_seconds. The verdict is Codex’s own word: PASS, FAIL, INCONCLUSIVE, TIMEOUT or ERROR. Trigger filters use it.

Set it up

  1. Run Tares locally and start its MCP endpoint next to it, or use a Tares Cloud instance, which serves the endpoint itself. If you are new to Tares, Get started covers the software factory for Claude Code.
tares up tares mcp --transport streamable-http
  1. Install the Tares plugin for Claude Code, version 0.2 or later. The install asks for the Tares URL and the MCP endpoint. From plugin 0.4.0 the challenger reaches Tares through that endpoint.
  2. Install the Codex CLI on your laptop and log in. Codex runs there and is billed to your OpenAI account.
  3. Set an Anthropic API key for the summarizer under Settings > Model providers, or as ANTHROPIC_API_KEY. Tares Cloud instances come with one.
  4. In Claude Code, say “make this a challenger session”, or type /tares:challenger. The first marked session creates the Challenger workflow project by itself.
  5. Let Claude implement and commit. When a commit comes back with P1 or P2 findings, Claude fixes them and amends the commit, and Codex reviews the amended commit as round 2.
  6. If you disagree with a blocking finding, run /tares:challenger-waive. It lists the blocking findings and waives one or all. The waiver is remembered on later rounds and shipped to Tares as a challenge_waived event.

The full walkthrough, from plan critique to session summary, is in Challenge Claude Code with a second model.

What you get

  • Blocking findings reach Claude before it moves on, so a P1 or P2 problem is fixed inside the same commit instead of piling up in later ones.
  • Review rounds stay bounded. The 8-round and 5-turn-end caps mean a stubborn disagreement ends with the findings handed back as context, not a stuck session.
  • Flaky reviews stay harmless. A Codex timeout, error or inconclusive result never stops your work.
  • A record on Tares. The project page lists every challenger session with one badge per reviewed commit, Findings (N) or Pass. Opening a session shows the Claude and Codex exchange as one thread.
  • A session summary. When the session ends, a Tares agent writes up each commit and what Codex caught, and proposes what the next session in that repo should remember. Nothing reaches memory until you accept it.

When something else fits

  • If you want commit reviews to advise only, set the plugin option challenger_mode to advise. The default is strict.
  • If a single finding is wrong, waive it with /tares:challenger-waive rather than turning the challenger off. /tares:challenger off turns it off for the rest of the session.
  • Plan critiques work differently from commit reviews. They never block, and only a P1 on a plan asks Claude to revise or explain why it disagrees.

Still stuck? Get help

Last updated on