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  │ ACCOUNT         │ AUTH │ 5-HOUR │ RESETS    │ 7-DAY │ RESETS    │      AS OF │
├──────────┼─────────────────┼──────┼────────┼───────────┼───────┼───────────┼────────────┤
│ * default│ you@example.com │ ok   │    59% │ in 53m    │   40% │ in 4d 23h │     1h ago │
│   work   │ (not logged in) │ none │      - │ -         │     - │ -         │ never used │
╰──────────┴─────────────────┴──────┴────────┴───────────┴───────┴───────────┴────────────╯

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
Save memory about a project not there - see below

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 moves it.

Memory is per profile too

Claude Code stores saved memory at <profile>/projects/<encoded-dir>/memory/, so it is scoped per profile and per project. Two accounts working on the same repository keep separate memory.

claude-handoff --with-memory merges it across when you move a conversation. For facts that should hold whichever account you use, CLAUDE.md in the repository is the better home - every profile reads 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/<project-name>/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.