Skip to main content

multimodel: step by step

Two commands. Two different reasons to bring in a model other than the one you're talking to.

CommandShapeUse it when
/multimodel:teamSeveral models, same question, independentlyYou want a verdict you can trust
/multimodel:delegateOne model, whole task, full sessionYou want the work done somewhere else

Both run on the claudish MCP server. What each command calls is on the multimodel plugin page.


/multimodel:team — get a verdict from several models

Step 1. Ask the question

/multimodel:team Review the auth implementation

Step 2. Say which models, or don't

You are talking to an agent, so ask for what you want in words:

/multimodel:team use grok and gemini — review the auth implementation
/multimodel:team ask the top tier models whether this migration is safe
/multimodel:team get three different providers to check this API for security holes
What you sayWhat you get
Name models — "use grok and gemini"Those, resolved to their current IDs
"top tier"The most capable available, at the highest cost
"three different providers"A spread, so agreement means something
Nothing about modelsA team composed for the question, from the live catalog

It remembers. The team you settle on is saved as your default, so the next run needs no instruction at all. Say "don't remember this one" for a one-off.

Which models exist right now: https://models.madappgang.com/recommended

Left alone, it reads the wording of your question and builds a team from the live catalog:

Your question mentionsIt picks
debug, error, bug, tracereasoning-capable models, mixed providers
research, investigate, analyzelarge context plus reasoning
implement, build, createfast models that can use tools
review, audit, check, verifyflagships from three different providers
architecture, design, refactorthe most capable available
test, coverage, e2efast models that can use tools

Step 3. Say how much agreement you need

Also just words:

/multimodel:team they all have to agree — is this migration safe?
What you sayNeeds
nothing50% — a simple majority
"strong agreement", "supermajority"67%
"they all have to agree", "unanimous"100%

Raise it when being wrong is expensive. Unanimous on a schema migration is cheap insurance; unanimous on a naming question just buys you a SPLIT.

Step 4. It runs them, blind

Flow diagram: one question fans out to external models and an internal subagent, their independent votes are collected, and the approval share is compared against a threshold to give one of four verdicts

Every model gets the task and nothing else. Not your opinion, not the other models' answers, not even the fact that it's one of several. It's told to assume no prior context.

That's the whole point of the command.

Three models that reach the same answer on their own is evidence. Three models that saw each other's work is one answer, repeated.

This is the Delphi method

People have used it on hard forecasting problems since the 1950s: ask several experts separately, keep them from hearing each other, then aggregate. It works because it removes the two things that wreck a group decision — the loudest voice, and the first answer that everyone else anchors to.

One difference worth knowing. Classic Delphi runs several rounds, showing each expert an anonymous summary and letting them revise. This runs one round. You get the spread as it actually was, and a SPLIT is a finding rather than a step on the way to consensus.

Every model gets its own folder

Each run creates a directory named for that run:

ai-docs/sessions/team-20260811-142233/
internal-result.md the internal reviewer's full analysis
verdict.md the aggregated result
… each external model's working area and response

Models work inside that folder and cannot read each other's files. That is what makes "blind" true in practice rather than only in the prompt — being unable to peek beats being asked not to.

It also means the reasoning outlives the conversation. When the table says a model REJECTED and you want to know why, its full answer is on disk instead of scrolled away.

These folders are scratch: gitignored, and safe to delete. If a run produced something worth keeping, move it somewhere real.

Step 5. Read the verdict

Each model ends with a vote block:

VERDICT: APPROVE | REJECT | ABSTAIN
CONFIDENCE: 1-10
SUMMARY: one sentence
KEY_ISSUES: comma-separated, or None

The arithmetic is APPROVE ÷ (APPROVE + REJECT). ABSTAIN is left out of the bottom of that fraction. It isn't counted against you.

ResultWhat it means
APPROVEDAt or above your threshold
REJECTEDBelow 100 − threshold
SPLITBetween the two. They genuinely disagree, and you get told that instead of a rounded answer
INCONCLUSIVEFewer than two real votes. This is why abstaining gets its own result rather than quietly becoming a rejection

A model that fails shows as FAILED and the run carries on without it. No retry, no swapping in a different model. A verdict from a team you didn't choose isn't the verdict you asked for.

If you want to be exact

Words are the normal way in. Flags are there for when you want no ambiguity — in a script, or when a model name reads like part of the question.

FlagWhat it changes
--models a,b,cOverrides everything else
--thresholdmajority, supermajority or unanimous
--no-memoryDoesn't save this team as your default
/multimodel:team --models grok,gemini --threshold unanimous Review the auth implementation

The preferences file

.claude/multimodel-team.json. Most people write one line in it:

{ "defaultModels": ["internal", "grok"] }

That's it. Now every /multimodel:team uses that pair unless you say otherwise.

internal isn't a real model. It means the one you're already talking to, and that vote is cast by a dev subagent through a separate call.

Everything else is optional:

WantAdd
A stricter default than 50%"defaultThreshold": "supermajority"
A different team for security questions"contextPreferences": { "review": ["model-a", "model-b"] }
A specific subagent for the internal vote"agentPreferences": { "review": "dev:reviewer" }
Flags passed to every external session"claudeFlags": "--effort high"

A note on model names

Every name is resolved against the live catalog, on every run. Nothing is read from a committed list of model IDs.

That matters because model IDs turn over fast, and a dead one doesn't announce itself — a request to a model that no longer exists looks a lot like a slow request.

Your own aliases still win, but they're checked against the catalog and flagged when they stop resolving. If you name a version and it isn't there, you get an error and the real alternatives — never a quiet downgrade to something with a similar name.


/multimodel:delegate — hand the whole task to one model

Not a question. A session. The other model runs a full Claude Code session with your plugins and skills loaded, and does the work itself.

Step 1. Say who, and what

/multimodel:delegate grok implement authentication

Arguments are read left to right:

TokenRead as
First bare wordThe model
Anything like /dev:architectA command to run inside that session
Everything elseThe task

So all three of these work:

/multimodel:delegate grok implement authentication
/multimodel:delegate gemini /dev:architect design the payment service
/multimodel:delegate /dev:research rate limiting patterns

Leave the model out and it uses your saved default.

Step 2. Answer its questions

Flow diagram: the task is parsed and the model resolved, a full external session starts, and its channel events either ask the user a question, return output, or report a failure and stop

When the model asks something, you get asked. It's never answered on your behalf.

Step 3. Read the result

Up to 50 lines comes back inline. Longer than that and you get the first 50 plus the session ID, so you can pull the rest.

Three rules worth knowing before you use it

It doesn't retry. If the model fails, you get the error as-is and it stops. No second attempt, no substituting a different model.

It doesn't read your project first. The external model investigates the codebase itself. Otherwise you'd be grading your own homework.

It doesn't answer for you. Every question comes back.


When neither one is right

Both cost time and tokens. For a quick sanity check on something small, just ask.

What you're paying for here is independence. That's only worth the money when being wrong would be expensive.