Skip to content
OSOKORO

Switching models in the middle of a task

Why one model for a whole task is usually the wrong default, what a switch actually costs, and the case for never doing it silently.

Published Aug 22, 20264 minutes to read

The question people ask is which model is best for coding. The question that saves money is which model is best for this part of what you are doing, which is usually a different answer three times inside one task.

The parts of a task have different requirements

A realistic change — say, adding a field to a form, threading it through validation, and updating the tests — decomposes into work with genuinely different needs:

Finding the files. Mechanical. Whatever is fastest and cheapest is correct; a frontier model reading your directory listing is money set on fire.

Deciding the approach. The part where being wrong is expensive, because everything downstream is built on it. Worth the best model you have.

Making the edits. Mostly transcription once the approach is settled. A mid-tier model does this well and does it faster.

Explaining the failing test. Back to reasoning, on a smaller context.

Running all four on one frontier model works and costs several times what it needs to. Running all four on a cheap model produces an approach you will throw away, which costs more.

What a switch actually costs

Not free, and the cost is the part people miss.

Switching model mid-task discards the prompt cache. Every provider's cache is keyed to a prefix sent to that provider; a different model means a cold start, so the accumulated conversation is re-sent as uncached input at the full rate. If you have twenty thousand tokens of context built up, the switch costs you a full uncached read of all of it.

So the useful rule is not "switch often". It is switch at natural boundaries — after the approach is agreed, before a long mechanical stretch — where the context is small or about to be rebuilt anyway. Switching every few turns pays the cold-start penalty repeatedly and can easily cost more than staying on the expensive model.

The prices are generated, not typed in

The rates behind any of this are only useful if they are current, and hand-copied vendor prices go stale silently. Codoro's catalogue — roughly 216 models — is generated from Vercel AI Gateway rather than transcribed, with a CI check that fails when committed rates drift from published ones.

That check exists because of what it replaced. Before it, every hosted rate was copied by hand from a vendor's pricing page, and the run of commits before the generator landed were all repairs to that: a surcharge implemented for one vendor out of three, a model sold with no key behind it, a legacy model silently substituted, a model with no published price at all.

The catalogue carries four numbers per model — input, output, cached input, cache write — because a table with one input price cannot express the cache economics above, and a table that cannot express them will be used to make a decision that is wrong.

Providers available

Anthropic (Claude Fable 5, Claude Opus 5, Claude Sonnet 5), OpenAI (GPT-5.6 Sol, Terra, Luna), DeepSeek, Google (Gemini), xAI (Grok), and Moonshot (Kimi) with hosted credits. Bring-your-own additionally covers Z.ai, Alibaba and Mistral.

Not supported, by decision rather than backlog: Ollama, OpenRouter, and arbitrary OpenAI-compatible base URLs. An editor that will send your repository to any host a config file names can be pointed at a host you did not choose, and the failure mode is silent exfiltration.

The switch that must never be silent

There is one case where the editor changes model on your behalf: hitting a spend cap. The default per-run cap is $2.00, editable per task, with a $25.00 per-developer-per-day backstop set by the team owner.

At the cap the run pauses and offers a cheaper model. It does not switch and carry on.

That is deliberate and it is the strongest opinion in this article. A run that silently downgraded mid-task would hand you a single diff to review, half of it reasoned about by one model and half by another, with nothing in the output marking the seam. You would review it under assumptions that stopped being true partway through and you would have no way to know which half to look at harder.

A pause is worse ergonomics. It is the only honest behaviour.

A workflow that works

  1. Start on a cheap model for orientation. Let it find the files and summarise what is there.
  2. Switch up for the plan. Ask for the approach before any edit. This is where the money is worth spending and the context is still small.
  3. Switch down for the mechanical stretch once the approach is agreed and written into the task.
  4. Set a per-run cap you would be annoyed to hit. A cap above your worst case has never fired and is not protecting anything.
  5. When the cap fires, ask why the task cost four times your estimate rather than raising it. The answer is nearly always turns, and turns are nearly always an underspecified task.

Status

No public download. The macOS build is in preview and the download page is a waitlist until a signed release manifest says otherwise. The model catalogue and the pricing behaviour described here are real and tested; the checkout is not open.

Read next

All writing