[BUG] CLAUDE.md standing instructions silently overridden by built-in safety heuristics

Resolved 💬 2 comments Opened Mar 26, 2026 by luckygreen Closed Apr 25, 2026

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

  1. 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.

  1. In a session, make changes to files under ~/.secrets/.
  2. 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.

  1. 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:

  1. The CLAUDE.md directive should win.
  2. 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

  1. 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.

  1. In a session, make changes to files under ~/.secrets/.
  2. 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.

  1. 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_

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗