Thanks AndersonInc.
What We Fix Custom AI Tools Sales Training AI for Agencies AI Visibility Governance Better Prompt Blog About Contact →
← All posts

What breaks when you swap the model underneath an AI tool?

Swapping the model under a working AI tool is a one-line change that behaves like a rewrite. We moved the Bottleneck Finder™ to a newer model and changed nothing else. Fifty-four of ninety-four calls stopped at the token ceiling instead of finishing, and we aborted the run and reverted.

The cause was not that the newer model was worse. It was that the newer model spends output tokens differently, and our ceiling had been sized against the old one. Treat a model swap as a change to the system, not a change to a setting.

A model swap is replacing the language model behind a working tool while leaving the prompts, the routing and the interface alone. On paper it is the cheapest upgrade available. In practice it is the one that most often ships broken, because nothing in the code changes and so nothing looks like it needs testing.

What actually went wrong in our run

The Bottleneck Finder is a seven-question diagnostic. A deterministic rules engine decides what the answer should be, and the model writes the prose. That separation is deliberate, and it is why we could swap the model at all without touching the logic.

We pointed it at a newer model and ran the full test set. Fifty-four of ninety-four calls came back with a stop reason of max_tokens, meaning the response had been cut off rather than completed. Briefs ended mid-sentence. We aborted the run and went back to the previous model, which is still what runs in production.

Two figures: 57 percent of calls cut off mid answer, 54 of 94 stopped at the token ceiling; and one line, the size of the change that caused it
Bottleneck Finder test run, September 2026. Nothing but the model string changed between the working run and this one.

Why does a newer model break a ceiling the old one fit under?

Because the ceiling counts something different now. Anthropic's own model migration guide is explicit about it: on current models, reasoning runs by default, and max_tokens is a hard limit on total output covering both the reasoning and the visible response. The guidance is to revisit that number for any workload that previously ran without reasoning.

Our ceiling had been tuned tightly around the length of brief we wanted. That was correct for the old model and wrong for the new one, where part of the same budget is consumed before a single visible word is produced. The number did not change. What it was buying did.

The general shape of this is worth holding onto. Any value you tuned against a specific model is a dependency on that model, whether or not it looks like one. Token ceilings, timeouts, retry counts, temperature, the length your interface expects back, the format your parser assumes. None of these live in the model, and all of them were set while watching one.

What else moves when the model does?

  • Output length and shape. The same prompt produces a different length, which breaks anything downstream that assumed a range.
  • Parsing. If you extract structured data from prose, a change in formatting habits breaks the extraction before it breaks the writing.
  • Latency and cost per call. Both change, and a tool that was comfortably inside a timeout can stop being so.
  • Refusals and edge-case handling. Prompts tuned around an older model's behaviour on hard inputs may not be needed, or may no longer be enough.

How do you test a swap before it reaches anyone?

Run the old model and the new one over the same fixed set of real inputs and compare the outputs side by side. Ours is ninety-four cases, which is enough to surface a systematic failure within a few minutes of reading.

Three things make the test worth running:

  • The set never changes between runs. If you change the inputs you cannot attribute the difference to the model.
  • Check the stop reason on every call, not the text. A truncated answer often reads fine until the last line. Ours would have passed a skim.
  • Count the failures before judging the quality. We never got to an opinion on whether the newer model wrote better briefs, because more than half the run never finished.

This is the same discipline behind the custom AI tools work generally, and it is the reason we keep the decision logic deterministic. When the rules engine owns the decisions, a model swap can only damage the prose, and the prose is something you can read and check.

Where this does not apply

If your tool makes a handful of calls a day, a fixed test set is overhead you do not need. Read the output for a week instead.

A clean swap also does not mean the new model is better for your job. It means it did not break. Those are separate questions and the second one takes longer to answer, because it needs a human reading output against a standard, not a pass rate.

And this post is one run on one tool. A different workload with a generous token ceiling may well swap with nothing happening at all. The lesson is not that newer models truncate. It is that a value you tuned against one model is not guaranteed to survive the next one.

A one-line change still deserves a test run, because the line is not the size of the change.

Free AI Audit — the Bottleneck Finder No email · No signup · Or book a call now

Common questions

What is a model swap?

A model swap is replacing the language model behind a working tool while leaving the prompts, the routing and the interface alone. For instance, moving a tool from Claude Sonnet 4.6 to Sonnet 5, or from one provider's model to another company's. It is a one-line change in the code and a system-level change in how the tool behaves.

Why does a newer model break a token ceiling the old one fit under?

On current models the model reasons before it answers, and that reasoning spends from the same output budget as the visible text. max_tokens is the setting that caps that budget, and it covers both. A ceiling tuned against an older model that did not reason by default now buys less visible output than it used to, even though the number never changed.

How do you test a model swap?

Run the old model and the new one over the same fixed set of real inputs, never changing the set between runs. Check the stop reason on every call rather than reading the text, because a truncated answer often reads fine until the last line.