How do I have a second model review test coverage in a Node/TypeScript app before each commit?
Tares has Codex review the plan and every commit Claude Code makes in your Node/TypeScript app, so a blocking test coverage finding sends Claude back to amend the commit. You turn it on by marking a session as a challenger session. If you disagree with a finding, you waive it with one command and the session moves on.
How it works
The check runs in a challenger session. Claude Code plans and builds as usual, and the OpenAI Codex CLI on your laptop acts as the second reviewer. Tares records the exchange and never calls Codex itself.
- Plan review. When you approve a plan and Claude leaves plan mode, the plugin hands the plan to Codex in a read-only sandbox. Codex looks for gaps, wrong architecture, scope problems, unhandled risks and missing verification. Missing verification is where a plan without tests gets flagged. Each finding is 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 every
git commit, the plugin has Codex review that commit. With no findings, Claude carries on. - Blocking findings. A
[P1]or[P2]finding blocks Claude. It must fix the problem and fold the fix into the same commit withgit commit --amend. If the reviewed commit is already on a remote, it makes a new commit instead. The amended commit is reviewed again as round 2, and so on until Codex is satisfied. The loop stops at 8 rounds per commit and 5 turn ends per session, and after that the findings come back as context. - Advice only.
[P3]findings are context and never block. A Codex timeout, an error or an inconclusive review never blocks either.
For a Node/TypeScript app, the useful setting is codex_sandbox. It is read-only by default. Set it to workspace-write or danger-full-access when Codex needs to run the project’s own commands.
Set it up
-
Install and start Tares, with its MCP endpoint next to it. On Tares Cloud the endpoint is already served, so skip the
tares mcpline.tares up tares mcp --transport streamable-http -
In Claude Code, add the Tares plugin (version 0.2 or later) with
/plugin marketplace add glassflow/tares, then/plugin install tares@tares. The install asks for the Tares URL and the MCP endpoint. On a secured instance it also asks for aread + ingestAPI key. -
Install the Codex CLI on the same laptop and log in. It runs there and is billed to your OpenAI account.
-
Set an Anthropic API key for the summarizer under Settings > Model providers, or as
ANTHROPIC_API_KEY. Tares Cloud instances come with one. -
Open Claude Code in your app’s repo and say “make this a challenger session”, or type
/tares:challenger. The first marked session creates the Challenger workflow project on its own. -
Ask for the work in plan mode. Put your coverage expectations in the request, for example which modules need unit tests, so the plan critique has something concrete to check.
-
Let Claude implement and commit. Read each result on the project page under Sessions, where every reviewed commit shows
Findings (N)orPass. -
If you disagree with a blocking finding, run
/tares:challenger-waive. It lists the blocking findings and waives one or all of them. The waiver is remembered on later rounds and shipped to Tares as achallenge_waivedevent. -
To make commit reviews advisory as well, set the plugin option
challenger_modetoadvise. The default isstrict. -
Type
/exitto end the session. A Tares agent writes the summary, including up to five memory proposals about the repo that you can accept or reject.
If you run the whole software factory for Claude Code instead, the first tares factory crew up asks whether a second model checks every commit, and the Codex CLI is the optional extra for that. The Get started page has the full crew setup. The challenger workflow guide covers the single-session route in detail.
What you get
- Every commit in your app is read by a second model before Claude moves on, not after the pull request is open.
- A blocking finding is fixed inside the same commit, so the history stays clean instead of collecting follow-up fixes.
- You keep the last word. A waiver lets you override a finding you think is wrong, and the override is recorded.
- One timeline per session shows the Claude and Codex exchange, the plan outcome and a badge for each reviewed commit.
- Review state, counters, the review history and waivers live under the repository’s
.git/folder on your laptop. A slow or down Tares never blocks a review. - Cost is predictable. 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 the whole project planned, built and reviewed by a crew rather than one session, use the software factory for Claude Code and its pull request reviewer. The challenger check is the lighter option for a single session.
- If you want findings to inform Claude without ever stopping it, set
challenger_modetoadvise.
Related
- Build a software factory with Claude Code
- How do I have a second model review internal refactors in a Python backend before each commit?
- How do I have a second model review bug fixes in a monorepo before each commit?
- How do I have a second model review bug fixes in a Python backend before each commit?
Still stuck? Get help