Skip to Content
Tares

How do I have a second model review dependency upgrades in a Node/TypeScript app before each commit?

Tares runs a challenger session in which the Codex CLI reviews every commit Claude Code makes, so a commit that bumps dependencies in your Node/TypeScript app gets a second opinion before you move on. A blocking finding sends Claude back to fix the commit and amend it. If you disagree with a finding, you waive it. Codex runs on your laptop and Tares records the exchange.

How it works

In a challenger session Claude Code plans and builds as usual, and Codex acts as the critic.

  • Plan critique. When you approve a plan and Claude leaves plan mode, Codex critiques it in a read-only sandbox. A plan that includes your dependency upgrades is checked for gaps, wrong architecture, scope, unhandled risks and missing verification. Findings are tagged [P1] (the plan fails as written), [P2] (will cause rework) or [P3] (advice). A plan critique never blocks. Claude revises or tells you why it disagrees.
  • Commit review. After each git commit, the plugin runs codex exec review --commit <sha> on that commit. A commit that touches package.json and your lockfile goes through the same review as any other.
  • Blocking findings. [P1] and [P2] findings block Claude. It 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, and so on until Codex is satisfied.
  • Limits on the loop. The loop is capped at 8 rounds per commit and 5 turn ends per session. After that the findings come back as context instead.
  • Never blocking. [P3] findings, a Codex timeout, an error or an inconclusive review never block.

The challenger runs locally and never waits on Tares. Tares never calls Codex. It records the exchange on one timeline per session.

Set it up

  1. Start Tares and its MCP endpoint, or use a Tares Cloud instance, which serves the endpoint itself:

    uv tool install tares tares up tares mcp --transport streamable-http

    Run the last two commands in separate terminals.

  2. Install the Tares plugin for Claude Code, version 0.2 or later. In Claude Code:

    /plugin marketplace add glassflow/tares /plugin install tares@tares

    The install asks for the Tares URL and the MCP endpoint. Locally the default is http://127.0.0.1:8788/mcp.

  3. Install the Codex CLI on the same laptop and log in. Codex is billed to your OpenAI account.

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

  5. Open Claude Code in your Node/TypeScript repo and say “make this a challenger session”, or type /tares:challenger. The first marked session creates the Challenger workflow project on Tares by itself.

  6. Ask Claude, in plan mode, to upgrade the dependencies you care about. Approve the plan, let Claude commit, and read each review as it arrives.

  7. 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 for that finding on later rounds and shipped to Tares as a challenge_waived event.

To make commit findings advisory instead of blocking, set the plugin option challenger_mode to advise. The default is strict. /tares:challenger off turns the challenger off for the rest of the session.

What you get

  • A second model reads every commit in the session, including the ones that change your dependencies, before Claude moves on.
  • Blocking findings are fixed inside the same commit through git commit --amend, so your history stays tidy.
  • You keep the final say. A waiver stops a finding you reject from blocking again.
  • Each reviewed commit shows Findings (N) or Pass on the project’s Sessions list. Open a session to read the Claude and Codex exchange as one thread. The events are challenge_plan, challenge_commit and challenge_waived.
  • When you end the session with /exit, the challenger_summarizer agent writes a summary of what was built, what Codex caught on each commit, the cost, and up to five Memory proposals. Nothing reaches memory until you accept it. Accepted decisions are handed to Claude at the start of the next session in that repo.
  • Review state, fix-loop counters, the review history and waivers stay under the repository’s .git/ on your laptop. A Tares that is down never blocks a review.

Expect a plan critique to take 30 to 90 seconds. A session with a plan and three commits is typically five to eight Codex runs, billed by OpenAI.

When something else fits

  • If you want a crew that plans, builds and reviews whole projects in the background with its own reviewer, see Get started. The crew can also have a second model check every commit.
  • If your Codex setup needs to run project commands, such as your test script, set codex_sandbox to workspace-write or danger-full-access. The default is read-only.
  • For the full event list, plugin options and costs, read the challenger workflow guide.

Still stuck? Get help

Last updated on