Claude Code reads CLAUDE.md from up to four places, and which one you edit depends on who the change is for. Team rules go in the project file, `./CLAUDE.md` or `./.claude/CLAUDE.md`, shared through source control. Your personal notes for one repo go in `./CLAUDE.local.md`, which the docs say to add to `.gitignore`. Preferences you want in every project go in `~/.claude/CLAUDE.md`. Organizations can also deploy a managed policy CLAUDE.md for all users. The files don't override each other. The docs say they are "concatenated into context," and within a directory CLAUDE.local.md is appended after CLAUDE.md.
Who this is for
You want Claude Code to follow a new instruction and aren't sure which CLAUDE.md to put it in.
The four locations
| Scope | Location | Purpose (from the docs) | Shared with |
|---|---|---|---|
| Managed policy | macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md` · Linux and WSL: `/etc/claude-code/CLAUDE.md` · Windows: `C:\Program Files\ClaudeCode\CLAUDE.md` | Organization-wide instructions managed by IT/DevOps | All users in organization |
| User instructions | `~/.claude/CLAUDE.md` | Personal preferences for all projects | Only you (all projects) |
| Project instructions | `./CLAUDE.md` or `./.claude/CLAUDE.md` | Team-shared instructions for the project | Team members via source control |
| Local instructions | `./CLAUDE.local.md` | Personal project-specific preferences; add to `.gitignore` | Only you (current project) |
Which one to edit
| You want to change | Edit |
|---|---|
| A build command, coding standard or workflow for everyone on the repo | Project CLAUDE.md |
| Your sandbox URL or preferred test data for this repo | CLAUDE.local.md |
| A personal style or tooling preference everywhere | `~/.claude/CLAUDE.md` |
| A company-wide security or compliance rule | Managed policy (IT/DevOps) |
Pitfalls
- Committing CLAUDE.local.md. It's meant to be private. Add it to `.gitignore`.
- Expecting one file to replace another. All discovered files load together. Files closer to where you launched Claude are read last, but nothing is dropped.
- Personal notes in the project file. Your teammates get them too. Move them to CLAUDE.local.md.
- Forgetting worktrees. A gitignored CLAUDE.local.md only exists in the worktree where you created it.
- Assuming AGENTS.md always loads. By default Claude Code reads AGENTS.md only when there's no CLAUDE.md or CLAUDE.local.md in the working directory or above it, and reading it directly requires Claude Code v2.1.277 or later. For how the files compare, see AGENTS.md vs CLAUDE.md vs Cursor rules. To keep one file for both, see symlinking CLAUDE.md and AGENTS.md.
How to check it
- Start a session in the repo and run `/context`.
- Check the list under Memory files for each file you expect.
- Run `git status` and confirm CLAUDE.local.md isn't staged.
- If an instruction isn't followed, check whether it sits in a file that loaded, and whether a later file contradicts it.
Where ShipKits fits
If you want CLAUDE.md content to start from, the Day-1 Desk is a $12 pay-once first desk day: two seats (Day Desk + Reviewer Lite), one path-lock skill, a thin gate card, install.sh, and a ~90-minute sample run. Its `install.sh` copies the skill plus optional AGENTS.md / CLAUDE.md snippets (Cursor primary; Claude Code and Grok Bot notes). For a free starting point, use /free. Cheat Sheet for the skim checklist mindset.
Soft next step
Run `/context` in your repo now and move any personal line out of the project CLAUDE.md into CLAUDE.local.md. Free starter files are at /free. When you want a first desk with snippets ready to install, the Day-1 Desk ($12) has it.