>_

Your CLAUDE.md Rules Have an Expiry Date [2026]

Robin||5 min
claude-codeclaude-mdprompt-engineeringnegative-resultopus-5
CLAUDE.md rules expiry date - Claude Code, Opus 5 prompting guide, CLAUDE.md best practices, .claude/rules, always-loaded context, context engineering, model migration guide, prompt drift, fugu --ultra cross-check, grok-build, Evolving Lite, primeline-ai/evolving-lite
Listen to this article (5 min)

The most-copied CLAUDE.md in Claude Code tells you to instruct the model to verify its own work before it reports done. Five months later, Anthropic's own prompting guide for Opus 5 says to remove that instruction, and explicitly not to rewrite it.

Neither document is wrong. They were written for different models. Nothing in your CLAUDE.md tells you which one you are running.

I spent ten weeks on the wrong side of that gap. Ten recurring behavior problems, every one already covered by a written rule, four in always-loaded files read on every turn. The rules layer this post argues against overusing lives in primeline-ai/evolving-lite.

10 of 10problems already had a written rule
4of those rules in always-loaded files
2had a live hook that did not stop it
3 of 10safely checkable by machine

What the most-copied Claude Code CLAUDE.md rules actually say

The CLAUDE.md widely attributed to Claude Code's founder is about 100 lines in three sections. Three of its CLAUDE.md rules are the ones worth checking against current guidance.

  1. Subagent strategy. Deploy subagents liberally to keep the main context clean.
  2. Verification before done. Never complete a task without demonstrating it works.
  3. Self-improvement loop. After a correction, write the lesson to a file and add a prevention rule. Iterate until mistake rates decline.

The third is the one I built a system around, and the one I now have a measurement on.

On provenance

The copies in circulation are third-party transcriptions, typos included ("Plan Node Default", "One tack per subagent"). I found no first-party publication, so this post says "attributed to" rather than quoting it as authoritative.

Anthropic's Opus 5 guide says to delete two of them

Two of those three CLAUDE.md rules invert under current guidance.

The verification rule

Anthropic's prompting best practices page still lists "ask Claude to self-check" as a technique that catches errors reliably. Then it carves out one exception: "Claude Opus 5 is the exception: it verifies its own work well without explicit instruction, and verification instructions carried over from prompts tuned for earlier models can cause over-verification... remove these instructions rather than rewriting them."

The Opus 5 prompting guide is blunter: remove them, because they cause over-verification with no loss in quality when deleted.

The subagent rule

Here the direction reverses inside one model generation. Opus 4.8 under-reached for subagents and benefited from explicit triggering guidance. Opus 5 "delegates to subagents more readily than prior models," and the guide recommends a hard spawn cap. A line saying "deploy subagents liberally" was good advice in February and spends your quota in July.

Only the correction-logging loop survives contact with the new guidance. That one is mine to measure.

All 10 of my CLAUDE.md rules were already written down

I ran the correction-logging loop for ten weeks, then counted. The number that mattered was not how many problems existed, but how many were undocumented: zero.

BehaviorInstancesWritten inLive hook
Answer too long, the answer buried~18 / 3 weeks3 filesno
Ends the turn with a question instead of acting~14 / 10 weeks4 files + a CRITICAL lineno
Never proposes the system's own tools~11 / 8 weeks3 files + always-loaded tableno
Skips its own mandatory gates7 / 12 weeks9 filesno
Does not check memory before substantive work8 / 8 weeks5 files + 2 rulesyes
States things about a file without reading it6 / 12 weeks6 filesyes
Rule-surface map, one behavioral rule across nine files - CLAUDE.md rules, Claude Code, .claude/rules directory, always-loaded context, progressive disclosure, Opus 5 prompting guide, context engineering, prompt drift, hook registration, CLAUDE.md best practices, Evolving Lite, git clone primeline-ai/evolving-lite
Where a single behavioral rule lived. Four of the ten sat in always-loaded files, two had running hooks, and the recurrence continued through all of it. (click to expand)

One rule had been restated across nine separate files, and one of those exists only to record that the previous file did not hold. The sharpest instance: in one session I wrote "I will not ask a third time" and then asked again in the same message. That is the loop working exactly as specified and producing no behavior change.

This lives in primeline-ai/evolving-lite - the self-evolving Claude Code plugin. Free, MIT, no build step.

Why do CLAUDE.md rules stop working under pressure?

Not volume. Conflict. I assumed 20,000 tokens of always-loaded rules were crowding each other out and proposed cutting a third. I sent the plan to fugu --ultra (Sakana AI) and grok-build (xAI) and both refuted it independently: 20k is small for a current model, and the disease is rules contradicting each other.

Anthropic published the same diagnosis from the other side. They removed roughly 80% of Claude Code's own system prompt for Opus 5 with no measurable loss on their coding evaluations, and the stated reason was over-constraint: transcripts showed "several conflicting messages in a single request" as system prompt, skills and user requests clashed. Two CLAUDE.md rules that each make sense alone force the model to spend judgment resolving you instead of solving your problem. Reasoning in Anthropic's context engineering guidance.

Note what made their cut safe: the evaluations existed before the deletion.

Which CLAUDE.md rules can Claude Code hooks enforce?

Three of the ten, and no more. Once I stopped adding rules, enforcing them with Claude Code hooks looked like the obvious next move. It bounded fast.

The three that work

Banned phrases in drafts, a completion word with no test or review evidence in the same turn, and re-asking after permission was already granted. All three have a closed text signature and a low base rate.

The four that cannot be automated

No detector exists for these

Including two of the top three. Folding under pressure instead of holding a position has no text signature separating it from earned agreement. Neither does "a tool should have been proposed here." I have no good detector for either, and inventing a plausible one would have been worse than saying so.

Everything else fired on between 20% and nearly every turn, which is a notification you learn to ignore within a day. The hook scripts and the ledger conventions are in primeline-ai/evolving-lite if you want to see the shape before writing your own.

How do you tell when a CLAUDE.md rule has expired?

You cannot, unless you dated it. Every behavioral line in your CLAUDE.md is a claim about a specific model version, and none of them carry that version.

One of my detectors rotted the same way and said nothing about it, which I unpack in the post on hooks that fired 574 times and blocked zero.

How I would rewrite my CLAUDE.md rules today

What I had
  • -One rule restated across 9 files
  • -No model version next to any behavioral line
  • -New rule added on every correction
  • -2 hooks that logged instead of blocking
  • -No evaluation before or after any change
What I would build
  • +One precedence rule that says which rule wins
  • +Model version dated next to every line
  • +Deletion as the default response to drift
  • +Hooks named observer unless they can block
  • +A check that can fail before anything is cut

Three changes, in the order they pay:

  1. One conflict-resolution rule instead of ten more CLAUDE.md rules. A precedence tier saying which rule wins is the only instruction that gets cheaper as you add more.
  2. Delete before you add, and date what you keep. Write the model version next to each behavioral line.
  3. Diff the vendor's migration guide against your own file. The Opus 5 migration guide lists which instructions now cost quality. Mine had three.

The rules layer and hook system this post argues against overusing live in primeline-ai/evolving-lite. Read knowledge/rules/ first, then delete half of what you were about to write. My earlier posts on splitting Claude Code instructions across rule files and turning corrections into rules describe the mechanics correctly, and why "done" is not done covers the proof discipline.

Honest scope

n=1 developer, CLAUDE.md rules I wrote myself, counts recovered from my own transcripts. My correction logger misses roughly 68% of real corrections, so every count above is a floor. This is not evidence about your setup, and not evidence that CLAUDE.md never works. It is evidence that "I wrote it down" and "the behavior changed" are two different claims, and I had been reporting the first as the second.

FAQ

Do CLAUDE.md rules work at all in Claude Code?+
Yes, for facts and gotchas. They reliably carry repo-specific knowledge the model cannot infer from the filesystem. What they do not reliably do is change judgment behavior under pressure, which is what I had been using them for.
Should I delete my verification instructions in Claude Code?+
On Opus 5, Anthropic's guidance says yes, and says remove rather than rewrite. On earlier models the same instructions were useful. Check which model you run before deleting anything.
Why did the Claude Code hook not stop the behavior?+
Two of my ten problems had running hooks and recurred anyway. Registration is not enforcement. A hook that logs an observation changes nothing unless something downstream blocks or a human reads the ledger.
Which behaviors are worth enforcing with Claude Code hooks?+
Ones with a closed text signature and a low base rate. Banned phrases in drafts, and a completion claim with no evidence in the same turn. Anything firing on more than a few percent of turns becomes noise faster than it becomes a habit.
How do I know when a CLAUDE.md rule has expired?+
You do not unless you dated it. Every behavioral instruction is a claim about a model version. Write the version next to the line, then re-check it against the vendor migration guide on each model upgrade.

>_ Get the free Claude Code guide

>_ No spam. Unsubscribe anytime.

>_ Related