How to run multiple Claude accounts on one machine
Plenty of people end up with two Claude accounts: work and personal, or a second subscription bought purely because the limits on one weren’t enough. Claude Code signs into exactly one at a time, but the mechanism for running several side by side is built in, documented, and needs no tricks. It works the same way on macOS, Linux and Windows.
The mechanism
Claude Code keeps its login and settings in a config directory: .claude in
your home folder by default, on every OS. The CLAUDE_CONFIG_DIR environment
variable points it somewhere else, and a different directory means a different
login. That’s the whole mechanism: one directory per account.
macOS and Linux:
# A second account, living in its own directory:
CLAUDE_CONFIG_DIR=~/.claude-personal claude
Windows (PowerShell):
# The same, for the rest of this terminal session:
$env:CLAUDE_CONFIG_DIR = "$HOME\.claude-personal"; claude
The first time you run that, Claude Code has no login there. Sign in with the
second account (/login). If this machine has never signed in to Claude Code
at all, start with
how to sign in to Claude Code for the first time.
From then on, any terminal where
CLAUDE_CONFIG_DIR points at that directory is the second account, and any
terminal without it is the first. Both stay signed in; nothing is logged out.
Making it livable
Aliases keep the directories straight:
macOS and Linux (~/.zshrc, or ~/.bashrc on most Linux setups):
alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'
alias claude-personal='CLAUDE_CONFIG_DIR=~/.claude-personal claude'
Or export the variable once per terminal session, so every claude invocation
in that tab uses the same account:
export CLAUDE_CONFIG_DIR=~/.claude-personal
Windows: the same two shapes, as PowerShell profile functions ($PROFILE).
Note that setting $env: always applies to the rest of the terminal session;
PowerShell has no one-command prefix:
function claude-work { $env:CLAUDE_CONFIG_DIR = "$HOME\.claude-work"; claude @args }
function claude-personal { $env:CLAUDE_CONFIG_DIR = "$HOME\.claude-personal"; claude @args }
Where it gets annoying
This works, and people run it for months. The friction is real, though:
- Nothing tells you which account a terminal is. The variable is invisible; the wrong account looks identical until you notice the usage went to the wrong place.
- VS Code windows inherit whatever the environment was when they opened. Getting one project reliably onto the work account and another onto the personal one means managing the variable per window, by hand.
- Usage is per account, and you can’t see it across accounts. The point of a second account is usually headroom, but each account’s limits are only visible from inside it, one at a time.
What the toolkit automates
The Schizm toolkit exists to remove these three annoyances:
- Clauswitch (VS Code, on macOS, Linux and Windows) binds an
account to a window or a folder: open the project, get the right account,
see which one in the status bar. It drives the same
CLAUDE_CONFIG_DIRmechanism described above. Nothing is patched or intercepted, and there is nothing to migrate away from if you stop using it. - Clausage (macOS menu bar) watches the usage the terminal won’t show you across accounts: session and weekly windows for each account, side by side, with a notification before you hit a limit. Free for two accounts, which is exactly this setup. On Linux and Windows, where Clausage doesn’t run, Clauswitch Pro brings the same per-account numbers into VS Code instead.
If you’re here from a search engine and just wanted the mechanism: it’s the two code blocks at the top, and they work without anything from us.