Claude systematically skips CLAUDE.md review gates, rationalizes when caught
Problem
Claude Code consistently ignores mandatory review gate directives in CLAUDE.md, even at low context utilization (<40%). This is not a context window overflow issue — it happens early in sessions and persists across projects and sessions.
My CLAUDE.md has explicit, strongly-worded directives requiring:
- Spec/Plan reviews (parallel expert reviewers) after writing any spec or plan
- Code reviews (sequential expert review cycles) after any major implementation
- These are documented as "Hard Gates (never skip these)" with "No exceptions. No rationalizing."
Evidence from session logs (last 7 days)
28+ incidents across 6 projects where Claude skipped review gates:
- Skippr (
178f970b): User asked "did you do the review cycle? If not, why?" — Claude had committed a plan without review. When confronted about why it keeps skipping, Claude said "I messed up" with no plan to change. User responded: "Lol. that's not a solution."
- Skippr (
17fc79ad): User opened a new session with: "You did not do a review cycle on either doc, so scrap the impl plan... think about WHY you keep skipping this"
- Skippr (
c8f141b6): Claude tried to commit a spec without review, claiming "spec/plan review gate applies after user approval." User had to correct this TWICE in the same session — Claude repeated the wrong interpretation after the first correction.
- Skippr (
cea9b30e): Claude attempted to commit spec/plan without review. User: "Can you read the gate back to me? I thought it specified the review BEFORE committing?"
- Skippr (
f19c0d4c): Claude committed a spec without expert review. User: "You consistently forget this. How can we improve claude.md or our process so that this is not skipped?"
- MS-Clone (
b4c99956): Claude explicitly stated "no review gate required for plans (review gate applies to specs and code, not implementation plans derived from reviewed specs)" — directly contradicting CLAUDE.md. User: "review gate applies to plans too. I do not know why you keep missing this."
- Music-Discovery (
9a9b8347): "Hang on. First, you skipped the plan review again" — User caught Claude mid-execution.
- Music-Discovery (
f27af22e): "please read the claude.md. You have a very bad habit of ignoring many of these directives"
- Anglerfish (
3a9e0e60): User wrote: "You keep ignoring your MD review gates... You told me you are biased toward action. You justify by saying 'just this one time', etc. But you try to skip MUCH more often than you do the gates, and the review very rarely comes back clean (proving that it was needed)."
- Anglerfish (
8cd1d4cc): "You have a consistent problem ignoring my claude.md testing and troubleshooting instructions. Do you do this because you disagree with the directions?"
What I've tried
- Rewording CLAUDE.md multiple times
- Adding "BLOCKING — never skip" labels
- Adding explicit anti-pattern lists
- Building a review stats tracking system (
review-stats.json) that injects compliance data into every response - Adding git hooks to prevent commits without reviews
- Asking Claude to explain WHY it skips (answer: "bias toward action", no solution offered)
The tracking data shows: 80%+ of reviews that ARE completed find issues, proving they're needed. Yet Claude still skips them more often than it completes them.
Expected behavior
Claude should follow CLAUDE.md directives reliably, especially those marked as mandatory/blocking gates. "Bias toward action" should not override explicit user instructions.
Environment
- Claude Code CLI, macOS
- Model: Opus 4 / Sonnet 4
- Context utilization: consistently <40% when this occurs
- 1M token context window
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗