The Problem
Claude Desktop only supports one logged-in account at a time. If you keep a personal account and a work account on separate subscriptions, switching means signing out, losing your session, signing into the other, and rebuilding context. That friction adds up several times a day.
There’s no built-in profile switcher (yet). But Claude Desktop is an Electron app, and Electron lets you point an app at an isolated data directory with the --user-data-dir flag. We can use that to run two fully independent instances — each with its own login, history, MCP servers, and even its own Dock icon.
By the end of this guide you’ll have a Claude Work app you can launch from Spotlight or Raycast that stays logged into your work account permanently, right alongside your personal Claude.
How It Works
Each Claude instance reads all of its persistent data — credentials, sessions, MCP configs — from a single directory. Point a second copy of the app at a different directory and the two never touch each other. That’s the whole trick:
- Personal Claude → the default data directory
- Work Claude →
~/.claude-instances/work
Step 1: Duplicate the App
We make a real second copy of the app bundle (not just a launcher shortcut), so the running window shows our custom icon later.
cp -R "/Applications/Claude.app" "/Applications/Work Claude.app"
Step 2: Give It a Distinct Icon
This is what stops you from squinting at two identical icons in the Dock. Grab any .icns file you like and apply it with fileicon:
brew install fileicon
fileicon set "/Applications/Work Claude.app" ~/Downloads/ClaudeWork.icns
If the Dock doesn’t update right away, run
killall Dock.
Step 3: Create a Launcher
We want a single searchable “Claude Work” entry that opens the work copy pointed at the work data directory.
Open Script Editor, create a new document, and paste:
do shell script "open -n -a 'Work Claude.app' --args --user-data-dir=\"$HOME/.claude-instances/work\""
Then File → Export, set File Format: Application, and save it to /Applications as Claude Work.
Step 4: Match the Launcher’s Icon
Set the same .icns on the launcher app so the search result icon matches the window you get when it opens. Same fileicon command as before, just pointed at the launcher this time:
fileicon set "/Applications/Claude Work.app" ~/Downloads/ClaudeWork.icns
Note the two different bundles:
Work Claude.appis the duplicated app from Step 2, andClaude Work.appis the launcher you exported in Step 3. This command targets the launcher.
Step 5: Launch It
Search “Claude Work” in Spotlight or Raycast and hit enter. It opens the work copy on the isolated data directory. Sign in once — that session now persists across quits and relaunches.
Your personal Claude keeps launching the normal way, fully independent.
One Gotcha: Logging In
Claude Desktop authenticates with claude:// deep links. If both instances are mid-launch during a login, macOS can’t tell which one requested it and the token may land on the wrong app.
The fix is simple: log into one account at a time. Once both are authenticated and running, this never comes up again.
After Claude Updates
Auto-updates only touch the original Claude.app. The Work Claude.app copy stays on the old version. When you notice a version drift, just re-copy and re-apply the icon:
rm -rf "/Applications/Work Claude.app"
cp -R "/Applications/Claude.app" "/Applications/Work Claude.app"
fileicon set "/Applications/Work Claude.app" ~/Downloads/ClaudeWork.icns
Drop those three lines into a update-work-claude.sh script and it’s a one-command refresh.
Summary
| Piece | Role |
|---|---|
Work Claude.app | A second real app bundle with its own icon |
~/.claude-instances/work | Isolated data dir — separate login, history, MCP |
Claude Work launcher | Opens the copy pointed at the work data dir |
--user-data-dir | The Electron flag that keeps the two apart |
Two accounts, two icons, zero logging out. The same approach extends to a third or fourth instance — just pick a new data directory and a new icon.