A project has ~/.claude/CLAUDE.md, ./CLAUDE.md and ./CLAUDE.local.md. How are they applied?
Why A is the answer
They are concatenated into context
All discovered files are concatenated rather than overriding each other. If two conflict, Claude sees both, so remove the conflict rather than relying on order.
In detail
- All discovered files are concatenated into context.
- They do not override each other.
- If two conflict, Claude sees both, so remove the conflict.
- Review all three files when behavior differs between people.
Use case
An illustrative scenario, not a real incident.
One developer sees different behavior, and a look at their CLAUDE.local.md finds a rule that conflicts with the project file. Both were in context, so removing one resolves it.
See it in different ways
flowchart TD A["Managed policy"] --> E["Combined context"] B["User: ~/.claude/CLAUDE.md"] --> E C["Project: ./CLAUDE.md"] --> E D["Local: ./CLAUDE.local.md"] --> E
flowchart LR A["User CLAUDE.md"] --> D["Context for the session"] B["Project CLAUDE.md"] --> D C["CLAUDE.local.md"] --> D E["Skill body"] -.->|"Only when used"| D
mindmap
root(("Session context"))
n1["User file"]
n2["Personal, all projects"]
n3["Project file"]
n4["Shared through Git"]
n5["Local file"]
n6["Personal, this project"]Key point: All discovered files are joined together.
Why the other options are wrong
- B. Only the most specific file is read
- More than one file is read.
- C. Only the project file is read
- User and local files are read as well.
- D. The user file overrides the others
- There is no override, because they are joined together.

