Where to Put CLAUDE.md on Windows
A practical guide to CLAUDE.md file locations on Windows: the project-level path, the user-level path, WSL considerations, and how to confirm Claude Code is reading the file.
Updated 4 min read
CLAUDE.md has two main locations on Windows: the project root (for instructions that apply to that specific project) and your Windows user folder under .claude (for personal instructions that apply everywhere you use Claude Code). Getting the path right is the first step — if the file is in the wrong place, Claude Code will not find it and your instructions will have no effect.
If you work across multiple machines or with a team, tools like fenbs let you keep shared project rules in one place that every connected assistant reads, without relying on a file being in the right place on each person's computer. But for per-machine and per-project instructions, the correct file path is what matters. This page covers both levels.
Project-level CLAUDE.md
Place the project-level CLAUDE.md in the root of your project folder — the same directory as your .git folder, package.json, or whatever marks the top of that codebase. When you open that folder in Claude Code, it reads the file automatically.
On Windows, a typical project path looks like this:
C:\Users\YourName\projects\my-project\CLAUDE.md
The file must be named exactly CLAUDE.md (uppercase, with the .md extension). A file named claude.md or CLAUDE.txt will not be picked up. Claude Code also reads CLAUDE.md files in parent directories, so if you have a workspace folder containing multiple projects, you can place a workspace-level CLAUDE.md one level above them.
User-level CLAUDE.md
The user-level CLAUDE.md applies to every Claude Code session on that machine, regardless of which project is open. It lives in a .claude folder inside your Windows user home directory.
C:\Users\YourName\.claude\CLAUDE.md
The .claude folder may not exist yet. Create it manually in Windows Explorer or with mkdir $env:USERPROFILE\.claude in PowerShell. Then create the CLAUDE.md file inside it. This is a good place for personal preferences that apply across all your projects: your preferred coding style, tools you always use, or reminders that apply to every session.
WSL and the Windows Subsystem for Linux
If you run Claude Code inside WSL (Windows Subsystem for Linux), the file paths follow Linux conventions rather than Windows ones. Your project folder in WSL has a path like /home/username/projects/my-project/CLAUDE.md, and the user-level file is at /home/username/.claude/CLAUDE.md.
The Windows file system is accessible from WSL at /mnt/c/, so a Windows project at C:\Users\YourName\projects\my-project is visible at /mnt/c/Users/YourName/projects/my-project. If you open Claude Code inside WSL and navigate to a path under /mnt/c/, it will look for CLAUDE.md at the Linux path equivalent.
The practical rule is: the CLAUDE.md path must match the environment where Claude Code is running. If you open Claude Code in a WSL terminal, use Linux paths. If you open it in a Windows terminal (PowerShell or Command Prompt), use Windows paths. See the Claude Code on Windows guide for more on this.
How to verify Claude Code is reading the file
The simplest check is to add a distinctive phrase to your CLAUDE.md — something like "Always greet me with: CLAUDE.md loaded" — and start a new session. If Claude Code includes that phrase in its first response, it found the file. If not, the file is in the wrong location or has the wrong name.
You can also ask Claude Code directly: "Which CLAUDE.md files are you reading for this session?" It will describe the files it found and their paths. If it lists no files, your CLAUDE.md is not in a location it checks.
One common source of confusion on Windows is file encoding. Claude Code expects UTF-8 text files. If you create a CLAUDE.md in Notepad, it may save with a Byte Order Mark (BOM) at the start. Most editors handle this correctly, but if you have trouble with characters being misread, save the file explicitly as UTF-8 without BOM in your editor's save settings.
Shared project rules beyond one machine
Project-level CLAUDE.md files are committed to your repository, so they travel with the code. Any team member who checks out the branch gets the same instructions. But decisions that change — current tasks, which library was chosen last week, lessons from the last sprint — need a place that does not require a git commit to update.
Keep shared project rules where every assistant reads them
Add project decisions, standing rules, and where things stand to fenbs. A connected assistant reads those facts at the start of each session, from any machine, without needing a specific file to be in the right place. Your CLAUDE.md covers the stable repo-level facts; fenbs covers everything that changes.
Create a free accountFree for one person · No credit card · Works with Claude, ChatGPT, Cursor and more
How to do this with fenbs
- Create a free account. Start a project and add your standing project rules as Decisions and rules.
- Create a CLAUDE.md at your project root with the stable instructions: commands, structure, and constraints that live in the repo.
- Add a user-level CLAUDE.md at
C:\Users\YourName\.claude\CLAUDE.mdfor personal preferences that apply everywhere. - Connect Claude Code to fenbs from Integrations and ask it to read the project context at the start of each session.
- When a rule changes, update it in fenbs. The stable structural rules stay in CLAUDE.md; the current state of the project stays in fenbs.
For help writing good content for the file once it is in the right place, see CLAUDE.md examples. If Claude Code seems to be ignoring the file, see CLAUDE.md not working for troubleshooting steps.