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_DIR mechanism 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.