# Multiple Accounts

> Sign in to several accounts of the same CLI (a Work login, a Personal login, one per client) and keep them all active in the same window.

- Area: Desktop app
- Plans: Plus, Pro, Team
- Last checked against the product: 2026-10-02
- Web page: https://agentsroom.dev/docs/multi-account

## What it does

Sign in to several accounts of the same CLI (a Work login, a Personal login, one per client) and keep them all active in the same window. AgentsRoom pins an account per project, per sidebar folder or per agent, so a work project runs on the work subscription while a personal project next to it runs on yours, and two agents of one project can even use two different accounts at once. Supported for Claude Code, Codex, Grok Build and Cursor, each isolated by its own configuration directory; Antigravity is the special case, where an "account" is a Gemini API key. Sign-in happens inside Settings, credentials never leave the machine, and the account each agent runs on stays visible on its card.

For a one-off, the right-click launch menus also let you start a closed agent or a quick agent on another account for that launch only, without touching what the agent is pinned to.

## Where to find it

- **Settings > AI providers & accounts**: pick the provider's tab (Claude, Codex, Grok, Cursor, Antigravity), then its **Accounts** block (Claude Accounts, Codex Accounts...), with **Add an account**, **Set default**, **Custom path** and the Signed in / Not signed in badge per row. The row at the top shows the login the CLI holds by itself (`~/.claude`), with its email for Claude. It is called **Default** while it is the default account, and by its folder (`~/.claude`) once another account is set as default; its **Set default** button makes it the default again.
- Per project: **Project settings > Defaults > AI providers** (account picker). Per folder: the folder's defaults. Per agent: the **Claude account** / **Codex account** / ... picker in Add agent and Edit agent, whose sub-label says what **Default** resolves to ("Project default: Work", "Global default: Personal").
- Every account picker (Claude, Codex, Antigravity, Grok, Cursor; in Add / Edit agent, project settings, folder settings, the new project dialog and the scheduled task form) ends with a **Default account** chip once at least one account is configured. The chip carries that name while the CLI's own login is the default, and the folder (`~/.claude`, `~/.codex`...) once another account was set as default. Its sub-label names the CLI's own home (`~/.claude`, `~/.codex`, `~/.grok`, `~/.cursor`, the signed-in email for Claude) and its tooltip reads "Run on the login the CLI made on its own, even when the project or folder pins another account".
- The **Add multiple accounts** dashed button in the agent dialogs jumps to the right Settings tab.
- For one launch: right-click a closed agent, the menu shows the **Provider**, **Account**, **Model**, **Context** and **Effort** rows above the **Launch agent** button; right-click the **Quick agent** button in the agents toolbar, and each provider's model list ends with the same **Account** row.
- Footer usage panel: one section per signed-in account.

## How to use it

1. **Settings > AI providers & accounts**, pick the provider tab, click **Add an account**. AgentsRoom creates a managed directory and opens a mini terminal running the official CLI login (`claude` then `/login`, `codex login`, `grok login`, `cursor-agent login`). Finish the browser step; the badge flips to **Signed in** when the credentials file appears (Cursor asks you to confirm instead, since it does not publish where it writes credentials).
2. Name the account, give it a colour, and **Set default** if every new agent should use it.
3. Pin it where it belongs: on a project (Project settings > Defaults), a folder, or a single agent. Resolution order at launch: agent override, project pin, nearest folder, global default, then the CLI's own home.
   **Default** inherits from the level above; **Default account** stops the cascade and pins the CLI's own login, whatever the project or folder says.
4. Changing the default account (Settings, or the phone), the account of a project, a folder or a running agent relaunches the affected agents on the new account with their context carried over; a toast tells you how many were relaunched. Agents pinned to their own account, or whose project or folder pins one, are not touched by a change of the default.

One launch on another account: right-click a closed agent (or the **Quick agent** button), open the **Account** row, pick an account, then press **Launch agent** (or the quick agent's model entry). The row opens on the account the agent really resolves to (agent pin, project, folder, global default) and lists **Default account** plus every account of the chosen provider. The pick is armed for this spawn only and is never written on the agent: at the next opening the agent is back on its usual account. Picking the account it already resolves to arms nothing. The row is hidden when the provider has no account concept or no account is configured yet, and a pick made for one provider is dropped if you switch the launch to another provider.

Reuse an existing directory: toggle **Custom path** and point the row at a folder you already signed in to, for example a CCS (Claude Code Switcher) instance under `~/.ccs/instances/<name>`. No re-login needed.

Personal configuration: a managed account starts with an empty user layer (no slash commands, skills, subagents, hooks, plugins or user MCP servers). Turn on **Use my personal CLI configuration** to load your own layer into every account, for Claude Code and Codex; the panel lists what is loaded (**Slash commands**, **Skills**, **Subagents**, **Memory file**, **Hooks**, **Plugins**, **User MCP servers**, **Project MCP servers**, and so on) and what is not reaching your agents. For Claude Code the MCP servers you added with `claude mcp add` at user scope and, since 2026-09-20, those added at project scope for a given folder (`-s local`) both follow: a project-scope server reaches the same folder inside every account, and a server the account already declares under that name wins. Credentials, sessions and history stay isolated.

Antigravity: the tab holds Gemini API keys (stored in the Secret Manager). Turn on **Read the key from the environment** for them to take effect; this changes every Antigravity session on the machine, including ones started outside AgentsRoom.

## Settings

- `claudeProfiles`, `codexProfiles`, `grokProfiles`, `cursorProfiles`, `antigravityProfiles` (global, read-only over MCP): the accounts, managed by the sign-in flow.
- `defaultClaudeProfileId`, `defaultCodexProfileId`, `defaultGrokProfileId`, `defaultCursorProfileId`, `defaultAntigravityProfileId` (global): the machine default per provider; `null` = the CLI's own login. Changed from Settings or from the phone, it relaunches the running agents that inherit it (since 2026-10-02 for Settings); a change through `settings_set` applies at their next launch.
- `inheritUserCliConfig` (global, Settings > AI providers & accounts > Multiple Accounts, the rules block below the provider tabs): load your personal CLI layer (slash commands, skills, subagents, memory file, hooks, plugins, user-scope and per-project MCP servers of the CLI's own config) into managed accounts, off by default, one switch for all providers.
- `accountIndicatorMode` (global): `color` tints the provider mark on avatars and project tiles with the account colour, `label` writes the account name on the agent card.
- Project and folder pins live in the project's and folder's defaults; agent overrides on the agent (`accountProfileId` through the MCP executor overrides). The value `"system"` means the CLI's own login, on every machine. The one-launch pick of the right-click menus is not a setting: nothing is stored.

## Agent tools (MCP)

- `agents_save`, `agents_spawn`, `backlog_create` / `backlog_update`: accept `accountProfileId` as an executor override, so a ticket or a spawned agent can be bound to one account (an inapplicable id is dropped and reported). `"system"` is accepted everywhere and never dropped: it pins the CLI's own login.
- `settings_get` / `settings_set`: read the default account per provider, or change a saved agent's account with `scope: "agent"` (`accountProfileId`: an id, `"system"`, or `null` to inherit). With `scope: "folder"`, `claudeProfileId` and `codexProfileId` take an id or `"system"`.
- `usage_overview`: quota per signed-in account, per provider.

## Providers

- Claude Code: one directory per account (`CLAUDE_CONFIG_DIR`), the only provider that exposes the signed-in email, shown per row and in the pickers. An account's identity is its email plus its organization: a personal plan and a Team plan opened with the same email are two accounts, with two quotas, and the organization name is shown next to the email (on the account rows and in the usage panel) only when another account shares that email. The warning "Signed into the same account and organization as ..." appears only when two rows really are one login: they then count as one, agents cannot switch between them and auto-switch cannot take over when one runs out.
- Codex: one directory per account (`CODEX_HOME`); Codex always runs from a home AgentsRoom generates per project, which is why the personal configuration switch matters even with a single account.
- Grok Build (`GROK_HOME`) and Cursor (`CURSOR_CONFIG_DIR`): same directory model. Setting `XAI_API_KEY` or `CURSOR_API_KEY` does not switch account: both CLIs ignore the key once a session is stored, silently. Separate directories are the only reliable lever.
- Antigravity: no directory. Google AI Pro and Ultra logins live in the OS keyring, one per machine, and cannot be alternated; an account here is a Gemini API key injected per agent.
- Other providers: single login, no account tab, and no **Account** row in the launch menus.

## Mobile

Present for everything except sign-in. The phone shows the account each agent runs on (colour dot on the avatar and in the console spec strip) and each project starts on, changes the account of a running agent from the Switch Provider sheet, picks the account when creating an agent or pinning a trigger (with the same **Default** / **Default account** choice as the desktop), and sets the machine default in **Settings > Multiple Accounts**, where the CLI's own login is checked while it is the default and named by its folder otherwise. Adding or removing an account requires the desktop, as the settings card says. The signed-in email, the organization name and the duplicate warning are not shown on the phone, and the one-launch account pick of the right-click menus is desktop only: a quick agent started from the phone follows the usual cascade.

## Limits

- Plan cap on added accounts: none on Free, one on Plus, unlimited on Pro. Existing accounts keep working after a downgrade; only additions are blocked. Several Antigravity keys need Pro.
- Account ids are machine-local: a project pin shared through git resolves to the default on another machine until re-bound.
- Deleting an account leaves its directory on disk; agents that pointed at it fall back to the default silently.
- The **Default account** chip is not offered on a backlog ticket's account override; set `"system"` through the MCP tools instead.
- No personal-configuration sync for Grok and Cursor, and no per-account quota reading for them.
- Project hooks warning and provider settings read the directory of the account the agents really use, not `~/.claude`, once an account exists.
- The one-launch account pick applies to the launch you commit from that menu, nothing else: a later restart, resume or relaunch of the same agent goes back to its pinned account.
- Moving an agent to another account of the same CLI keeps its conversation: the transcript is brought to the launch account and resumed there (Claude Code sessions live inside the account that created them). Since 2026-09-20 this also holds when the account change comes from a **Temporary launch override** or a team run; before, such a relaunch came back to a blank conversation.

## Common questions

- **Do I need CCS or a shell wrapper?** No. AgentsRoom sets the CLI's own directory variable per agent; CCS profiles can be reused through **Custom path**.
- **My Codex agent said "No saved session found with ID" after I changed its account.** Fixed on 2026-10-01: when a Codex agent starts on another account than the one its conversation was recorded on (after a restart of the app, or with a one-launch pick from the menu), its conversation is now found in the other account's folder and brought over before it resumes. Update AgentsRoom.
- **Why did my slash commands disappear on a new account?** The account directory starts empty. Turn on **Use my personal CLI configuration** in the Multiple Accounts panel.
- **`claude mcp list` inside an agent shows fewer servers than in my own terminal.** A managed account receives nothing from your own `~/.claude.json` unless **Use my personal CLI configuration** is on. With it on, both your user-scope servers and the project-scope ones you added for that folder are merged into every account at each launch (project scope since 2026-09-20). Servers declared in AgentsRoom itself (Settings, project or agent) reach every account regardless: see [MCP Servers](https://agentsroom.dev/docs/mcp-servers.md).
- **I am on a personal project but my work account is used.** Check the **Default account** row and the pickers: the sub-label says which account **Default** resolves to. Also see [Account Auto-Switch](https://agentsroom.dev/docs/account-auto-switch.md): a launch moved off an exhausted account shows a toast.
- **I set another account as default, but my agents still run on the old one, and after a restart the usage panel shows "Default account" with "The usage lookup for this account was rate limited".** Fixed on 2026-10-02, two causes. The CLI's own login (`~/.claude`) kept the name **Default account** even after you set another account as default, so an error on it read as an error on your default, and its row titled **Default** at the top of Settings read as your choice being reverted. It is now called by its folder (`~/.claude`) everywhere as soon as another account is the default; the rate-limit message is about that login only and is retried automatically. And changing the default in Settings did not move the agents already running: they now relaunch on the new default with their conversation, as when the change comes from the phone, a project or a folder. Agents pinned to an account, or whose project or folder pins one, keep it. Update AgentsRoom.
- **Can two agents in one project use two accounts?** Yes. Pin the project on one, override the other agent in Edit agent.
- **My project pins my work account. How do I run one agent on my personal login, the one the CLI holds in `~/.claude`?** In Add agent or Edit agent, pick the **Default account** chip at the end of the account picker (not **Default**, which inherits the work pin). That agent runs on the CLI's own login; the rest of the project stays on the work account. Same chip on a folder or a project to point them at the CLI login.
- **My personal Claude plan and my Team plan use the same email. Can I add both?** Yes. Since 1.178.0 the two are told apart by their organization: each gets its own row, its own usage section and its own quota, with the organization name shown next to the shared email. Before, they were flagged as duplicates and merged in the usage panel, so the Team plan was never shown and auto-switch could not use it. Signing the second row into the same email and the same organization is the only case that still warns.
- **My agent's account is out of quota. Can I run it once on another account without editing it?** Yes. Right-click the closed agent, open the **Account** row, pick the other account and press **Launch agent**. The agent's record is untouched: it comes back on its usual account next time. Same row when right-clicking the **Quick agent** button for a quick agent.
- **Can new launches go to my other account automatically when the first one is nearly full?** Yes, with a quota rule (Usage panel > **Quota management**): the template **Use another account** redirects launches to the account you choose from a threshold, and the action **Move running agents** moves agents already running. See [Quota Rules](https://agentsroom.dev/docs/quota-rules.md).
- **Can I alternate two Google subscriptions on Antigravity?** No tool can: the login is in the OS keyring, one per machine. Use Gemini API keys instead.
- **Are my credentials sent anywhere?** No. Sign-in runs the official CLI locally; AgentsRoom only watches for the credentials file.

## Related

- [Account Auto-Switch](https://agentsroom.dev/docs/account-auto-switch.md): continue on another account when one hits its usage limit.
- [Quota Rules](https://agentsroom.dev/docs/quota-rules.md): redirect launches or move running agents between accounts from a quota threshold.
- [Multi-Provider Support](https://agentsroom.dev/docs/multi-provider.md): mixing Claude, Codex and other CLIs in one project.
- [MCP Servers](https://agentsroom.dev/docs/mcp-servers.md): servers declared in AgentsRoom reach every account and every CLI.
- [Usage Alerts](https://agentsroom.dev/docs/usage-limit-alerts.md): the quota of each account, read per account.
- [Claude Code Token Usage](https://agentsroom.dev/docs/claude-code-token-usage.md): the usage panel, per account.
- [Secret Manager](https://agentsroom.dev/docs/secret-manager.md): where Antigravity keys are stored.
- [Codex Data Storage](https://agentsroom.dev/docs/codex-data-storage.md): the per-project Codex folders derived from each account, and how their disk space is reclaimed.
