Separate Claude Code Configs for Personal and Work
Keep your personal side projects and work codebase in isolated Claude Code instances. Different API keys, different plugins, zero crossover.
Prerequisites
- claude-multi installed
- Two different API keys (or two provider accounts)
Mixing personal and work projects in the same Claude Code config creates problems. Your work API key ends up in personal sessions. Your personal MCP servers leak into work sessions. Conversation histories get tangled. claude-multi solves this by giving each context its own isolated instance.
Create the work instance
claude-multi# Add new instance# Name: work# Template: your work provider# Paste your work API keyThis creates ~/.claude-work/ with its own settings.json, plugins, and history.
Create the personal instance
claude-multi# Add new instance# Name: personal# Template: your personal provider# Paste your personal API keyThis creates ~/.claude-personal/ with a completely separate config.
The result
# Work projectsclaude-work "review the Q3 migration plan"
# Personal projectsclaude-personal "build me a bookmark manager in Go"Two commands, two configs, two billing accounts. No crossover.
What stays isolated
| Setting | Work instance | Personal instance |
|---|---|---|
| API key | Work billing | Personal billing |
| Config dir | ~/.claude-work/ | ~/.claude-personal/ |
| Plugins | Work-specific tools | Personal experiments |
| MCP servers | Work database, CI | Local tools |
| History | Work conversations | Personal conversations |
CLAUDE.md | Work coding standards | Personal preferences |
Configure each instance separately
Edit the work instance to point at work resources:
nano ~/.claude-work/settings.jsonAdd work-specific MCP servers:
{ "mcpServers": { "work-postgres": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://..."] } }}Do the same for the personal instance with personal resources:
nano ~/.claude-personal/settings.jsonKeep auto-sync off
Do not enable auto-sync between these instances. Auto-sync shares plugins from ~/.claude/, which defeats the purpose of isolation. Manage plugins independently in each instance.
Using different providers
Nothing stops you from using different providers for each context:
# Work uses GLM (company has a subscription)claude-work "update the billing service to handle new tax rules"
# Personal uses DeepSeek (pay-per-token, cheaper for side projects)claude-personal "write a CLI tool that generates static sites"The provider choice is independent for each instance.
Cleaning up
If you change jobs or stop using one context:
claude-multi# Pick: Remove instance# Select: work# Delete config directory: yEverything related to that instance is gone. The other instance is unaffected.