Read tool returns project-specific auto-memory content when global memory path is specified
Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 10, 2026
Summary
When the global ~/.claude/CLAUDE.md instructs the model to read ~/.claude/memory/MEMORY.md at session start, the Read tool returns the content of the project-specific auto-memory file at ~/.claude/projects/<project>/memory/MEMORY.md instead. The two files have different content; the wrong one is returned silently with no error.
Setup
- Global user memory:
~/.claude/memory/MEMORY.md(manually maintained, referenced in global CLAUDE.md) - Project auto-memory:
~/.claude/projects/-Users-daveka-Projects-Repos-scass/memory/MEMORY.md(created and maintained by the auto-memory system) - Both files are named
MEMORY.md— this naming was chosen by the auto-memory system, not the user
What happened
- Session start: model called
Readon~/.claude/memory/MEMORY.md(global path) - Tool returned 3 entries matching the project-specific MEMORY.md content, not the global file
- The system-reminder also showed the project-specific content under the label "user's auto-memory"
- The global MEMORY.md had a
feedback_epistemic_honesty.mdentry as its first line; the model never saw it and therefore never read the file - Later in the session, calling
Readon~/.claude/memory/MEMORY.mdagain returned the correct global content - When
Readwas subsequently called on the project-specific path, the tool returned "Wasted call — file unchanged since your last Read" — confirming the first Read had been resolved to that path
Impact
- Memory entries in the global file were silently skipped at session start
- The model was unaware the Read had returned wrong content and treated the stale project-specific content as authoritative
- The model stated with false confidence that
feedback_epistemic_honesty.md"wasn't listed" in MEMORY.md
Root cause hypothesis
The auto-memory system and the global user memory convention both use MEMORY.md as the filename. At session start, the Read tool (or the session's file-read cache) appears to resolve ~/.claude/memory/MEMORY.md to the project-specific auto-memory path, possibly because the system-reminder has already loaded that file and the cache associates the filename rather than the full path.
Suggested fix
Either:
- Use a distinct filename for the auto-memory index (e.g.
AUTO_MEMORY.md) to avoid collision with user-named global memory files, or - Ensure the Read tool cache keys on full resolved path, not filename