cd /news/ai-tools/is-claude-opus-5-5-nerfed-claude-cod… · home › topics › ai-tools › article
[ARTICLE · art-166403] src=dev.to ↗ pub= topic=ai-tools verified=true sentiment=· neutral

Is Claude Opus 5.5 Nerfed? Claude Code Ignores Your effortLevel. How to Fix It

A developer's investigation of Hacker News reports that Claude Opus 5.5 had degraded found no evidence of a model change, instead tracing the perceived regression to Claude Code default and configuration changes. Since Claude Code 2.1.317 (November 3), subagents running on a different model use that model's saved or default effort level rather than inheriting the session's, and a user-level effortLevel in ~/.claude/settings.json is ignored by Opus 5.5, which defaults to medium effort instead of high. The developer recommends setting effort explicitly per model, since project, local and managed settings still apply effortLevel to every model.

by read7 min views3 publishedNov 9, 2026

One Hacker News commenter says their Fable workflows went from a "~85%" success rate to "~10%" about two weeks ago. Another says Opus 5.5 is "suddenly fumbling basic tool calls" and failing to finish tasks even at high effort. A third says nothing happened at all: "It's just a new summarizer, the model and performance itself is unchanged."

So is Claude Opus 5.5 nerfed? I read everything Anthropic has published since launch (the Claude Code changelog, the status page, the API docs) and put it next to the HN thread that grew out of this post, submitted as "Is Opus 5.5 nerfed? Thinking patterns changed on November 3." I couldn't find anything in that record showing the model got dumber. What I found was a pile of default changes that make it behave differently, and the worst one is this: if you set effortLevel in ~/.claude/settings.json before Opus 5.5 shipped, Claude Code ignores it on Opus 5.5 and runs it at medium.

There is no announcement of a new Opus 5.5 checkpoint. The model ID is still claude-opus-5-5, the same one Claude Code made the default Opus model in 2.1.280 on September 22. What did ship is a run of Claude Code releases that touch effort, thinking and context. From the changelog:

Version Date Change that could feel like a "nerf"
2.1.311 Oct 26 ultrathink now runs its turn atxhigh effort on Opus 5.5
2.1.312 Oct 27 Automatic model switches after a flagged message now also cover custom model names ( CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK=1 turns them off)
2.1.314 Oct 30 Idle compaction in VS Code and the desktop Code tab: a 200K+ token conversation left idle gets summarized
2.1.316 Oct 31 New CLAUDE_CODE_SUBAGENT_EFFORT env var for subagent effort
2.1.317 Nov 3 Subagents on a different model "use that model's saved effort level or its default, instead of the session's effort level"
2.1.318 Nov 4 Removed the 2.1.288 fix that kept earlier thinking when resuming old conversations; "that thinking can now be dropped"

Look at the November 3 row. Say your main session runs Fable 5.1 at high and your subagents run on Opus 5.5. Before 2.1.317 they inherited high. From that day on, unless you saved a level for Opus 5.5, they get Opus 5.5's default, which is lower than most people assume.

The status page has seven incidents between October 25 and November 9. All seven describe elevated errors; the Nov 8 one is titled "Degraded performance", but its text is about errors on Fable 5.1. None mentions output quality, and only one (Oct 25) names Opus 5.5 at all.

If I had to bet on one thing behind most of the thread, it's this. Per the effort docs, most Claude models default to high. Opus 5.5 and Haiku 5.5 default to medium. The migration guide spells it out: "Set effort explicitly: the default is medium, where Claude Opus 5's is high."

Claude Code makes it worse. The settings reference says a top-level effortLevel in ~/.claude/settings.json "keeps applying where it applied before, on Opus 5, Fable 5.1, and earlier models. Opus 5.5 and models released after it ignore it and start at their own default."

None of this landed in November. It shipped with Opus 5.5: the 2.1.280 changelog entry (September 22) says a level saved before /effort became per-model no longer applies to newly released models. Project, local and managed settings still apply effortLevel to every model; it's the user-level file that gets skipped.

So if you put "effortLevel": "high" in your user settings back in the Opus 5 days and never touched it again, you've been running Opus 5.5 at medium the whole time while believing you were on high. I'm not surprised it feels worse.

On Opus 5.5 you can't turn thinking off. Adaptive thinking is always on, and thinking: {"type": "disabled"} or a manual budget_tokens gets rejected with a 400. On top of that, thinking.display defaults to "omitted", so thinking blocks come back empty unless you ask for "summarized". The short notes the model writes between tool calls also now arrive as thinking blocks, which are empty by default (migration guide).

In Claude Code, showThinkingSummaries defaults to false, and the docs say plainly that "Redaction changes only what you see, not what the model generates." If what bothers you is a different-looking summary or a collapsed stub, that's the summarizer you're looking at, and it tells you nothing about the model's output. The HN commenter who blamed the summarizer has a point, and so does listedb: "the change in display adds to the feel."

Some of the thread doesn't fit any config change I could find:

Nobody from Anthropic replied in the thread. One commenter pointed out that sites tracking model performance over time don't show these nerfs. That's not proof either way, because a provider could detect benchmark traffic and treat it differently, as a couple of others speculated. Which is why I'd rather run my own test than keep arguing from vibes.

The idea is to pin everything first and only then measure.

The opus alias "updates over time" per the model config docs. Use the full ID:

claude --model claude-opus-5-5 --effort high

In ~/.claude/settings.json:

{
  "model": "claude-opus-5-5",
  "modelSettings": {
    "claude-opus-5-5": { "effortLevel": "high" }
  },
  "showThinkingSummaries": true
}

If you use subagents, the surest fix for the November 3 change is to set effort in each subagent's definition. CLAUDE_CODE_SUBAGENT_EFFORT=high (2.1.316+) also helps, but the changelog only promises it applies "when nothing else names one". Want to rule out a fallback model sneaking in? Set CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK=1.

Pick ten tasks from your real work that have a checkable answer: a failing test to fix, a SQL query with a known result, a refactor that has to compile, a bug you already solved. Store the prompt and the pass condition. Then run them headless against the API with the effort set explicitly:

#!/usr/bin/env bash
MODEL=claude-opus-5-5
EFFORT=${1:-high}
OUT="runs/$(date +%F)-$EFFORT"
mkdir -p "$OUT"
for f in prompts/*.txt; do
  for i in 1 2 3; do
    jq -n --arg m "$MODEL" --arg e "$EFFORT" --rawfile p "$f" '{
      model: $m, max_tokens: 64000,
      output_config: {effort: $e},
      thinking: {type: "adaptive", display: "summarized"},
      messages: [{role: "user", content: $p}]
    }' | curl -s https://api.anthropic.com/v1/messages \
        -H "x-api-key: $ANTHROPIC_API_KEY" \
        -H "anthropic-version: 2023-06-01" \
        -H "content-type: application/json" \
        -d @- > "$OUT/$(basename "$f" .txt)-$i.json"
  done
done
for r in "$OUT"/*.json; do
  echo "$(basename "$r") $(jq -r '.usage.output_tokens // .error.message' "$r")"
done

The 64k max_tokens comes from the migration guide's advice for xhigh and max, since thinking counts against it. Each prompt runs three times, because one sample tells you nothing. Score pass/fail by hand or with a check script, and keep the token counts next to it. Do it today, before the next "nerfed" thread, and again whenever it feels off. If pass rates hold and token counts hold, it's you or your config. If pass rates drop at the same pinned model and effort, you've got a real regression and a repro to attach to a bug report, which beats another comment saying "it feels dumber."

My take: Anthropic made this mess easy to fall into. Changing the default to medium, ignoring your old effortLevel, hiding thinking by default and changing subagent effort inheritance in a point release is a lot of silent behavior change. Most of it is documented, in places nobody reads. That's a fair thing to be angry about, but it's a different complaint from "they swapped the weights."

Have you noticed Opus 5.5 behaving differently since early November, and on what kind of task? And before you answer: what was your effort actually set to?

── more in #ai-tools 4 stories · sorted by recency
── more on @anthropic 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/is-claude-opus-5-5-n…] indexed:0 read:7min 2026-11-09 · —