Back to news

How to use Claude Code, Codex and Grok in the same project

Short answer: run each vendor's official command line tool in separate terminals over the same repository, with every AI agent in its own panel. It is worth doing because models from different companies disagree with each other, and the useful review lives in that disagreement. Since each CLI uses the subscription you already pay for, the cost does not change.

Anyone working with a single AI coding agent eventually finds its limit: ask the same thing twice and you get the same answer twice. Asking the model that wrote the code to review the code is asking it to find a mistake it did not see while writing.

Switching agents fixes that, but switching AI agents usually means switching windows, reopening the project and losing your place. That is where the idea dies in practice.

Why use AI agents from different companies

Different models fail in different places. One reaches for a library, another writes it by hand. One assumes the network always answers, another handles the failure first. Neither is right all the time, and it is precisely because they disagree that the disagreement is useful.

Ask the same review of two assistants from the same company and you get two versions of one opinion. Ask two from different companies and the points where they diverge are a map of what deserves your attention.

Official CLI or API integration: what is the difference

One distinction decides whether this works. Some tools talk to the model over an API and reimplement the assistant behaviour themselves. Others run each company's official command line tool, in a real terminal.

The second matters for a practical reason: the official CLI respects your repository's rules. The project instruction file, the hooks, the MCP servers you configured, all of it still applies. A layer that talks to the API from outside does not know those things exist, and you end up maintaining two configurations that have to agree with each other.

CanvasCode runs the official CLIs in real terminals. It does not paper over your repository: it hosts the agents inside it.

What it costs to run Claude Code, Codex and Grok together

The billing model follows from that. Because each agent runs the official tool, it uses the subscription you already pay for. If you have Claude Code and ChatGPT, both work side by side in the same canvas at no additional usage cost. The app does not charge per token, does not resell calls and does not sit in the middle of the conversation.

In practice this changes the maths of how many agents are worth opening. When every extra agent carries a variable cost, you ration. When it does not, the only remaining question is whether you can keep track of what they are all doing, and that is a question about the interface.

How the AI agents are laid out on screen

Each AI agent takes a panel inside the project canvas. Nothing stops two of them being from the same provider and a third from another. You have one implement, another review, and you compare both readings without moving.

That is the difference between having three subscriptions and having three agents working. The first part you already have.

Can you use Gemini CLI alongside Claude Code and Codex?

Yes, and the test is always the same: if the tool runs the official CLI in a real terminal, any AI agent you install works the same way, Gemini CLI included. Tools that integrate over an API only support whoever they wrote support for, and that list is closed.

Do you need an API key for each AI agent?

Not if the tool uses the official CLIs. Each CLI is already authenticated with the subscription you pay for (Claude Code, ChatGPT, Grok), and that session is what the agent uses. API keys are the model used by tools that talk to the model directly, and there usage is billed per token separately.

Do the AI agents respect my repository rules?

Only if they run the official CLI. The project instruction file, the hooks and the MCP servers are read by the CLI itself at startup, so they apply without you configuring anything twice. A layer talking to the API from outside sees none of those files.