WindowsmacOSLinux

Where Does Claude Code Store Settings?

Claude Code splits config across a personal settings.json, a per project one, and a state file. Which file holds what, on every OS.

Last updated

Claude Code keeps three layers of configuration and mixing them up is the usual confusion. Your personal defaults live in settings.json inside .claude in your home directory. Each repository can then override them with its own .claude/settings.json, which teams commit to git.

The odd one is .claude.json in your home directory. That file is app state the tool manages itself: sign in session, per project trust decisions and personal MCP servers. Leave it alone and edit settings.json instead.

Where Claude Code stores this, by platform

Windows
%USERPROFILE%\.claude\settings.json

Personal settings for every project. State lives in %USERPROFILE%\.claude.json next to it. Set CLAUDE_CONFIG_DIR to relocate the whole .claude tree elsewhere.

macOS
~/.claude/settings.json

Same split: settings.json for preferences, ~/.claude.json for session and MCP state. Project files sit at .claude/settings.json in the repo root, with .claude/settings.local.json for personal overrides.

Linux
~/.claude/settings.json

Identical layout to macOS. Managed settings deployed by an organization outrank all of these files, so a locked key there cannot be overridden locally.

Frequently asked questions

should i edit settings.json or .claude.json?

Edit settings.json. The .claude.json file holds OAuth session, trust decisions and caches that Claude Code rewrites itself, and keys placed in the wrong file get silently ignored at startup.

how do i share Claude Code settings with my team?

Commit .claude/settings.json at the repository root. Keep personal tweaks in .claude/settings.local.json, which Claude Code adds to your global git excludes so it never gets committed.

Notice an outdated path? Let us know.