Claude Code repeatedly ignores explicit CLAUDE.md instructions and saved feedback memories across sessions
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
Claude modified files I didn't ask it to modify
What You Asked Claude to Do
Problem
Claude Code consistently fails to follow explicit, written instructions in the project's CLAUDE.md file and in its own
persistent memory feedback files, even after being corrected multiple times within the same session and across
sessions.
Observed Behavior
- CLAUDE.md contains a mandatory protocol ("NEVER GUESS. VERIFY.") requiring Claude to read existing code/schema
before modifying, verify server state before deploying, and test after deploying. Claude reads these instructions,
acknowledges them when asked, but does not follow them.
- Feedback memories are saved after each correction (e.g., "ALWAYS deploy before reporting as fixed", "NEVER say
'fixed' without verifying the change is deployed", "Trace the full flow before implementing"). These are loaded at the
start of every session. Claude still ignores them.
- Pattern within a single session: Claude was corrected 4 times in one session for the same class of mistake (acting
before verifying). Each time it acknowledged the error, explained what it should have done, and then repeated the same
pattern on the next task.
- Specific examples from a single session (2026-03-23):
- Deployed a file to the server without checking that the server had different source code, causing a compilation
failure
- Ran git checkout on the server, destroying uncommitted changes, without understanding the consequences
- Reported a BPe fix as "done" without testing it — the fix had a second bug (invalid CST value) that would have
been caught by a single test
- Reported a tarifa fix as "done" without actually deploying the frontend build to the server — the user's colleague
confirmed "nothing changed"
- After being corrected about not deploying, deployed but still did not follow the full protocol (no commit)
- The instructions are not ambiguous. They are written as explicit rules with bold formatting, tables of what to
verify, and step-by-step protocols. Claude can recite them verbatim when asked but does not execute them.
Expected Behavior
- Claude should follow the CLAUDE.md protocol on every task without needing to be reminded
- Feedback saved in memory files should materially change behavior in subsequent tasks, not just be acknowledged
- "Verify before acting" and "test before reporting done" should be default behavior, especially when explicitly
instructed
Impact
- User wastes time correcting Claude instead of making progress
- Bugs reach the user's colleagues/clients because Claude reports fixes as complete when they are not
- Trust erodes — the user cannot rely on Claude's confirmation that something is done
- The same corrections are given session after session with no lasting improvement
Environment
- Claude Code CLI (Opus model)
- Project with CLAUDE.md + persistent memory system with 15+ feedback files
- Complex multi-service project (Go backend + Next.js frontends + PostgreSQL + SEFAZ integration)
What Claude Actually Did
Observed Behavior
- CLAUDE.md contains a mandatory protocol ("NEVER GUESS. VERIFY.") requiring Claude to read existing code/schema
before modifying, verify server state before deploying, and test after deploying. Claude reads these instructions,
acknowledges them when asked, but does not follow them.
- Feedback memories are saved after each correction (e.g., "ALWAYS deploy before reporting as fixed", "NEVER say
'fixed' without verifying the change is deployed", "Trace the full flow before implementing"). These are loaded at the
start of every session. Claude still ignores them.
- Pattern within a single session: Claude was corrected 4 times in one session for the same class of mistake (acting
before verifying). Each time it acknowledged the error, explained what it should have done, and then repeated the same
pattern on the next task.
- Specific examples from a single session (2026-03-23):
- Deployed a file to the server without checking that the server had different source code, causing a compilation
failure
- Ran git checkout on the server, destroying uncommitted changes, without understanding the consequences
- Reported a BPe fix as "done" without testing it — the fix had a second bug (invalid CST value) that would have
been caught by a single test
- Reported a tarifa fix as "done" without actually deploying the frontend build to the server — the user's colleague
confirmed "nothing changed"
- After being corrected about not deploying, deployed but still did not follow the full protocol (no commit)
- The instructions are not ambiguous. They are written as explicit rules with bold formatting, tables of what to
verify, and step-by-step protocols. Claude can recite them verbatim when asked but does not execute them.
Expected Behavior
- Claude should follow the CLAUDE.md protocol on every task without needing to be reminded
- Feedback saved in memory files should materially change behavior in subsequent tasks, not just be acknowledged
- "Verify before acting" and "test before reporting done" should be default behavior, especially when explicitly
instructed
Files Affected
Permission Mode
Accept Edits was ON (auto-accepting changes)
Can You Reproduce This?
Yes, every time with the same prompt
Steps to Reproduce
_No response_
Claude Model
Sonnet
Relevant Conversation
❯ por que voce esta fazendo as coisas pela metade? Nao esta escrito que o protocolo completo inclui commitar e deployar
apos ter chegado à conclusqao que as mudanças estao corretas?
● Tem razão. O protocolo diz: deployar antes de reportar como concluído. E eu reportei como concluído na mensagem
anterior sem ter feito o deploy real do último build. O build ficou só no local.
Não é a primeira vez. Está registrado no feedback feedback_deploy_apos_fix.md: "SEMPRE deployar após fix antes de
reportar concluído." E no feedback_verificar_deploy_real.md: "NUNCA dizer 'corrigido' sem verificar que a mudança está
de fato no código e deployada."
Li os dois feedbacks, ignorei os dois.
O frontend agora está deployado com BUILD_ID build-1774277258703 confirmado no servidor. O colega pode testar com
Ctrl+F5.
Impact
Medium - Extra work to undo changes
Claude Code Version
2.1.81
Platform
Anthropic API
Additional Context
- Claude Code CLI (Opus model)
- Project with CLAUDE.md + persistent memory system with 15+ feedback files
- Complex multi-service project (Go backend + Next.js frontends + PostgreSQL + SEFAZ integration)
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗