Migrating: Sonnet 4.6 to Sonnet 5
| Input / MTok | $3 → $3 |
|---|---|
| Output / MTok | $15 → $15 |
| Min cacheable prefix | 1,024 → 1,024 tokens |
| Effort levels | low, medium, high, max → low, medium, high, xhigh, max |
| Thinking | adaptive-opt-in → adaptive-default |
Three changes bundled into one same-tier move
This migration looks like a straightforward same-tier upgrade and carries three genuine changes worth checking independently: a tokenizer that counts more tokens for identical text at an unchanged sticker price, thinking flipping from opt-in to on-by-default, and a new top-of-range effort tier that didn't exist on the source generation at all.
The order to check them in
Re-count real prompts against the destination model first — this is the change most likely to
affect your bill directly and the easiest to verify with a single tool. Then confirm max_tokens
still covers a full response now that thinking runs by default. The new effort tier is the lowest
priority of the three to check, since it's optional new capability rather than a compatibility
requirement — evaluate it deliberately against your hardest tasks rather than adopting it as part
of the same cutover.
Why re-baselining matters more here than the sticker price suggests
An unchanged headline rate makes it easy to assume this migration is cost-neutral, which is exactly
the assumption the tokenizer difference undermines — re-run your actual cost projection against
real counted tokens rather than carrying forward a projection built on the source model's counting
behaviour. Pair that recount with a max_tokens check against the new thinking-on-by-default
behaviour before treating the migration as verified — both changes are silent on their own, and
checking one without the other leaves a real gap in your testing.
Related
See what actually changed from Sonnet 4.6 to Sonnet 5 for the full narrative walkthrough of all three changes together.
Verified 2026-08-08 against ClaudeHow facts module (src/data/facts/) — see /about/#accuracy.