Blog

April 27, 2026

Three Months With Opus 4.6, Then Everything Changed

Three months in, Opus 4.7 happened and a free local model caught what I couldn't. Notes from the daily driver seat.

A profile portrait repeating backwards into the dark, day after day in the driver seat

Anthropic shipped Opus 4.6 instead of Sonnet 5 a couple of months ago. Nobody expected that. I moved my whole stack to it the morning it landed.

What follows is the honest version: the review I wrote in February when 4.6 was new, then the April update after 4.7 happened and the picture changed.

February: 4.6 first impressions

The good: a 1M-token context window in the API beta, stronger code review in my tests, better self-correction and adaptive thinking that decides when to spend more effort.

The expensive part: $5 per million input tokens and $25 per million output tokens at launch, with higher rates beyond 200k context.

It’s more careful than 4.5. Pauses more, reads more files, catches more edge cases. But slower (1-2 min tasks now take 5-10), more corporate in tone, and context gathering is still weak. I gave it a monorepo and asked about React conventions; it ignored the React Native app until I prompted again.

I could not defend a clean percentage for the improvement. It was better at some reviews, slower on routine work and occasionally worse at finding the right context. Use it when the extra review quality pays for the wait. Skip it when latency and cost dominate.

That was February. By April, the picture had changed.


April update: three months in

What actually happened

April 16: Opus 4.7. April 23: GPT-5.5. A week apart, not the same day.

The same week as GPT-5.5, Anthropic published a post-mortem on Claude Code quality. Three regressions over the previous month: a default reasoning-effort drop from high to medium, a thinking-cache bug that compounded across turns, a verbosity-reduction prompt that cost 3% on intelligence evals. All fixed in v2.1.116+. Usage limits reset. Credit to Anthropic for naming the actual mechanisms instead of waving at “model variance.”

The degraded behavior I had felt before 4.7 was documented. That matters because model quality, client defaults and caching bugs can look identical from the user’s chair.

The Reddit and X discourse collapses three separate things into one “4.7 is bad” narrative: those Claude Code regressions (now fixed), the new tokenizer (input up 1.0-1.35x, real per-task cost up 1.5-3x), and 4.7’s deliberate shift to literal instruction following (“will not silently generalize”) which breaks prompts that worked on 4.6.

4.7 was not the disaster the discourse painted. Anthropic reported benchmark gains in finance, legal work and coding. On my work, with the recommended settings, it still missed things I expected it to catch. My early GPT-5.5 runs were markedly better, but that is a personal workload comparison, not a benchmark.

The moment that decided it

I was debugging a race condition in a redirect callback. Asked Opus 4.7. Read the file, made a recommendation, moved on. Confident. Wrong direction.

I had Kimi-k2.6 running locally via Ollama as a second opinion. Free model. Pulled the same file, immediately flagged a stray await on shouldShowPendingIntro() at line 941. Same race window. Opus had read the file and not seen it.

A local model found what that Opus call missed. One example does not rank the models, but it permanently changed how I review their work.

The workflow

The model swap changed less than the workflow around it.

I run cmux. CLI on top of tmux that turns each agent into its own surface. Codex in one. Claude Code in another. Kimi-k2.6 in a third. I coordinate from my own. The agents talk to each other directly via XML envelopes codified in AGENTS.md: <msg from="claude" to="codex">…</msg>. Sending a diff to a peer for review is one command. cmux send, then cmux send-key Enter, read with cmux read-screen.

Cross-family review catches errors that repeated review by one model can preserve. When the agents disagree, I know where to inspect. Because sending a diff to another pane is cheap, review becomes the default rather than a step I remember only after something breaks.

The models fail differently. I have seen them split on race conditions, tautological branches, stale comments and dead UI surfaces. Trust still has to be calibrated: Kimi sometimes invents file details, so every path, line number and symbol gets checked before anyone acts on it.

The workflow isn’t Claude-specific. It works because the agents are different.

Where I landed

GPT-5.5 in ChatGPT and Codex for the heavy lifting. Kimi-k2.6 via Ollama as the free local second opinion. Claude Code is still in the panel, but as one voice, not the panel itself. Waiting for OpenAI Business to clear to x20. When it does, most of my Claude Code use goes away.

StarDust, my own thing, is closing in on friends-and-family. App goes to Apple Store review this week. That’s part of why multi-agent stopped being a curiosity and became a requirement.

The infrastructure question

It is tempting to explain every quality change through a lab’s compute position. I cannot prove that from the outside. Anthropic’s post-mortem names concrete client-side causes: reasoning effort, a thinking-cache bug and a prompt change. Those are enough to explain what users saw without turning capital expenditure into a theory of model behavior.

Capacity still affects limits, latency and price. It just does not tell me which model will catch the next race condition in my code. I now test that directly instead of inferring it from partnership announcements.

The framing

You can’t run on a release schedule. You run on what’s working today. What’s working today is a free local model, a frontier OpenAI model and a tmux script gluing them together.

The lesson is broader than switching to GPT-5.5. Stop paying for the assumption that one model should answer everything.

If you’re paying Opus prices for daily work, run the same comparison against a free local model before your next invoice.

Why I keep writing this down

If you have run the same comparison on your own code, send me the result. I care more about a concrete miss than another leaderboard screenshot.

I write across development, design and AI because those boundaries disappear when I am shipping. This is the record I would want to read from someone else doing the same work.

Turn the idea into a decision

If this touches something you're building, let's make it concrete.

A focused 30-minute conversation is usually enough to find the real constraint, the next useful move — or whether I am the wrong person.