Skip to content

What's shared, what isn't

Short version: profiles share nothing. Each one is a complete, separate copy of Claude Code's configuration. The only things shared are files that live inside your project folders.

Nothing is inherited

Claude Code writes to whichever directory CLAUDE_CONFIG_DIR points at, and never looks anywhere else. There is no fallback to ~/.claude.

The clearest demonstration: create a new profile while your original account is signed in, and it reports Not logged in. If profiles inherited anything, it would have picked up those credentials.

$ claude-profiles
   PROFILE  CONFIG DIR                        ACCOUNT                  AUTH
*  default  ~/.claude                         you@example.com          ok
   work     ~/.claude-profiles/work           (not logged in)          none

What that means day to day

You do this in one profile In another profile you get
Add an MCP server not there - add it again
Approve a project's trust prompt asked again
Install a plugin not there
Change a setting not there
Add a skill or agent not there
Have 50 conversations sees none of them

That last row is exactly why session handoff exists. The other account is not hiding your conversation - it genuinely cannot see the file, so handoff physically copies it.

The one exception: project files

Anything stored inside a project folder is shared, because it belongs to the repo rather than to your account.

~/Projects/Acme/api/
  .mcp.json      <- every profile reads this
  CLAUDE.md      <- every profile reads this
  .claude/       <- every profile reads this

So a project that ships its own MCP servers gives them to whichever account you use there.

Approval is still per-profile

The .mcp.json file is shared, but permission to use it is stored in your config directory. The first time you open that project under a new profile, Claude Code asks again whether to trust the project's MCP servers.

The rule

Where it lives Shared between profiles
~/.claude or ~/.claude-profiles/<name>/ no - per-profile
inside the project folder yes

Why this is usually what you want

Real separation. A client account cannot accidentally pick up your personal MCP servers, credentials, plugins, or chat history. Nothing leaks between contexts.

The trade-off: every new profile starts empty and needs setting up.

Setting up a new profile faster

Copy the pieces you want from an existing profile:

cp    ~/.claude/settings.json ~/.claude-profiles/work/
cp -R ~/.claude/plugins       ~/.claude-profiles/work/
cp -R ~/.claude/skills        ~/.claude-profiles/work/   # if you have any

Global MCP servers are registered in .claude.json, so re-add them with the CLI while that profile is active:

claude-profile work
claude mcp add <name> ...

Never copy .credentials.json

It belongs to one account. Copying it does not give you two logins - it gives you two profiles pointing at the same account, and signing out of one breaks both.

Checking what a profile has

ls ~/.claude-profiles/work          # what this profile has accumulated
claude-profiles                     # which account is in each

A profile directory fills up on its own as you use it - projects/, sessions/, history.jsonl, caches. Differences between profiles are normal and mean nothing is wrong.