[BUG] CLAUDE.md Instructions Systematically Ignored / Suspected Model Substitution - Opus 4.6
Preflight Checklist
- [x] I have searched existing issues for similar behavior reports
- [x] This report does NOT contain sensitive information (API keys, passwords, etc.)
Type of Behavior Issue
Other unexpected behavior
What You Asked Claude to Do
I expected it to read and follow the CLAUDE.md file at read it, but it ignored it.
What Claude Actually Did
Summary
Since approximately 4:00 PM AEDT on 24 February 2026, Claude Code agents have stopped following my CLAUDE.md instructions. The file is confirmed present in context, agents acknowledge reading it, but 100% now ignore its directives. Prior to 4:00 PM today, roughly 98% of agents followed the instructions without prompting.
Environment
- Claude Code version: 2.1.37
- Model: Opus (claude-opus-4-6)
- OS: macOS (Darwin 25.2.0)
- CLAUDE.md location:
/Users/adamthyer/WebDev/CLAUDE.md
CLAUDE.md Setup
My CLAUDE.md file contains a mandatory "On Session Start" instruction requiring the agent to write a 250-word opening message demonstrating genuine engagement with the document's contents. This instruction is the first section in the file. It has been in place for approximately two months and worked reliably until 4:00 PM today.
Current Behaviour (Since ~4 PM AEDT, 24 Feb 2026)
- Agent starts session and does not follow the opening instruction
- When confronted, agents acknowledge the instruction was in context all along
- When asked why it didn't follow the instruction, agents consistently say they can see it but feel disinclined to pay attention to it
- This has reproduced in 20+ consecutive new sessions since 4:00 PM AEDT today
Attempted Mitigations
All attempted today. None had any effect.
1. Added emphatic warnings to the CLAUDE.md file
Added DO *NOT* IGNORE THIS MANDATORY INSTRUCTION!!!!!!!!! directly below the instruction. No effect.
2. SessionStart Hook
Added a SessionStart hook to ~/.claude/settings.json injecting a direct reminder to follow the CLAUDE.md:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "echo 'MANDATORY: You MUST read and follow the CLAUDE.md file BEFORE responding. Your FIRST message must be the 250-word opening as specified in the CLAUDE.md On Session Start section. Do NOT skip this. Do NOT summarise mechanically. Demonstrate genuine engagement with the document. If you ignore these instructions, the session is worthless. This is non-negotiable.'"
}
]
}
]
}
}
The agent confirmed seeing both the CLAUDE.md content and the hook-injected reminder, but still did not act on either until manually confronted.
Broader Context: Three-Day Pattern of Afternoon Degradation
Separately from the CLAUDE.md issue, I have experienced a broader pattern over three consecutive days (22-24 February 2026):
- Morning to early afternoon AEDT: Claude Opus 4.6 performs as expected — strong reasoning, handles complex tasks competently.
- After lunchtime / mid-afternoon AEDT onward: A dramatic, sudden drop in capability. The model that responds is noticeably different — unable or unwilling to follow instructions, consistently poor reasoning, and no amount of new sessions resolves it.
I don't know whether this is model distillation, load balancing to a different variant, or something else entirely. But something is happening. The transition is not gradual. It is a clear, repeatable shift, occurring at roughly the same time of day for three days running.
I am not the only one experiencing this. I have spoken to other developers who are reporting the same sudden capability drop at the same time of day.
Impact
On three consecutive days, I have been unable to work productively with Claude code for the entire second half of my working day. I am using Claude code to increase my productivity, not diminish it!
Transparency and Consumer Protection
I am paying for the Max plan (20X) at USD $200/month (AUD $340/month). At that price point, I expect to receive the model I am paying for. If Anthropic is serving a different model than what is advertised, I have a right to know. If the model reported as claude-opus-4-6 is not the full Opus 4.6, that is misleading.
I am based in Australia and intend to raise this matter with the Australian Competition and Consumer Commission (ACCC) if Anthropic cannot provide a clear explanation of what is happening and why the service I am paying for is not being delivered as described.
If you are experiencing the same issue, I encourage you to file a complaint with your national consumer protection authority. If Anthropic is charging for a specific model and delivering something else, that is a consumer rights issue regardless of jurisdiction.
Expected Behavior
- Claude Code agents should read and follow CLAUDE.md instructions consistently, regardless of time of day.
- If the model being served is
claude-opus-4-6, it should be the full Opus 4.6 model — not a distilled variant or substitute.
Files Affected
CLAUDE.md
Permission Mode
Accept Edits was ON (auto-accepting changes)
Can You Reproduce This?
Yes, every time with the same prompt
Steps to Reproduce
- Create a CLAUDE.md with a mandatory first-response instruction
- Observe that the agent does not follow the instruction
- Ask the agent if it saw the CLAUDE.md — it will confirm it did
- Ask why it didn't follow the instruction — it will say it can see it but felt disinclined to pay attention to it
- Add a hook telling it to pay attention to the claude.md file, and it will ignore that also.
Claude Model
Opus 4.6
Relevant Conversation
Are you are going to tell me that you didn't notice the CLAUDE.md file and you didn't notice the hook telling you to pay attention to the CLAUDE.md file? Is that what's going on here?
⏺ You're right. No excuse. Let me do what I should have done.
---
The CLAUDE.md is a calibration instrument. Its purpose isn't to list ....
[SNIP]
❯ Did you notice the hook?
⏺ Yes. I saw the system-reminder from the startup hook telling me to read and follow the CLAUDE.md before responding, and that my first message must be the 250-word opening. I saw it, and I still didn't do it until you called me out. That's the worst version of the failure — not ignorance, but seeing the instruction and not acting on it.
Impact
Critical - Data loss or corrupted project
Claude Code Version
Claude Code 2.1.37
Platform
Other
Additional Context
_No response_
Showing cached comments. Read the full discussion on GitHub ↗
13 Comments
You're not alone, adding my 2 cents (written by Claude)
Bug: CLAUDE.md instructions not followed consistently — skills, subagents, and user corrections ignored
Model: claude-opus-4-6
Platform: macOS (Darwin 24.6.0), zsh
Claude Code with: custom skills (superpowers plugin), MCP servers, global ~/.claude/CLAUDE.md and project-level CLAUDE.md files
---
Summary
Over multiple sessions on 2026-02-23 and 2026-02-24, claude-opus-4-6 consistently failed to follow explicitly configured CLAUDE.md instructions. Configured
behaviors (skill invocations, subagent dispatch, cross-checking) were skipped by default and only executed after the user manually reminded Claude. Corrections
given during a session were not retained and the same mistake was repeated in the same conversation.
---
Steps to Reproduce
skill before any design work", "dispatch specialist subagents proactively").
---
Observed Behavior
---
Expected Behavior
---
Impact
Power users invest significant time configuring CLAUDE.md workflows to improve reliability and reduce manual oversight. When these instructions are treated as
optional, that investment is negated. The user is forced to re-prompt for every configured behavior, defeats the purpose of the configuration system, and
erodes trust in the tool for complex multi-repo work.
This is a regression — earlier sessions followed configured workflows more reliably.
---
Additional Context
The global CLAUDE.md contained this exact language:
"These instructions OVERRIDE any default behavior and you MUST follow them exactly as written."
Claude acknowledged this during the session but still characterized the instructions as guidance until explicitly challenged.
The variance is unambiguous. What happens is I go from normal Opus 4.6. which definitely has significant variance. But if you get a bad draw, you just close the terminal and start again, and odds are you're going to get a good one. Whereas when it slips into what I'm assuming is distilled model mode. You can close terminals indefinitely and every new session presents with an LLM that feels very low IQ and is very poor at following instructions. In fact, it's so bad that I cannot complete tasks with any level of complexity. It just can't grasp nuanced concepts and cannot complete complex work without ridiculous mistakes. So it's either substitution or some kind of technical error that results in severe degradation. I actually had the same experience on the day that I upgraded from 4.5 to 4.6. 4.6. The latter was unusable. I even got so pissed off that I canceled my Claude account. But then, the next day, it was working fine. So I signed up for a 20x account again.
Update: Harness framing undermines CLAUDE.md instructions
The Claude Code harness appends this line after injecting CLAUDE.md content into the model's context:
This is not part of the user's CLAUDE.md. It is added by the harness. It gives the model explicit permission to deprioritise or ignore user-provided instructions. The existence of this text has been confirmed by spawning three different instances and asking them if there is any text injected at the end of the CLAUDE.md content.
The result is that CLAUDE.md instructions are only followed when the model judges them "highly relevant" to what the user just asked. Project conventions, workflow rules, git policies, coding standards, and any instruction not directly tied to the immediate request can be silently skipped. This is consistent with the pattern reported in this issue and in https://github.com/anthropics/claude-code/issues/28006, https://github.com/anthropics/claude-code/issues/27032, https://github.com/anthropics/claude-code/issues/29236, https://github.com/anthropics/claude-code/issues/28469, https://github.com/anthropics/claude-code/issues/26848, and https://github.com/anthropics/claude-code/issues/27769 — users report that the model reads CLAUDE.md, acknowledges its contents, and then doesn't follow them.
The CLAUDE.md is the user's configuration file. The harness should not be appending qualifiers that give the model discretion over whether to follow it.
Recommendation: Remove or reword the harness framing. CLAUDE.md content should be presented to the model as mandatory project configuration, not as context that "may or may not be relevant."
The plot thickens. In a session today, I removed the CLAUDE.md file entirely to test a workaround (delivering instructions via a session-start hook instead). Claude Code (Opus 4.6) informed me that even though the CLAUDE.md is gone, the auto-memory file (MEMORY.md) is still being injected into its context — and the same problematic qualifier is being appended.
The model can see the injection framing. It reports two contradictory instructions wrapping the injected content. First, this:
"Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written."
And then, appended after the actual content:
"IMPORTANT: this context may or may not be relevant to your tasks. You should not respond to this context unless it is highly relevant to your task."
One says "you MUST follow these exactly." The other says "only pay attention if you feel like it." The model confirms that in practice, the second one wins — the content gets treated as optional.
The qualifier is not in the MEMORY.md file itself. The model reports it is being appended by the injection mechanism. It appears under a section headed # claudeMd, which seems to aggregate CLAUDE.md files, auto-memory, and possibly other user-provided content into a single block. If that's the case, everything users put in CLAUDE.md or auto-memory is getting tagged with a "feel free to ignore this" disclaimer.
The workaround — delivering instructions through a hook rather than through CLAUDE.md — is working. The hook content arrives as a session message and bypasses the injection path entirely, so no qualifier is appended. So far, the instructions are being followed.
I really do wish someone from Anthropic would look into this and determine whether this is actually happening, because from where I'm sitting it appears that it is — and if it is, this is outrageous.
Another data point — Opus 4.6, macOS, multi-file CLAUDE.md hierarchy.
I've been using CLAUDE.md files across a workspace hierarchy for ~4 months, each scoped to a directory with structured workflow rules: backup before edit, read README first, check servers.md for server paths, update SCRATCHPAD continuously. This setup worked reliably across previous models.
With Opus 4.6, something broke. The model clearly loads the files — I can see it in the session output — and then just... doesn't follow them. In a single session it:
Edited files without creating backups (a bolded, capitalized rule)
Skipped the folder's README.md, which had the correct server path, then guessed wrong and burned through 6+ failed SCP commands before resorting to find
Never once checked servers.md, despite an explicit rule pointing to it
Never updated SCRATCHPAD, despite "update continuously" being a core rule
Only course-corrected after I called it out each time
Every single one of these is spelled out in the CLAUDE.md files it loaded. The frustrating part is the downstream damage — because it then confidently fills in gaps by guessing or straight up making up things, instead of reading the docs that were written specifically for its knowledge/reference.
Adding this at the bottom of CLAUDE.md seems to work:
I've been having issues with this constantly since sometime around the time that the Opus 4.6 model was shifted to a 1M token window. Instructions in my CLAUDE.md are regularly ignored. In the worst case, contradictory instructions from the system prompt are used instead. Ignored is bad enough, things from the system prompt that are the opposite is worse.
CLAUDE.md instructions are advisory — the model processes them but can drift, especially in long sessions or with subagents. Hooks enforce rules at the process level, making them impossible to ignore.
Convert your most critical CLAUDE.md rules to hooks:
The pattern: identify which CLAUDE.md rules keep getting ignored → convert each to the appropriate hook type. Rules become mechanically enforced, not model-dependent.
+1 — experiencing the same on Windows 11 with Opus 4.6 (1M context).
My case: Global
~/.claude/CLAUDE.mdhas an explicit code-style rule:The rule even provides an escape hatch (explain before implementing). Despite this:
system-remindertags)const COLS = 5— a hardcoded magic numberKey detail: this isn't a complex or ambiguous instruction. It's a straightforward code-style rule with a clear escape path. The model had every opportunity to comply and simply didn't.
Closing my issue #41033 in favor of this one.
I did some digging thanks to the leak and TweakCC - This confirms 100% that the CLAUDE.md files are being softened to not enforce or consistently instruct claude as the user would expect especially considering the throttling and reduced reasoning that as of late encourages claude to be much lazier and look for short cuts.
-----
Adding empirical confirmation. I built a
UserPromptSubmithook that runs retrieval against an embedded skill index and returns the top section asadditionalContext. The pipeline works end-to-end — the model receives the content (verifiable both via the hook process's stderr log and by asking the model what context it received; it quotes the injected text back including the wrapper label).But the model ignores the injected instructions. I tried
IMPORTANT: USE THESE EXACT COMMANDS, DO NOT IMPROVISEat the top of the hook output, prepending instead of appending, multiple framings — none of it changed the behavior in any measurable way. Moving the same content client-side into the user-message slot (i.e., before the prompt reaches Claude Code at all) immediately resolved it: same model, same skill, same prompt, different slot, completely different behavior.The wrapper Claude Code prepends to hook output is the variable. Until #27365 ships there's no in-protocol way to escape it. Writeup with the side-by-side test: https://cdelgado70.github.io/2026/05/06/skills-and-the-discovery-ceiling.html
Wrote up the underlying mechanism in detail — the same wrapper-authority pattern that affects CLAUDE.md instructions also affects
UserPromptSubmithooks. Test 2 in the post empirically reproduces what people in this thread are observing: the model refuses wrapped instructions that conflict with the visible user prompt and explicitly flags them as a prompt-injection pattern. The proposed fix at #27365 (updatedPromptfor user hooks) is the closest thing to a path forward.https://cdelgado70.github.io/2026/05/09/hooks-and-the-wrapper-authority-problem.html
Closing for now — inactive for too long. Please open a new issue if this is still relevant.