- Categories :
- More
Stop Copy-Pasting Between AI Chats: How We Wired Claude and ChatGPT to Review Each Other
If you want a second opinion on what an AI told you, the obvious move is to open a second AI in another tab and paste the answer in. It works, sort of. It is also slow, it loses everything the first AI knew, and it never actually ends, because you are the one deciding when two chatbots have argued enough.
There is a better version. You can connect the two assistants directly, so one can open a conversation with the other as a tool call, argue for a fixed number of rounds, and hand you a short verdict: here is what we agreed on, here is what I rejected and why, here is the one thing you have to settle. We built that at Braintek between Claude and OpenAI’s Codex, and this article is the actual setup, including the safety rules that keep it from turning into an expensive infinite loop.
Why does an AI need a second AI at all?
Because the failure mode of a modern AI is not gibberish. It is confident, well-formatted, plausible work that happens to be wrong in one specific place. A single model has no reliable way to flag that, and neither do you at a glance.
Two models built by different companies, trained differently, fail differently. When one reviews the other’s work, the mistakes that survive both are a much smaller set than the mistakes either makes alone. It is the same reasoning behind a second set of eyes on a contract or the 3-2-1 rule for backups: redundancy is not about distrust, it is about not having a single point of failure on something that matters.
The catch is that redundancy you have to perform by hand does not survive contact with a busy week. So it has to be automated.
What is wrong with copying answers between tabs?
Four things, and they compound.
Context loss. The first AI has your repository, your files, your project rules, and an hour of conversation. The second one gets a paragraph you pasted. It is reviewing a summary of the work, not the work.
You become the router. Every round, you copy, paste, reformat, and decide what to carry back. That is real minutes per round, and it is the part people quietly stop doing.
No stopping rule. Two AIs will politely refine each other forever. Without a hard limit, “let me just check one more time” is an open-ended loop with a per-token bill attached.
No verdict. You end up with two long answers and no decision. What you actually wanted was “these two disagree about exactly one thing, and here it is.”
How do you connect two AI assistants directly?
Both major coding assistants ship as command line tools, and both speak Model Context Protocol, the open standard that lets an AI call external tools. That is the hook. One CLI can be registered as a tool inside the other.
On our machines, Codex is registered as an MCP server inside Claude Code, once, at the user level:
claude mcp add --scope user codex -- codex mcp-server
That gives Claude two tools. One opens a Codex session and returns a conversation ID. The other continues that same session with a follow-up. The conversation persists across rounds, which is the whole point: the reviewer remembers what it already said.
Every call passes three parameters, and they are not optional:
sandbox: read-only
approval-policy: never
cwd: C:\path\to\the\repo\under\review
read-only means the reviewer can open every file in the project but cannot change a single one. never means it will not stop and wait for a human to approve an action that nobody is sitting there to approve. And cwd is what fixes the context-loss problem: the reviewer reads the real code itself instead of a pasted excerpt. You point at files, you do not paste them.
The division of labor is deliberate. One AI reviews, the other implements. The reviewer never gets write access, so a bad suggestion is a comment, not a commit.
Can it work in the other direction too?
Yes, and it should, or you have only bought yourself half the redundancy.
Codex reads a global instructions file at ~/.codex/AGENTS.md. We added one telling it that a second opinion is available and how to ask for it: run claude -p "<question>" from the shell, adding --allowedTools "Read,Grep,Glob" when the question needs file access. The -p flag runs Claude headlessly, one prompt in, one answer out, no interactive session. Whichever assistant is driving can now consult the other.
How do you keep two AIs from arguing forever?
This is the part most people skip, and it is the part that keeps the technique affordable.
Round one states a case, it does not dump a diff. A reviewer handed raw output invents objections to look useful. So the opening prompt includes what changed and where, why it was done that way, which alternative was rejected and for what reason, and the project constraints that bound the answer. Then an explicit instruction: find what is wrong with this, and if you agree, say so and say why. Do not manufacture objections.
That constraints line matters more than it sounds. The reviewing AI cannot see your standing instructions or your accumulated project memory. Ours does not know that our website copy avoids certain claims for legal reasons, or which pricing model we publish. Leave those out and you will spend a full round debating a recommendation that was never allowed in the first place.
Rounds two and three take a position on every point. Not a summary of what the reviewer said, a decision on each item: accept it and fold it in, reject it with the specific fact or constraint that makes it wrong, or flag it as a judgment call that belongs to a human. Rejections get sent back to the reviewer, because a rejection it never sees is not a debate, it is a diary entry.
Three rounds, hard stop. Whichever comes first: both sides agree, three rounds elapse, or the reviewer starts repeating itself. Cap it at three even when it feels close to converging, because agree-until-you-agree is unbounded by construction and the bill is not.
The output is a verdict, in three sections. Agreed, with what changed as a result. Rejected, with why it does not apply here and whether the reviewer conceded. Unresolved, needs a human, with both positions in one sentence each and a recommendation. That last section is the one worth reading first, and when it is empty it should say so outright.
When is this worth doing?
Not on everything. A rename does not need a second AI, and a question that is really about business preference should go to a person, not to a model that knows nothing about your company.
Where it earns its keep is anything expensive to get wrong: a database migration, a security-relevant change, an architecture decision you will live with for two years, a plan before anyone writes code. We also keep it on request rather than firing automatically on every code push. Constant automated review turns into noise people learn to scroll past, which is exactly how a safety net stops being one.
Everything above lives in a written procedure our assistant loads on demand, so the same discipline runs the same way every time instead of depending on whoever is at the keyboard remembering it. That is the real lesson, and it is the same one behind how we structured our AI’s memory: the value is in the process, not the model.
Where Braintek fits
We build this way on our own systems first. The cross-review loop above runs against our production code, our website, and our internal automations, and it has caught real defects that a single confident AI signed off on.
If your Houston or Dallas-Fort Worth team is putting AI into anything that touches customer data, money, or production systems, the question is not which assistant is smartest. It is what checks the assistant. That is the conversation our Claude consulting practice has all day, and it sits on top of the managed IT and security work that keeps the underlying systems sound.