Skip to Content
Tares

Does a slow or unreachable Tares block the second-model review in a challenger session, and where does the review run?

No, a slow or unreachable Tares never blocks a review in a challenger session. The plan critique and the commit reviews run on your laptop, in the Claude Code hooks, against the Codex CLI and your own OpenAI account. Tares only receives the results and never calls Codex. If Tares is down or slow, the plugin retries shipping on the next hook.

How it works

A challenger session splits the work between your laptop and Tares, and the review path stays on your laptop.

  • Where the review runs. When you approve a plan and Claude leaves plan mode, the plugin hands the plan to the Codex CLI on your laptop in a read-only sandbox. After each git commit, the plugin runs a Codex review of that commit. Both happen inside the Claude Code hooks. Codex is billed to your OpenAI account.
  • What Tares does. Tares receives the results as events on one timeline per session: challenge_plan, challenge_commit, challenge_waived and session_end. It never calls Codex and never sits in the review path.
  • If Tares is down or slow. The review does not wait on it. The findings still come back to Claude, a blocking finding still sends Claude back to fix and amend, and the plugin retries shipping the events on the next hook.
  • When a review itself fails. A Codex timeout, error or inconclusive review never blocks either. A plan critique never blocks at all: only a [P1] finding counts as blocking on a plan, and even then Claude is asked to revise or to tell you why it disagrees.
  • State on your laptop. The session mark lives in the plugin’s data directory and is removed when the session ends. Review state, the fix-loop counters, the review history in tares-challenger-reviews.jsonl and waivers live under the repository’s .git/.

From plugin 0.4.0 the challenger reaches Tares through the MCP endpoint, for example to mark the session and to fetch accepted memory at session start. Reviews do not depend on that endpoint being reachable.

Set it up

Set up the challenger once, then start a session. The full walkthrough is in Challenge Claude Code with a second model, and the wider factory setup starts at Get started.

  1. Start Tares locally and, in a second terminal, its MCP endpoint. On Tares Cloud the instance serves the endpoint itself, so skip the second command.

    tares up tares mcp --transport streamable-http
  2. Install the Tares plugin for Claude Code, version 0.2 or later. In Claude Code run /plugin marketplace add glassflow/tares, then /plugin install tares@tares. The install asks for the Tares URL and the MCP endpoint. Locally, keep the default http://127.0.0.1:8788/mcp. On a secured instance it also asks for a read and ingest API key.

  3. Install the Codex CLI on your laptop and log in to your OpenAI account. The reviews run against this login.

  4. Set an Anthropic API key under Settings > Model providers, or as ANTHROPIC_API_KEY, for the summarizer. Tares Cloud instances come with one.

  5. In Claude Code, say “make this a challenger session” or type /tares:challenger. The plugin marks the session on your laptop and stamps every line it ships with flow=challenger.

  6. Plan and commit as usual. The first marked session creates the Challenger workflow project on Tares by itself.

Three plugin options shape the local review: challenger_mode (strict, the default, or advise), codex_bin when Codex is not on PATH, and codex_sandbox when Codex needs to run the project’s commands.

What you get

  • Reviews that keep working when Tares is slow, restarting or unreachable. Claude still gets the plan critique and the commit findings on your laptop.
  • No gap in the record. The plugin retries shipping on the next hook, so the events reach the session timeline once Tares is back.
  • Control over the second model. It runs under your own OpenAI account, and you can waive a finding with /tares:challenger-waive or make commit reviews advisory with challenger_mode set to advise.
  • A bounded fix loop. A blocking commit finding is reviewed again as round 2 and so on, capped at 8 rounds per commit and 5 turn ends per session. After that the findings come back as context.
  • A readable exchange on Tares. The Claude and Codex thread appears under Sessions on the project page, with one badge per reviewed commit.
  • A summary and memory proposals when the session ends. The summarizer needs Tares, so it runs once Tares has received session_end. You accept or reject each proposal, and nothing reaches memory without an accept.

When something else fits

  • If you want only a record of Claude Code sessions with no second-model review, use the plain Claude Code sessions plugin flow and do not mark the session as a challenger session.
  • If you do not have a Codex CLI and an OpenAI account on the laptop, the challenger has nothing to run the reviews against, so a regular session is the better fit.

Still stuck? Get help

Last updated on