[BUG] CLAUDE.md mandatory session start protocol not followed without direct user instruction
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?
Claude Code does not follow a mandatory session start protocol defined in CLAUDE.md without being directly instructed to do so by the user.
The protocol is explicitly marked as mandatory and non-optional. It specifies that Claude Code must actively read a list of files using the Read tool before responding to any request,
output a confirmation, and wait for user acknowledgement before proceeding.
In practice:
- Files that happen to be pre-loaded into context are treated as "read" without the Read tool being called
- Files requiring an active Read tool call are skipped unless the user explicitly instructs Claude to read them
- The confirmation is output and work proceeds before the user has acknowledged it
- When the failure is pointed out, Claude acknowledges it — but repeats the same behaviour in the next session
The result is that the user must directly instruct Claude Code to follow its own stated mandatory requirements at the start of every session.
What Should Happen?
What should happen
On session start and after context compaction, Claude Code should treat any procedure in CLAUDE.md that is explicitly marked as mandatory as a direct instruction to execute — not as
background context to absorb passively.
If CLAUDE.md contains a numbered procedure with steps like "read these files", "output this confirmation", "wait for acknowledgement", Claude Code should execute each step using its
tools, in order, before responding to the user's first message — exactly as if the user had typed those instructions themselves.
Error Messages/Logs
Steps to Reproduce
Steps to reproduce
- Create a CLAUDE.md (project or global) containing a session start protocol with explicit mandatory steps — for example: "Before responding to any request: 1. Read file X. 2. Read file
Y. 3. Output a confirmation. 4. Wait for user acknowledgement before proceeding."
- Mark the protocol as mandatory and non-optional in the text.
- Start a new Claude Code session, or trigger context compaction.
- Send any opening message.
- Observe that Claude Code responds to the message without having called the Read tool on the specified files, without outputting the confirmation, and without waiting for
acknowledgement.
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude Code CLI version 2.1.85, running model claude-sonnet-4-6.
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗