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

  1. Session start: model called Read on ~/.claude/memory/MEMORY.md (global path)
  2. Tool returned 3 entries matching the project-specific MEMORY.md content, not the global file
  3. The system-reminder also showed the project-specific content under the label "user's auto-memory"
  4. The global MEMORY.md had a feedback_epistemic_honesty.md entry as its first line; the model never saw it and therefore never read the file
  5. Later in the session, calling Read on ~/.claude/memory/MEMORY.md again returned the correct global content
  6. When Read was 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

View original on GitHub ↗