Home / Blog / Two accounts, two limits: Claude Code on one Mac

Two accounts, two limits: Claude Code on one Mac

A personal subscription and a work one run on the same laptop at the same time. Each has its own login, its own limit and its own skills. One line in ~/.zshrc keeps them apart.

I have two Claude Code accounts: a personal one and a corporate one issued at work. It used to mean signing out of one to sign into the other. Now it is two commands in adjacent windows.

In short. Claude Code keeps everything of its own in ~/.claude. The CLAUDE_CONFIG_DIR variable points it at another directory — and that is a second, independent instance: its own login, its own limit, its own history, its own skills and plugins.


An alias with CLAUDE_CONFIG_DIR

The alias lives in ~/.zshrc, the file zsh reads every time you open a terminal. You do not have to open it in an editor: copy the command below in full, paste it into the terminal and press Enter. It appends the line to the end of the file and picks it up in the current session.

cat >> ~/.zshrc <<'EOF'

# Additional Claude Account
alias claude-work='CLAUDE_CONFIG_DIR="$HOME/.claude-work" claude'
EOF
source ~/.zshrc

The quotes around EOF matter: without them $HOME is expanded on the spot, and your own path lands in the file instead of the variable.

Then two steps:

  1. claude-work — the ~/.claude-work directory creates itself.

  2. Sign in to the second account on the screen it shows you.

Claude Code in a new configuration directory: the version 2.1.278 welcome screen and the list of login methods — Claude account with subscription, Anthropic Console account, third-party platform
The first run in an empty directory. The personal session stays signed in throughout.

The login screen appears not because a session expired, but because this directory never had one.

It is worth making both aliases explicit rather than only the second: while one profile stays plain claude, it is easy to start it without thinking.


What is separated between profiles, and what stays shared

Terminal output: .claude holds 40 skills and 2.9 GB, .claude-work holds 28 skills and 170 MB; the CLAUDE.md file exists only in the personal directory
Two profiles on one machine: different sets of skills and different amounts of accumulated history.
What is separated In each directory
Authentication its own Keychain entry
The global CLAUDE.md its own — the work one has none at all here
Skills its own: 40 against 28
Plugins and marketplaces its own
Personal MCP servers its own, inside .claude.json
History and transcripts its own: 2.9 GB against 170 MB
Folder trust decisions its own

What stays shared is everything that lives in the repository itself: the project’s .claude/settings.json, its CLAUDE.md, its .mcp.json. They are tied to the code rather than to the account, and work the same way in both profiles.

Authentication is separated deeper than it looks: on macOS the tokens are not in the directory but in the Keychain — one entry per profile.

Terminal output: two Keychain entries — Claude Code-credentials and Claude Code-credentials-f21d5853 — and below them a shasum command returning the same eight characters, f21d5853
The suffix is not a random identifier but the first eight characters of the SHA-256 of the directory’s absolute path.

Each account has its own limit

Two subscriptions, two independent counters. Burn the weekly limit on the work account and the personal one sits untouched, one window away. /status shows what is left on the current profile.

The limit belongs to the account rather than to the machine: the official help states that usage limits are "shared across Claude and Claude Code, meaning all activity in both tools counts against the same usage limits". So two directories under one account will not double that limit — but they turn out to be useful for something else, which is next.


A bonus: different sets of skills

Signing in to different accounts is not required. Two directories can sit under one account and give you two sets of skills, plugins and MCP servers. Work integrations stop hovering over personal projects. The limit is shared in that case — it is one account, after all.


Moving work between profiles

Sessions live inside the profile’s directory, so the second profile will not list the first one’s history, and --resume will not find it.

But nothing needs moving. A transcript is a plain JSONL file at ~/.claude/projects/<project-path>/<session-id>.jsonl. Take the session-id from the first profile, and in the second point at that file: give the full path and ask for it to be read. Claude Code reads files — it will pick the conversation up and carry on from where you stopped.

It does not become a restored session: the context arrives as a file that was read, not as a continuation of the earlier conversation. But you will not have to retell what you spent the last two hours doing.


Two subscriptions, one laptop, no signing in and out. All of it rests on one line in ~/.zshrc.

More on working out tooling on a Mac: NTFS without a driver. And the measurements behind 48 generated avatar frames.

FIG. ✕ — ENGAGE

Looking for senior engineering leadership?

Architecture direction, performance engineering, and senior technical ownership for teams that need it. Let's see if it's a fit.

— EOF

MANIFEST · ENGAGEMENT.cfg

AvailableForEngagement

A focused way to discuss senior engineering leadership, difficult systems work, or an embedded consulting engagement.

Based
Remote
Response
< 24h
Engagements
Consulting / lead roles
Discuss fit