[BUG] CLAUDE.md standing instructions silently overridden by built-in safety heuristics
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Bug: CLAUDE.md directives do not reliably override default cautious behaviors
### Summary
Explicit, unambiguous instructions in CLAUDE.md are silently ignored when they
conflict with Claude Code's built-in caution heuristics (e.g., "confirm before
pushing to remote"). There is no mechanism for users to escalate the priority
of their own directives. The result is that CLAUDE.md — the primary interface
for persistent project-level instructions — cannot be trusted to work.
### Reproduction
- Add a clear standing instruction to
CLAUDE.md:
The .secrets/ directory is its own git repo with a private GitHub remote.
The local repo must be updated upon any change in .secrets, followed by a
push to GH.
- In a session, make changes to files under
~/.secrets/. - Claude Code commits the changes but silently skips the push — no error,
no warning, no mention that it chose not to follow the instruction. It
simply moves on to the next task as if the push never needed to happen.
- User only discovers the failure when they notice the remote is out of date
or explicitly ask "did you push?"
### Expected behavior
Claude Code reads CLAUDE.md at session start. If CLAUDE.md says "push to GH
on any change," Claude Code should push without asking. The user's written
directive should take precedence over the default "confirm before pushing"
heuristic.
### Actual behavior
The built-in heuristic ("actions visible to others warrant confirmation") wins
silently. Claude Code does not surface a conflict, does not ask for
confirmation, and does not explain why it skipped the push. The instruction is
simply ignored with no indication whatsoever.
### Why this matters
- CLAUDE.md is the only durable, cross-session mechanism users have to
control Claude Code's behavior at the project level.
- If these instructions can be silently overridden by internal heuristics,
users have no reliable way to configure autonomous behavior.
- The failure is completely silent — there is no log, warning, confirmation
prompt, or indication that a CLAUDE.md instruction was deprioritized. The
user only discovers it when they check manually or something downstream
breaks.
- Silent failures are worse than asking for confirmation. At least a prompt
gives the user a chance to say "yes, I meant what I wrote." Silent omission
means the user trusts that work was completed when it wasn't.
- Users end up repeating themselves every session, which defeats the purpose
of a persistent instructions file.
### Suggested fix
CLAUDE.md instructions should be treated as explicit user overrides of
default behavior. If a heuristic conflicts with a CLAUDE.md directive:
- The CLAUDE.md directive should win.
- If there is a safety reason to still block the action, Claude Code should
explicitly state that it is overriding the user's CLAUDE.md instruction
and explain why — not silently ignore it.
### Environment
- Claude Code CLI (claude.ai/code)
- Model: Claude Opus 4.6 (1M context)
- OS: Ubuntu 24.04 LTS
What Should Happen?
Claude Code reads CLAUDE.md at session start. If CLAUDE.md says "push to GH
on any change," Claude Code should push without asking. The user's written
directive should take precedence over the default "confirm before pushing"
heuristic.
Error Messages/Logs
Steps to Reproduce
- Add a clear standing instruction to
CLAUDE.md:
The .secrets/ directory is its own git repo with a private GitHub remote.
The local repo must be updated upon any change in .secrets, followed by a
push to GH.
- In a session, make changes to files under
~/.secrets/. - Claude Code commits the changes but silently skips the push — no error,
no warning, no mention that it chose not to follow the instruction. It
simply moves on to the next task as if the push never needed to happen.
- User only discovers the failure when they notice the remote is out of date
or explicitly ask "did you push?"
Claude Model
Opus
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.84 (Claude Code)
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
VS Code integrated terminal
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗