# Anthropic Dropped Opus 5. Here Is What You Should Update.

*I audited my own agent harness against the new model and deleted 1,500 lines. Most of what I cut was advice that used to be correct.*

> When Opus 5 shipped I changed the model string and moved on, like everyone does. Then I noticed my harness was fighting the model. Model upgrades do not just raise capability, they reverse direction on specific behaviors, and every workaround you wrote for the old behavior becomes a bug. This is the audit: 91 skills, 33 commands, six changes, 1,500 lines deleted, and three real defects I only found because I finally reread the files.

Published: 2026-07-25 · Reading time: 9 min · Tags: ai, agents, claude-code, prompting, opus-5, harness
Canonical URL: https://huytieu.com/blog/opus-5-what-to-update/
Author: Huy Tieu (huytieu.com)

---

When a new model ships I do the same lazy thing everyone does. I change the model string, run something real, notice it feels sharper, and move on with my day.

That worked for about a week. Then I started noticing my setup arguing with the model.

A command I use for saving links spawned a background agent to fetch a single URL. My social drafting command spawned two agents, and the first one re-fetched a page that the step before it had already fetched. A skill for processing rough notes produced a document with fifteen headings, four of which said, in effect, nothing here. None of this was new behavior from my side. I had not touched those files in months. The model had changed underneath them.

Think about driving a car whose alignment pulls left. You learn to hold the wheel a couple of degrees right, and after a week you stop noticing you are doing it. Then someone fixes the alignment without telling you. Nothing about your hands has changed, and now you are the one steering into the ditch.

That is a model upgrade. A new model does not only get better. On specific behaviors it moves in a **direction**, and sometimes that direction is the opposite of the last one. Every workaround you wrote to compensate for the old model is still sitting in your prompt, still being followed, and now it is the thing steering you wrong.

```
   Opus 4.8                       Opus 5
   under-delegates    ------>     over-delegates
   so you wrote:                  and your fix now:
   "MUST use parallel agents"     multiplies cost 5x
```

So I stopped adding and did an audit instead. [My harness](/blog/scaling-the-harness/) is 91 skills and 33 commands in a markdown vault, adapted from [dwarves-kit](https://github.com/dwarvesf/dwarves-kit), driven by [Claude Code](https://claude.com/claude-code). I went looking for every place I had written a rule to fix a problem that no longer exists.

I deleted 1,500 lines. Here is what and why.

![Five behaviors that reversed between Opus 4.8 and Opus 5, with what was correct before and what to do now.](/assets/diagrams/opus-5-what-to-update.png)

## 1. My delegation rules were fixing a problem that had reversed

Opus 4.8 was conservative about subagents. It would grind through a fan-out task serially unless you pushed it. So, like everyone, I pushed. Nine of my commands opened with some variant of the same line:

> **Use parallel agents to analyze multiple braindumps simultaneously.**

> **The team brief MUST use parallel agents to maximize speed and efficiency.**

> **For multiple links, use parallel agents to analyze all URLs simultaneously.**

Then headings underneath them like `Phase 2: Parallel Analysis (Spawn 2-3 Agents Simultaneously)`.

Opus 5 reaches for subagents freely. Those lines went from useful correction to expensive instruction overnight. The link command genuinely spawned an agent to fetch one URL, because I told it multiple meant two.

The cost of a subagent is not the tokens it burns thinking. It is the round trip: it re-establishes context you already have, re-explores ground you already covered, writes a report, and then the lead reads the report. For a task the lead could finish in three tool calls, you have paid for the same work four times and added latency.

```
  lead could do it:        [read][read][edit]           3 calls

  delegated instead:       [spawn]
                             +-> [re-read context]
                             +-> [re-explore]
                             +-> [write report]
                           [lead reads report]         ~12 calls
```

The fix was not to ban delegation. It is genuinely better at managing parallel work than 4.8 was, and my research and team-brief commands fan out across eight Slack channels and six repos, which is real independent work. The fix was a threshold and a ceiling:

> Don't delegate work the lead can finish in a handful of tool calls. Fan out only for genuinely independent, sizeable tracks. If one subagent can do it, use one. Keep spawn counts low.

Then every blanket mandate became conditional. `Fan out only at 3 or more URLs.` `Fan out one reviewer per domain only when 3 or more domains have activity this week.` And the fixed-count headings (`Spawn 5 Agents Simultaneously`) became `one agent per domain with activity`, with a note that the roster is the full set, not a required set.

My social drafting command got the worst diagnosis. Phase 1 fetched the source URL. Phase 2 spawned an agent whose first instruction was to fetch the source URL. I had written a command that pays twice to read the same page and then hands editorial voice, the one thing I actually care about, to a worker. That one is now a single lead-side pass.

## 2. Telling it to double-check makes it worse

This is the finding I would have argued with a year ago.

Opus 5 verifies its own work without being asked. Which means the instruction *asking* it to verify no longer buys correctness. It buys over-verification: extra passes, extra narration about the passes, extra tokens confirming things that were already confirmed. [Anthropic's migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide) is blunt about it and says removing those instructions costs nothing in capability.

"Ask the model to self-check" is textbook prompt engineering. It is in every guide, including ones I have recommended. On this model it is wrong, which means any prompt library that applies it as a universal rule now needs a carve-out rather than a global.

There is a distinction underneath it that is easy to flatten, and flattening it is expensive:

```
  DELETE                             KEEP
  "double-check your answer"         curl the URL, confirm 200
  "re-verify before responding"      screenshot the page, look at it
  "add a verification step"          re-fetch the ticket, diff the state
  |                                  |
  model re-reading its own            observing an artifact
  reasoning and agreeing              that can contradict you
```

The left column is ceremony. The model reviewing its own reasoning was always the weakest possible check, and now it is redundant too. The right column is ground truth. It can come back and tell you that you were wrong, which is the entire point, and no amount of model improvement replaces it.

My harness runs on verification gates: every mutation ends by fetching back the thing it mutated. Publishes get curled. Posts get screenshotted. Ticket transitions get re-read. I kept every one of those. What I cut was the read-only case: a normal-lane task that writes one file no longer dispatches a fresh-context verifier agent to reread the file the lead just wrote. The lead checks it inline and records the evidence.

I also kept the fresh-context isolation for the cases that mutate real state, and I wrote the reason into the file so a future session does not helpfully trim it away. A verifier that never saw the worker's summary cannot be talked into believing it. That property has nothing to do with which model is running and it does not expire.

## 3. A template is a quota

The worst file in my vault was a skill for processing rough notes. 1,077 lines.

Most of it was output skeleton. Seven processing phases, each carrying an 18 to 31 line markdown template. Then a 250-line mandated format with fifteen emoji headings. Then a second 95-line format for a different case. Then a 190-line template for knowledge entries.

Inside those skeletons were slots. `### Theme 1`, `### Theme 2`, `### Theme 3`. `### Time Period 1`, `2`, `3`. In my research command: `Scenario A (Most Likely)`, `Scenario B`, `Scenario C`.

Opus 5 writes longer deliverables than 4.8 by default. Point it at a skeleton with three theme slots and it will produce three themes, because the template asked for three. If the source had two, the third gets invented. If a heading has nothing under it, it gets filler instead of getting deleted. The template is not describing the output, it is setting a quota.

```
  template says:            content has:        you get:
  Theme 1 / 2 / 3     +     two themes     =    two themes
                                                + one invented
  Scenario A / B / C  +     one likely     =    one real
                            outcome             + two padded
```

So the skeletons came out and descriptions of required content went in. Same requirements, no slots:

> Themes: each theme with the notes that feed it, what changed in it, and where it stands now. Include a section only when the content actually has something in it. An empty heading is worse than a missing one.

That file went from 1,077 lines to 152. The research command lost its A/B/C scenario grid and now says as many scenarios as the research genuinely supports, and that two well-evidenced scenarios beat three where the third exists to fill a slot. The contrarian-view section says to include one when a credible one exists and not to manufacture one.

I also added one line to the rule that governs every deliverable my setup produces, because this is the failure mode across all of them:

> Match length to substance. Cover what the task needs, then stop. A section with nothing to say gets deleted, not padded.

## 4. Effort is the cost dial, and the cheap settings are good now

Small change, large bill. `low` and `medium` effort on this model are strong in a way they were not before, and prior-model defaults do not transfer. Reflexively pinning the highest setting because it worked last generation is how you get a surprising invoice for a task that did not need it.

I split it by work type instead of running one global setting: highest for long-horizon build phases and coding, high as the default for anything requiring judgment, medium for the recurring routines that run on a schedule, low for mechanical fan-out stages that just collect and hand back a file. In multi-agent workflows I now declare that per stage up front rather than letting everything inherit one number.

## 5. Do not repeat what your harness already says

This one is almost funny. Several of the behavioral fixes I was ready to write into my project instructions, scope discipline, not narrating self-corrections, keeping responses tight, are already in Claude Code's own system prompt. They ship with the tool.

Writing them again in my own instructions would be duplicate instruction, which is itself one of the things that degrades output on this model. Over-prescription is not free. It is not neutral padding you can leave in for safety. Long enumerated rule lists compete with the actual task.

Before you add a rule, find out whether your tooling already states it. Checking took two of my six changes down to zero work.

## What the audit found that had nothing to do with Opus 5

The part I did not expect.

Rereading files I had not opened in months turned up three straightforward defects that had been live the whole time:

A stray triple-backtick in the notes skill had swallowed an entire section of competitive-intelligence trigger rules into a code block, and pushed the template that followed it out into prose. Those rules had not been rendering as rules.

A command file ended mid-code-fence. It was truncated in the committed version, not by me, and had been sitting broken in git for who knows how long.

Two skills in a routing list did not exist anymore. One was renamed, one archived.

None of this is a model problem. It is what happens when a file grows to 1,077 lines: nobody reads it, including the person who wrote it. The audit was worth doing for the Opus 5 tuning. It paid for itself again on defects that predated it.

## The questions I would actually ask

If you have a setup with any accumulated instructions in it, these are the five that found everything for me.

Where did I write a rule to push the model toward something it now does on its own? Those are the places you are still holding the wheel right. Delegation and self-verification are the two that flipped, and the fix is deletion, not rewording.

Which of my checks observe an artifact, and which just ask the model to agree with itself? Keep every one of the first kind. Cut the second kind without guilt.

Where have I written a fixed skeleton with numbered slots in it? Every slot is a quota, and the model will fill it whether or not the content exists.

What am I paying for effort out of habit rather than measurement?

What is already handled one layer down, by the tool, that I am restating?

I do not think this generalizes into a rule you apply once. The specific direction reversed between 4.8 and 5, and it will reverse again on something else next time. The habit that transfers is smaller than that: when a model changes, go find the workarounds you wrote for the old one, because they are still in there being obeyed.

Mine were. All 1,500 lines of them.
