Claude Code accounts, side by side on one Mac
Each Claude Code account stays signed in with Claude Code's own login, in its own directory. Altseat shows each one's session and weekly usage in the menu bar, starts claude on an account that has room, and hands a session near its limit over to the next one with room.
Free for 2 accounts. macOS 14 or later, Apple Silicon, zsh.
Last updated

What Altseat does with Claude Code
- One directory per account
- Each account you add gets a directory of its own, such as
~/.claude-work, andclaudestarts withCLAUDE_CONFIG_DIRset to it: the way Anthropic documents under Log in with multiple accounts. Your first account stays in~/.claude. - Usage from the status line
- Set up adds Altseat to Claude Code's status line. While Claude Code runs on an account, Altseat records the session and weekly usage Claude Code reports in the
rate_limitsfields, and the menu bar shows them for every account, with their reset times. - Optional endpoint poll
- Off by default. With Read Claude usage from Anthropic's endpoint turned on in the Accounts window, Altseat asks Anthropic for each account's usage every 15 minutes, so accounts you are not using stay current and the Fable window and the plan show too. It reads the account's Keychain item for this, and Anthropic does not document that endpoint, so it may stop working.
- Starts on an account with room
When the active account is at its session or weekly limit,
claudestarts the next account in your order that has room, makes it the active one and says so before Claude Code opens:claude altseat: personal is at its session limit, starting workWhen every account is at a limit, it starts the active one and names the first to reset:
altseat: every account is at its limit; work resets at 18:25The order is the one in the Accounts window; drag an account to change it.
- Hands over near the limit
- When the active account reaches 95 % of its session or weekly window and another one has room, the agent writes a short handoff, the session ends after its current step, and the same conversation continues on the next account in the same terminal. Automatic handoff below has the details and the off switch.
- Shared settings and sessions
- Every account links to
~/.claudeforsettings.json,CLAUDE.md, rules, skills, commands, agents, output styles, workflows, keybindings, themes, plugins, projects, agent memory and history. The login stays with each account. With the conversations shared,claude -ccontinues the last conversation in the current directory on whichever account starts.altseat synccopies your MCP servers and project trust to the other accounts, and every launch keeps them in step. - The Keychain
- Not read by default. Claude Code keys each login's Keychain entry to its configuration directory, so the logins stay apart without Altseat touching them. Altseat reads an account's entry only with the endpoint option on.
Set up
- Download Altseat, drag it to Applications and open it.
- Choose Set up. It puts the
altseatcommand on your PATH, adds theclaude,codexandkimishell functions to~/.zshrcand adds Altseat to Claude Code's status line; a status line you already have keeps running and showing its output. Then open a new terminal window. Add an account in the Accounts window, or in the terminal:
altseat add workIt creates
~/.claude-workand links the shared settings into it.Sign in once, with Claude Code's own login:
CLAUDE_CONFIG_DIR=~/.claude-work claudeThe login completes with the claude.ai account your default browser is signed into. Sign that browser into the second account first, or start the command with
BROWSER=/usr/bin/trueand open the printed address in a browser signed into it. Sign in in the Accounts window shows the same command with Open in Terminal.- Type
claudeas always. Each account's usage shows in the menu bar once Claude Code has run on it.

What the claude function does
Set up writes one marked block into ~/.zshrc, between # >>> altseat >>> and # <<< altseat <<<. Its claude function runs altseat pick claude, which reads Altseat's settings and the last usage on your Mac, with no network call, and prints the directory of the account to start. The function then runs the real claude with CLAUDE_CONFIG_DIR set to that directory, or unset for ~/.claude.
Maintenance commands run on your first account without a pick: claude mcp, update, doctor, config, plugin, auth, login, setup-token and install, and --version and --help. When CLAUDE_CONFIG_DIR is already set, or altseat is missing or fails, the plain claude runs.
Uninstall Altseat in the menu takes the block and the status line entry out again. Your account directories and their logins stay.
Automatic handoff
When the active account reaches 95 % of its session or weekly window and another Claude Code account you added has room, Altseat asks the agent, through Claude Code's hooks, to finish the step it is on and write a short handoff: the task, what is done, what comes next, the key files and commands, the open questions and any scheduled loop. The agent ends its turn, Claude Code exits, and the claude function starts it again on the next account in your order with room, in the same terminal and the same directory, resuming the same conversation with claude --resume. The agent reads the handoff and continues. 95 % is the default; handoffAtPercent in ~/.config/altseat/config.json sets another value from 50 to 100.
In the terminal, two lines from altseat, then Claude Code opens again:
altseat: personal is at its weekly limit, continuing on work
altseat: handoff ~/.config/altseat/handoff/2026-10-22-140211-48213-1734-29001.mdWith the app open, a macOS notification titled Altseat moved claude from personal to work reads personal is at 96 % of its weekly limit. The menu bar switches to the new active account. If the limit lands before the handoff is written and Altseat's own numbers for the account have reached the threshold, the session still moves: the second line reads altseat: no handoff was written, work resumes from the conversation, and the conversation itself carries the context. Otherwise the session stops at the limit as it would without Altseat.
Handoff files live in ~/.config/altseat/handoff/, one per move, named by date and run and readable only by you. Altseat checks that the file exists and never parses it.
Turn it off with Hand over automatically near the limit in the Accounts window. With it off, a session stops at the limit as it would without Altseat; then exit Claude Code and run claude -c: the next account with room continues the conversation.
The same switch is in the terminal: altseat handoff off turns it off, altseat handoff on turns it back on (--at 90 also sets the threshold), and altseat handoff status shows the switch, the hooks and any session being handed over.
The handoff runs between two Claude Code processes, never under a running one, and only across the Claude Code accounts you added: a session never moves to Codex or Kimi Code. It works in an interactive claude session started in a terminal through the shell function; claude -p, claude --bare and the IDE extensions get no handoff. The app does not need to be open.
Limitations
- Apple Silicon
- Altseat 1.x runs on Macs with Apple Silicon and macOS 14 or later.
- zsh only
- The shell functions are installed in zsh, the default shell on macOS. In bash or fish,
clauderuns without the pick. - Between processes
- Altseat picks the account when
claudestarts, and the handoff ends Claude Code at a turn boundary before the next account starts. No login changes under a running process, and a session moves only to another Claude Code account you added, never to Codex or Kimi Code. - Fable
Max plans have a separate weekly limit for Fable. Altseat reads it only with the endpoint option on, and a full Fable window does not stop a launch: the account starts, with a warning.
altseat: work is at its Fable limit until Sat 09:00; other models still work- Fresh numbers
- The status line carries
rate_limitsonly for Pro and Max subscribers, after the first response of a session. Without the endpoint option, an account's numbers are as fresh as its last session, and an account with no numbers yet counts as having room. - IDE extensions
- They start Claude Code without the shell function, so they run your first account and get no handoff.
Questions
Can't two lines of shell do this?
For switching, yes: an alias per account with CLAUDE_CONFIG_DIR works, and Anthropic documents it. Altseat adds what an alias leaves to you: the usage of every Claude Code and Codex account in the menu bar, a launch that skips an account at its limit and says which one it started, a Claude Code handoff near the limit that continues the conversation on the next account, settings and sessions shared across accounts, and the same switching for Codex and Kimi Code.
The free version covers 2 accounts, so you can set it against your aliases before you pay.
Will this get my account banned?
Altseat works only with accounts you added and are authorised to use. It never shares a login, never handles a token for anyone else and never changes the login of a running process: a handoff ends Claude Code at a turn boundary before the next account starts. It adds no capacity: each account keeps its own limits.
Each account gets its own directory through the setting its vendor documents: CLAUDE_CONFIG_DIR, which Anthropic documents for running separate accounts, CODEX_HOME for Codex and KIMI_CODE_HOME for Kimi Code.
Whether several subscriptions suit your situation is between you and each provider: see Anthropic's consumer terms, OpenAI's terms of use and the Kimi Code membership guide.
Is it safe with my credentials?
Each tool signs in with its own login and keeps its own credentials. Altseat never sees a password and never writes, refreshes or copies a token.
By default it reads Claude usage from the status line Claude Code already runs, so it does not read the Keychain. Only the usage endpoint option, off by default, reads Claude's Keychain item, to ask Anthropic for that account's usage. Codex usage comes from the Codex CLI's own local app-server.
Altseat itself sends nothing anywhere except that optional request to Anthropic, the license check (the key, a one-way hash of the Mac's id, the Mac's name and the app version) and the update check.
What happens when an account reaches its limit?
In Claude Code, the session moves near the limit. When the active account reaches 95 % of its five-hour or weekly window and another Claude Code account you added has room, the agent finishes the step it is on and writes a short handoff file, the session ends, and Altseat starts claude on the next account with room in the same terminal: the same conversation resumes there, the agent reads the handoff and carries on. One line in the terminal and, with the app open, a macOS notification say which account it moved to.
The handoff runs between two Claude Code processes: the first has exited before the next one starts, and Altseat never changes the login of a running process or uses an account you did not add. Each account keeps its own limits. One switch in the Accounts window turns the handoff off, as does altseat handoff off; then a session stops at the limit as it would without Altseat, the next claude starts the next account with room, and claude -c continues the conversation there.
Codex CLI and Kimi Code pick at launch only. When the active Codex account is at its limit, codex starts the next one in your order with room and prints which one, so codex resume --last continues the chat; an automatic handoff for Codex is planned. Kimi Code has no usage reading yet, so kimi starts on the active Kimi Code account; make another one active in the menu bar and kimi -c continues there.
Does Altseat need to stay open?
Not for switching: the claude, codex and kimi commands pick from the usage Altseat last recorded, with or without the app. Claude Code's status line keeps recording Claude usage while it runs, and the Claude Code handoff runs through Claude Code's hooks and the altseat command, with or without the app; the app adds the macOS notification.
The app shows the usage in the menu bar and refreshes Codex usage every 15 minutes, so keep it open for the freshest pick.
What does the free version do?
Everything, for 2 accounts in total across Claude Code, Codex CLI and Kimi Code, with no key and no sign-up. A license raises that to 10 accounts per tool on one Mac.
Related
Start with 2 accounts, free.
Add a second Claude Code account and keep typing claude: the menu bar shows each account's session and week as soon as Claude Code reports them.
macOS 14 or later, Apple Silicon, zsh.