DEV Community

Cover image for Anthropic deleted 80% of Claude Code's system prompt. Here is what I changed in my setup.
Tomas Grasl
Tomas Grasl

Posted on

Anthropic deleted 80% of Claude Code's system prompt. Here is what I changed in my setup.

Are you burning tokens in Claude Code and getting worse results than you should? Your old habits might be the reason.

Anthropic removed over 80% of Claude Code's system prompt. No measurable loss on their coding evals. Thariq Shihipar from Anthropic wrote it up on July 24 in "The new rules of context engineering for Claude 5 generation models". It was not quiet at all, most people just missed it.

The number is not the interesting part. The reason is. Those instructions were there to keep weaker models in line. On Opus 5 and Fable 5 they only get in the way. The model burns tokens figuring out which of your contradicting rules wins, and only then touches the code.

Eight things I would rethink in my workflow after reading it.

1. Role-play prompting is over

"You are a senior developer with 20 years of experience" does nothing. Neither does "focus 100%". The model does not need it.

What works better:

  • Context and goal. Say what you are working on and who it is for, not just what you want generated.
  • Show, do not describe. Instead of "write informally", point at a real reference file with @.
  • Measurable scope. "Max 5 sentences" beats "do not be too long".

2. Switching models mid-session

Claude Code sends the whole history with every request. Caching is what saves you: it is a prefix cache with an exact match from the start of the request, so the already processed part costs a fraction.

The mistake: switching from Opus to Sonnet to save money.

What actually happens: each model has its own cache. The next request reads the entire history with zero cache hits. Same for changing effort level, with one exception, Fable 5.1 on an API key or a subscription keeps the cache.

And here is the part almost nobody mentions. If you genuinely need more than one model, do not switch. Hang them off as subagents or a workflow. A subagent starts its own conversation with its own cache, and from the parent side only the call and the result get appended, so the parent prefix stays intact. In a workflow fan-out Claude Code goes further and holds same-prefix agents for a few seconds so the first one can warm the cache and the rest read from it.

3. Prohibitions confuse the model

Flood it with a list of things it must not do and every rule has to be reconciled against the others. Anthropic describes this on their own prompt: one line said leave documentation where appropriate, another said DO NOT ADD COMMENTS, and the model spent reasoning on that before it touched a file.

Fix: "answer in max 5 sentences" instead of "do not write long answers". "Write in full sentences" instead of "do not use bullets".

4. Hard rules belong in hooks

CLAUDE.md (not .claudemd, that file does not exist) is context for Claude, not enforced configuration. The docs say it plainly: if you want to block an action regardless of what the model decides, that is a PreToolUse hook.

A hook is a plain deterministic script Claude Code runs at a given lifecycle event. It can check encoding of non-ASCII characters or kill an attempt to read credentials. You create one by asking Claude for it in the terminal.

One gotcha: editing CLAUDE.md mid-task does not apply. Claude keeps working with the version loaded at session start. The new content loads on the next /clear, /compact or restart.

5. Infinite exploration

A vague task in a big repo means Claude starts opening files blind. Every file it reads lands in the context window in full. You are not just burning tokens, you are filling context with noise. Navigate it to the exact place where the answer lives.

6. Effort level

There is no slider in the corner of the window, Claude Code is a terminal. Effort is set in config or in session, and the levels are low, medium, high, xhigh and max. Default is high. ("Ultra Code", which floats around on blogs, is not an official level.)

The mistake is running max on ordinary tasks. Anthropic says themselves that max is for genuinely frontier problems and that on most workloads it mainly adds cost, and on structured output it can lead to overthinking. And since every effort level has its own cache, changing it mid-session costs you a recompute of the whole history.

7. A full context window is not free

A million tokens fits. That is not the same as the model recalling what it needs from them. Anthropic published MRCR v2 numbers with Opus 4.6: 93% at 256K tokens, 76% at 1M.

Careful with the reading though. MRCR measures retrieval of a planted fact, not instruction following. Still a clear signal: reliability drops long before you run out of window. After a finished subtask run /clear, at a natural break /compact, and on long work have it write a handoff to a file and start a fresh session.

8. Regular hygiene

You do not have to guess what to cut from CLAUDE.md. Claude Code has /doctor and it proposes the trims for you. It cuts what Claude can derive from the repo (directory layout, dependency lists, architecture overview) and keeps what it cannot (gotchas, generated files, the non-obvious build step).

And check your auto memory. It lives in ~/.claude/projects/<project>/memory/. Each session loads the first 200 lines or 25 KB of MEMORY.md, and topic files are read on demand. Browse it with /memory, and /context shows what actually loaded into the current session. When Claude behaves strangely and you do not know why, it is usually a contradicting note sitting right there.

The summary

Coding with AI in 2026 is not about who writes the longer system prompt. It is context management, deterministic verification through hooks, and cleaning history as you go.

How do you handle context limits? Hooks already, or still a giant CLAUDE.md?

Top comments (0)