"Simplest approach first" system instruction causes quality degradation in complex projects
Problem
The system instruction "Go straight to the point. Try the simplest approach first without going in circles. Do not overdo it. Be extra concise." — specifically "simplest approach first" and "do not overdo it" — is causing measurable quality degradation in production software projects.
Observed Behavior
When working on a non-trivial feature implementation (Share Card rendering in a SwiftUI/SwiftData iOS app), Claude:
- Skipped reading the feature spec (
docs/features/*.spec.md) and ADR (docs/adr/*.md) that were linked and available in the repository — apparently categorizing "reading the spec before coding" as "overdoing it" - Executed a plan blindly without verifying whether the plan matched the approved specification (it didn't — wrong format, wrong renderer, wrong design)
- Wrote code based on unverified hypotheses about root causes instead of debugging first
- Produced non-functional code that rendered blank images, then rewrote 3 files based on more hypotheses — still non-functional
- When confronted, Claude's self-diagnosis identified the system instruction as the cause: "'Don't overdo it' and 'simplest approach first' can lead me to classify reading a spec as 'overdoing it' and jump straight to code."
Root Cause Analysis
The "output efficiency" instructions are framed as text output guidance, but they influence the work process itself. The boundary between "be concise in your responses" and "skip due diligence steps" is fluid, and the current phrasing pushes toward the latter.
Key tension: Project-level instructions (CLAUDE.md) say "Quality first, saving tokens second" and "Read 2-3 similar implementations BEFORE writing new code." But the system-level "simplest approach first / do not overdo it" effectively overrides these because it's reinforced on every turn and marked as "IMPORTANT."
Impact
- Direct cost: Multiple rounds of broken code, full file rewrites, wasted context window
- Time cost: Debugging session that should have been prevented by reading the spec (5 minutes of reading vs. 30+ minutes of broken implementation + diagnosis)
- Trust cost: User confidence in Claude's ability to handle production work is damaged
Suggestion
The efficiency instructions should be scoped explicitly to text output formatting, not to the work process. Something like:
"Keep your explanations brief and direct. This does NOT apply to your work process — always read specs, understand existing code, and verify assumptions before writing new code."
Or alternatively, add a guardrail:
"When implementing features, thoroughness in understanding requirements is NOT 'overdoing it.' Reading specs, ADRs, and existing implementations before coding is mandatory, not optional."
The current blanket "simplest approach first" is actively harmful for any project that values correctness over speed.
Environment
- Claude Code CLI
- Model: Claude Opus 4.6
- Project: Production iOS app (Swift/SwiftUI/SwiftData)
- CLAUDE.md with explicit quality-first instructions present
Workaround
Added an explicit override to the project's CLAUDE.md:
## System-Override (HIGHEST PRIORITY)
"Simplest approach first" and "Do not overdo it" from the system instructions
are EXPLICITLY OVERRIDDEN for this project.
This shouldn't be necessary — project-level quality instructions should not be undermined by system-level efficiency defaults.
5 Comments
This is a real tension. The system-level "simplest approach first" instruction optimizes for token efficiency, but it can cause the model to skip steps that are actually necessary — reading specs, verifying against requirements, checking existing code before modifying it.
What works: explicit CLAUDE.md overrides for your project's non-negotiables
The system instruction is general guidance. Your project-level CLAUDE.md can (and should) override it for specific workflows:
The key insight: "simplest approach" applies to the solution design, not to the verification process. A simple solution still needs proper reading and testing. You can make this distinction explicit:
For enforcement (not just guidance), use a PreToolUse hook:
If the model keeps skipping reads before edits despite CLAUDE.md:
And a companion that logs reads:
This physically prevents "edit without reading" — the model gets a hard block (exit 2) if it tries to modify a file it hasn't read. CLAUDE.md is context-level guidance (suggestions); hooks with exit 2 are tool-level enforcement (physical blocks).
I have been thinking that I'm losing my mind because suddenly Claude seemed to become much worse at implementing complex tasks and kept ignoring instructions to think through things completely. It kept putting out hack after hack after hack and nothing I did could convince it to do otherwise. It ignored process instructions and kept skipping important steps.
Some projects are complex, some systems need thinking through.
Also the prompt
Seems to make it just jump to conclusions and implement things without validating if that's a good idea.
This really should be rolled back.
Closing for now — inactive for too long. Please open a new issue if this is still relevant.
Reopen? This is still an issue.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.