Why Using Multiple Claude Code Accounts Is Broken — And the Setup That Finally Fixed It

I use multiple Claude Code accounts.
One is my office account with the Pro plan. Another is a shared account I use with my colleagues on the Max plan.
At first, I assumed this would be simple.
Log out. Log in. Maybe switch profiles. Done.
But that is not how Claude Code works.
Every time I switched accounts, I either lost my project history, lost my custom commands, or had to keep setting everything up again.
And the worst part?
The only thing that actually needed to be different between accounts was the authentication.
Everything else — my project history, my commands, my MCP setup, my CLAUDE.md instructions, my settings — should have stayed the same.
Instead, Claude Code treats everything as one giant config folder.
So if you want multiple accounts, you end up duplicating everything.
That quickly becomes painful.
The Actual Problem
Claude Code stores almost everything inside a single config directory.
That includes:
Authentication
Settings
Project history
Custom commands
MCP configuration
CLAUDE.md instructions
The issue is that authentication is account-specific.
But the rest is not.
I do not want separate project histories for every account. I do not want to recreate the same custom commands three times. I definitely do not want to copy-paste the same CLAUDE.md file every time I make a change.
After a few switches, my setup looked like this:
One account had the latest commands
Another had the right MCP config
A third one had the actual project history I wanted
Everything was fragmented.
And every time I switched accounts, something would silently stop working.
The Setup That Actually Works
The fix was separating authentication from everything else.
Instead of giving every account its own full Claude config, I created:
One shared folder for everything common
One small folder per account containing only auth
My setup now looks like this:
The fix was separating authentication from everything else.
Instead of giving every account its own full Claude config, I created:
One shared folder for everything common
One small folder per account containing only auth
My setup now looks like this:
~/.claude-shared/
settings.json
CLAUDE.md
projects/
commands/
mcp.json
~/.claude-office-pro/
auth.json
settings.json -> ~/.claude-shared/settings.json
CLAUDE.md -> ~/.claude-shared/CLAUDE.md
projects -> ~/.claude-shared/projects
commands -> ~/.claude-shared/commands
mcp.json -> ~/.claude-shared/mcp.json
~/.claude-shared-max/
auth.json
settings.json -> ~/.claude-shared/settings.json
CLAUDE.md -> ~/.claude-shared/CLAUDE.md
projects -> ~/.claude-shared/projects
commands -> ~/.claude-shared/commands
mcp.json -> ~/.claude-shared/mcp.json
The only real file that is different between accounts is auth.json.
Everything else is shared using symlinks.
Which means:
I log into each account once
All accounts use the same project history
All accounts use the same commands
All accounts use the same CLAUDE.md instructions
Changing something in one place updates it everywhere
This was the first setup that actually felt usable.
Setting It Up
First, create the shared folder and separate account folders.
mkdir -p ~/.claude-shared
mkdir -p ~/.claude-office-pro
mkdir -p ~/.claude-shared-max
Then move all the common files into the shared folder.
mv ~/.claude/settings.json ~/.claude-shared/
mv ~/.claude/CLAUDE.md ~/.claude-shared/
mv ~/.claude/projects ~/.claude-shared/
mv ~/.claude/commands ~/.claude-shared/
mv ~/.claude/mcp.json ~/.claude-shared/
Now create symlinks inside each account folder.
ln -s ~/.claude-shared/settings.json ~/.claude-office-pro/settings.json
ln -s ~/.claude-shared/CLAUDE.md ~/.claude-office-pro/CLAUDE.md
ln -s ~/.claude-shared/projects ~/.claude-office-pro/projects
ln -s ~/.claude-shared/commands ~/.claude-office-pro/commands
ln -s ~/.claude-shared/mcp.json ~/.claude-office-pro/mcp.json
ln -s ~/.claude-shared/settings.json ~/.claude-shared-max/settings.json
ln -s ~/.claude-shared/CLAUDE.md ~/.claude-shared-max/CLAUDE.md
ln -s ~/.claude-shared/projects ~/.claude-shared-max/projects
ln -s ~/.claude-shared/commands ~/.claude-shared-max/commands
ln -s ~/.claude-shared/mcp.json ~/.claude-shared-max/mcp.json
Then create aliases so switching accounts becomes one command.
alias claude-office='CLAUDE_CONFIG_DIR=~/.claude-office-pro claude'
alias claude-shared='CLAUDE_CONFIG_DIR=~/.claude-shared-max claude'
Now when I want to use my office Pro account, I run:
claude-office
And when I want to switch to the shared Max account that I use with my colleagues:
claude-shared
That is it.
No logging in again. No copying files. No broken commands.
The Bigger Lesson
This looked like a Claude Code problem.
But it is actually a common problem with developer tools.
Most tools bundle:
Identity
Configuration
User data
Into one folder.
That works fine until you need multiple accounts.
Then suddenly the thing you actually want to isolate — authentication — is tied to a bunch of things that should have been shared.
The best setups separate those concerns.
Authentication should be isolated. Everything else should be reusable.
Once I changed my Claude setup to follow that idea, switching accounts stopped feeling like context switching.
It finally felt like the same workspace, just with a different login.
And honestly, that is probably how it should have worked in the first place.





