{"slug": "opus-5-5-vs-sonnet-5-the-pricier-model-wrote-my-code-for-about-half-the-cost", "title": "Opus 5.5 vs Sonnet 5: the pricier model wrote my code for about half the cost", "summary": "A developer's analysis of five days of Claude Code transcripts found that Opus 5.5, despite listing at twice Sonnet 5's per-token price, cost roughly 0.45 times as much per unit of comparable coding work (plausible range 0.29–0.71), because cached reads are priced identically at $0.20 per million tokens and Opus made six times fewer API calls per 100 changed lines. Across 203 implementer PRs and 411 reviewer agents, agent cost tracked 'number of calls × average context size' almost perfectly (correlation 0.99), with 68% of a $593 six-hour window going to cached reads. The author also replaced Fable 5.1 with Opus 5.5 as code reviewer at about a third of the price.", "body_md": "Opus 5.5 lists at twice the price of Sonnet 5. In my coding agents it cost about\n\nhalf as much per line of code. It also replaced Fable 5.1 as my code reviewer,\n\nat about a third of the price.\n\nThis post is the data behind that switch: five days of my own Claude Code\n\ntranscripts, priced at API list prices, with the parts that are proven kept\n\napart from the parts that are only likely.\n\nI work in waves. A lead model reads a list of GitHub issues and splits them into\n\nlanes that touch different files. Each lane gets an **implementer** agent that\n\nwrites the code in its own git worktree and opens a PR. A separate **reviewer**\n\nagent then checks every PR: it runs the tests, breaks the code on purpose to see\n\nwhether a test goes red, and checks the PR description's claims. Nothing merges\n\nuntil a reviewer passes it. A failed review (\"needs-fix\") goes back to the\n\nimplementer for another round.\n\nBetween September 20 and 25 that produced 203 implementer PRs and 411 reviewer\n\nagents across four models. I pay a flat subscription, so the dollars below are\n\nAPI list prices, used as a measure of how much of my usage limit each agent\n\nburned.\n\n| Model | Input $/M | Output $/M | Cached read $/M | \n|---|---|---|---|\n| Sonnet 5 | 2 | 10 | 0.20 | \n| Opus 5 | 5 | 25 | 0.50 | \n| Opus 5.5 | 4 | 20 | 0.20 | \n| Fable 5.1 | 10 | 50 | 0.25 | \n\nThe last column is the one that matters, and the next section shows why.\n\nAn agent doesn't pay for its work once. Every step is a new API call that sends\n\nthe whole conversation again: the brief, every file it read, every test log.\n\nMost of that comes from the prompt cache, so each call is cheap, but an agent\n\nmakes hundreds of them.\n\nIn one six-hour window on September 24, my agents used about $593 at list\n\nprices. **68% of that was cached reads**, 22% cache writes and 10% output.\n\nAcross 57 agents, cost tracked \"number of calls × average context size\" almost\n\nperfectly (correlation 0.99). The worst offenders were Sonnet implementers that\n\nran 400–600 calls while their context grew to 600–970K tokens, because nothing\n\ncompacted it before about 967K. Every one of those calls re-read the whole\n\nthing.\n\nSo the price per token matters less than you'd think. What matters is how many\n\nsteps an agent takes and how much it carries through each one.\n\nCached reads cost the same $0.20 per million tokens on Opus 5.5 and Sonnet 5.\n\nOnly input, output and cache writes cost twice as much on Opus. For my Sonnet\n\nimplementers, cached reads were about three quarters of the bill (the median\n\nlane), so the same call costs only about 25% more on Opus 5.5, not twice as\n\nmuch.\n\nOpus 5 only ran on September 20–21 and Opus 5.5 only on September 23–25, so each\n\nis compared with Sonnet 5 on the same days:\n\n| Days | Model | Cost per 100 changed lines | API calls per 100 lines | \n|---|---|---|---|\n| Sep 20–21 | Sonnet 5 | $1.57 | 30 | \n| Sep 20–21 | Opus 5 | $2.45 | 15 | \n| Sep 23–25 | Sonnet 5 | $2.13 | 38 | \n| Sep 23–25 | Opus 5.5 | $0.39 | 6 | \n\n\"Changed lines\" is additions plus deletions in the PR. The median PR was the\n\nsame size for Sonnet 5 and Opus 5.5 (484 and 504 lines), so Opus isn't winning\n\nby writing more lines. Over all five days, per 100 changed lines, Opus 5.5 made\n\n6 times fewer calls than Sonnet, read 10 times less context and wrote 3 times\n\nless output.\n\n**Opus 5 was not wasteful; its price was.** Its prices are exactly 2.5 times\n\nSonnet's on every kind of token, so at Sonnet's prices it would have cost $0.98\n\nper 100 lines against Sonnet's $1.57. Opus 5.5 keeps that efficiency and drops\n\nthe price.\n\nThe table says Opus 5.5 cost a fifth of Sonnet. That isn't a fair comparison,\n\nbecause I chose which tasks went to Opus, and I gave it mostly authentication\n\nand crypto work. So I compared units of work of the same size and kind, in the\n\nsame repository and the same session. Measured that way, **Opus 5.5 cost about 0.45 times what Sonnet did** (plausible range 0.29–0.71).\n\nThat's still a big saving, and the more interesting part is where it comes from.\n\n**The first draft costs about the same.** Up to the first review verdict, Opus\n\n5.5 cost about 0.77 times Sonnet, and that range includes equal cost. Opus did\n\nbundle its work into fewer, longer shell commands: a median of 31 calls before\n\nthe first review, against Sonnet's 97.\n\n**The saving is in the fix rounds.** In the September 24 window, fix rounds were\n\nabout 71% of implementer spend. A Sonnet implementer that had already grown a\n\n900K context paid $5.60–6.40 for a small last-round fix, because it re-read\n\neverything to make it. Opus carried a smaller context (a median peak of 170K\n\nagainst Sonnet's 246K), and in the 5 Opus lanes of the fair split I describe at\n\nthe end it needed a median of 2 review rounds against Sonnet's 3.\n\nOn ordinary code, most PRs from every model failed their first review. Sonnet 5\n\nand Opus 5 passed 12–20% of the time. In one six-hour window on September 24,\n\nall 20 PRs that changed production code failed their first review.\n\nOpus 5.5's raw first-review pass rate looks great: 10 of 18. But almost all of\n\nthose passes were auth work that I had routed to Opus and that Fable reviewed.\n\nOn other code, Opus 5.5 passed 1 of 7, which is too few to say anything. Look at\n\nwhy PRs fail, and the model matters less: at least 7 of those 20 failures were\n\ntests that stayed green on broken code, or a PR description that claimed\n\nsomething untrue. I don't expect a smarter model to fix that, so I changed the\n\nprocess instead; it's too early to know whether that worked.\n\nUntil this week, my implementers ran at whatever effort their lead used, so the\n\npast lanes cover several levels:\n\n| Implementer | Effort | Cost per 100 changed lines | Passed first review | \n|---|---|---|---|\n| Sonnet 5 | medium | $1.72 | 8 of 64 (12%) | \n| Sonnet 5 | high | $2.52 | 9 of 53 (17%) | \n| Sonnet 5 | xhigh | $2.56 | 1 of 13 (8%) | \n| Opus 5.5 | medium | $0.39 | 9 of 16 | \n\nSonnet at high effort cost 35–51% more per line than at medium, with no clear\n\ngain in review results. Opus 5.5 did its auth and crypto work at medium. This is\n\nobservational (repositories ran at different efforts), so it's a signal, not\n\nproof. It was enough to stop me guessing effort up front.\n\nOn the same kind of PR in the same days, with both priced at Opus 5.5's rates, a\n\nreview round cost $1.36 on Opus 5.5 and $1.50 on Fable 5.1: about the same\n\namount of work. At real list prices, Fable cost about 2.7 times more, and it was\n\nslower (a median of 9 minutes a round against 6.5).\n\nFable wasn't stricter either. On Sonnet-written code in the same days, it\n\nblocked 17 of 19 first submissions, and Opus 5.5 blocked 74 of 92. That is no\n\nreal difference.\n\nOn the four PRs that both reviewed at the same time, **each caught security bugs the other missed**. One was a delete path that followed symbolic links: Fable\n\nIt isn't a controlled experiment. I chose which tasks went to Opus, the sample\n\nis small (19 Opus 5.5 PRs), and list prices are a stand-in for subscription\n\nusage. I started a fair split, with every other lane on Opus 5.5 regardless of\n\nthe task, and stopped it early: the like-for-like comparison and the token\n\ncounts pointed the same way. Opus 5.5 was cheaper, probably around half, and at\n\nworst no more expensive.\n\nOne gap favours Opus in these numbers. In at least 3 of the 8 Opus PRs that\n\nfailed their first review, the lead agent made the fix itself, so that fix's\n\ncost is missing from Opus's total. That happened in only 1 of 89 Sonnet cases.\n\nThe lesson I'd keep even if the model prices change next month: in agent work,\n\nyou pay for steps and context, not for tokens. Measure calls and context per\n\nunit of work, and the right model is usually obvious.", "url": "https://wpnews.pro/news/opus-5-5-vs-sonnet-5-the-pricier-model-wrote-my-code-for-about-half-the-cost", "canonical_source": "https://dev.to/anton_shubin_f26b3cb5a572/opus-55-vs-sonnet-5-the-pricier-model-wrote-my-code-for-about-half-the-cost-2nn5", "published_at": "2026-09-26 05:54:16+00:00", "updated_at": "2026-09-26 05:59:57.978019+00:00", "lang": "en", "topics": ["large-language-models", "ai-agents", "ai-tools", "developer-tools"], "entities": ["Claude Code", "Opus 5.5", "Sonnet 5", "Opus 5", "Fable 5.1", "GitHub", "Anthropic"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/opus-5-5-vs-sonnet-5-the-pricier-model-wrote-my-code-for-about-half-the-cost", "markdown": "https://wpnews.pro/news/opus-5-5-vs-sonnet-5-the-pricier-model-wrote-my-code-for-about-half-the-cost.md", "text": "https://wpnews.pro/news/opus-5-5-vs-sonnet-5-the-pricier-model-wrote-my-code-for-about-half-the-cost.txt", "jsonld": "https://wpnews.pro/news/opus-5-5-vs-sonnet-5-the-pricier-model-wrote-my-code-for-about-half-the-cost.jsonld"}}