Posts / agentic-coding

Opus 5, a Broken Benchmark, and Two Subagent U-Turns: July in Agentic Coding


Four Claude models in two months. That’s the number that stopped me mid-coffee this week. Anthropic shipped Mythos 5, Fable 5, Sonnet 5, and now Opus 5, all since early June. I don’t know how their eval team is sleeping, but Opus 5 is the one actually worth talking about.

The pitch is cost, not raw grunt. Same pricing as Opus 4.8, 1M context on by default now, and a new effort dial (low/medium/high) that lets you decide how hard the model tries before it answers. On SWE-bench Verified it’s sitting at 96%, and on Anthropic’s own Frontier-Bench it actually leads the field while burning fewer output tokens than its predecessor. That’s the bit I care about. Every DevOps person I know has a horror story about an agent that “solved” the task by writing forty thousand tokens of scaffolding first. Fewer tokens for the same or better result is the kind of improvement that doesn’t make a flashy headline but actually changes your monthly API bill.

I’m swapping my Claude Code default over this week and re-running my eval set before I touch a single prompt. That’s the discipline bit. It’s tempting to just believe the marketing and move on, but I’ve been burned by “better model, same workflow” assumptions before.

The subagent flip-flop is the more interesting story, honestly.

Claude Code capped concurrent subagents at 20 and banned nested spawning entirely on 21 July. Three days later, nesting came back, capped at depth 3. Four days, two production behaviour changes, no fanfare. If you had an orchestrator built assuming nested spawns just worked, it silently started failing with a “needs approval” payload instead of doing anything.

I find this more reassuring than alarming, if I’m honest. Anthropic is clearly watching real usage and adjusting live, not shipping a feature once and walking away. But it also means anyone building serious multi-agent pipelines on Claude Code needs to treat the environment variables governing concurrency, depth, and total spawn count as part of their deployment config, not a one-off tweak you set and forget. I’ve added a capability check to the top of my own orchestration script this week. Cheap insurance.

The benchmark story is the one that actually annoyed me.

OpenAI audited SWE-bench Pro’s public task split and found roughly 30% of the tasks are broken; broken meaning the gold patch is reachable via git history, or the tests pass known-bad implementations, that sort of thing. This is the same month multiple vendors are citing SWE-bench Pro scores within a point of each other for Opus 5, Fable 5, GPT-5.6 Sol and Kimi K3. A one-point gap on a benchmark where a third of the underlying tasks are questionable isn’t a result. It’s noise dressed up as a result.

I’ve been sceptical of leaderboard-driven model selection for a while, and this doesn’t change my mind so much as confirm it. If you’re picking a model for procurement reasons based on a benchmark score with no version or harness attached, you’re making a decision on vibes with extra steps. Build your own small eval from your actual codebase. It’s more work, but it’s the only number that means anything to you specifically.

Smaller things worth a mention. Windsurf’s transition to Devin Desktop completed on 1 July, Cascade is properly retired now, and Cognition rewrote the local agent from scratch in Rust with real efficiency gains. If you’ve got old automation still calling Cascade by name, it’s broken already, not going to break. And MCP shipped its biggest spec revision since launch, moving to a stateless core so servers can run on serverless infrastructure without session-affinity headaches. Nothing breaks today, but Roots, Sampling and Logging are on a twelve-month deprecation clock, so it’s worth reading the migration guide now rather than at month eleven.

None of this month felt like a step change. It felt like an industry doing maintenance: tightening cost curves, walking back overconfident defaults, auditing its own yardsticks. That’s not nothing. I’d rather see vendors admit a benchmark is a third broken than keep quoting it uncritically forever. Whether the next model drop in six weeks undoes all of this, I genuinely don’t know.