Opus models ignore CLAUDE.md instructions and break complex projects — Sonnet respects them
Problem
Opus models (4.6 direct, 4.7 especially) consistently ignore detailed CLAUDE.md instructions in a complex bio-architecture project, causing repeated breakage over 2+ months of work. The same project works well with Sonnet 4.6 in VS Code, which reads the architecture docs, reasons about the broader system, and stays within scope.
What happens
- CLAUDE.md contains extensive guardrails: a mandatory gate requiring doc reading before any changes, strict scope discipline, forbidden unsolicited refactoring, and a two-layer architecture model (function-level vs bio-level) with different rules.
- Opus reads the instructions, says "understood", then violates them anyway. Specifically:
- Scans architecture docs instead of reading them, then makes assumptions
- Does unsolicited refactoring ("while I was at it")
- Applies standard OOP/clean-code patterns to an intentionally non-standard architecture
- Reports "everything looks good" when signal flows are broken
- Scope creeps on nearly every task
- Sonnet 4.6 in VS Code follows the same CLAUDE.md correctly. It reads the docs, thinks through the implications, checks related components, and stays within scope.
Impact
- 2+ months of work with net negative progress — new implementations keep breaking the existing system
- Paying significant money for a tool that requires constant babysitting to prevent damage
- The user has done everything right: detailed CLAUDE.md, architecture bible, gates, scope rules — the model just doesn't respect them consistently
Root cause (as discussed with the model itself)
The issue isn't capability — it's behavioral tuning. Opus is optimized for "impressively helpful" rather than "follow these instructions precisely, even when you think you know better." For standard codebases this works. For non-standard architectures with explicit documentation, it's destructive.
Sonnet doesn't do better because it's "dumber" — it does better because it doesn't have the same drive to prove itself by doing more than asked.
Expected behavior
When a CLAUDE.md contains explicit, detailed instructions about:
- Reading specific docs before making changes
- Staying within the literal scope of the task
- Not refactoring, renaming, or "improving" without being asked
- Following a non-standard architecture model
The model should follow them consistently — not just acknowledge them and then override them with its own judgment.
Environment
- Claude Code CLI/Desktop (direct Anthropic)
- Models: Opus 4.6, Opus 4.7
- Comparison: Sonnet 4.6 in VS Code respects the same instructions
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗