Is a second model worth the extra time on framework migrations?
Tares challenger sessions add 30 to 90 seconds per plan, one Codex review per commit and a second bill on your OpenAI account, and in return a second model checks every plan and commit. For a framework migration that is worth it when a missed regression costs more than the wait. If you want findings that never block, set challenger_mode to advise, and Claude is not sent back to fix and amend.
How it works
In a challenger session, Claude Code plans and builds as usual and the OpenAI Codex CLI on your laptop critiques the work. Tares records the exchange and never waits on the review. The costs come in four places:
- Per plan. When Claude leaves plan mode, Codex critiques the plan. It takes 30 to 90 seconds, so Claude’s first reply after you approve the plan is slower. A plan critique never blocks. 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. - Per commit. After every
git commit, Codex reviews that commit. Each commit you make during the migration gets its own review. Thechallenge_commitevent recordsduration_secondsfor every review, so you can read the real time per commit on your own repo. - Per fix round. In the default
strictmode, a[P1]or[P2]finding blocks Claude, which fixes the problem and amends the commit. The amended commit is reviewed again as round 2, up to 8 rounds per commit and 5 turn ends per session. A Codex timeout, error or inconclusive review never blocks. - Per bill. Codex runs on your laptop and is billed to your OpenAI account. A session with a plan and three commits is typically five to eight Codex runs. The summarizer at the end is one Tares agent run per session, metered like every other agent run.
Set it up
-
Install the Tares plugin for Claude Code, version 0.2 or later, and start Tares as described in Get started or on your Tares Cloud instance. The full prerequisites are in the challenger workflow guide.
-
Install the Codex CLI and log in. This is the account that receives the second bill:
npm install -g @openai/codex codex login -
Add an Anthropic API key for the summarizer under Settings > Model providers, or set
ANTHROPIC_API_KEY. Tares Cloud instances come with one. -
Start Claude Code in the repo you are migrating and say “make this a challenger session”, or type
/tares:challenger. The first marked session creates the Challenger workflow project by itself. -
Decide how strict to be. The default
strictmode blocks Claude on[P1]and[P2]commit findings. To make commit findings advisory, set the plugin optionchallenger_modetoadvise. -
If you disagree with a blocking finding in strict mode, run
/tares:challenger-waiveto waive one finding or all of them. The waiver is remembered on later rounds. -
Type
/exitwhen you finish. Thechallenger_summarizeragent writes the summary, including a cost section.
What you get
- A second model reads every plan and every commit, so a mistake Claude cannot see in its own work has another chance to be caught.
- Findings carry a priority:
[P1]means the plan fails as written,[P2]will cause rework,[P3]is advice. You see what matters first. - One timeline per session on Tares, with a badge per reviewed commit (
Findings (N)orPass) and the plan outcome, so you can see where the review time went. - A summary with what Codex caught on each commit and up to five Memory proposals. Nothing reaches memory until you accept it, and accepted sentences are handed to Claude at the start of the next session in that repo.
- A direct way to answer the cost question for your own migration. Run one session, then compare the
duration_secondson the events and the run count on your OpenAI account against what Codex caught.
When something else fits
- Choose
advisemode when you want the second opinion recorded but never in the way. Commit findings are advisory, so Claude is not sent back to fix and amend. The plan critique still runs on every plan, with the same 30 to 90 seconds, because it never blocks in either mode. - Stay with
strictmode when a finding that slips into a commit would cost you more than a few extra fix rounds. - Skip the challenger for a short, low-risk change where a second OpenAI bill and a slower first reply outweigh what a review is likely to catch. Without a marked session, nothing runs.