Skip to content
Multiple accounts

How multiple Claude Code and Codex accounts work in Crowsnest

A native conversation cannot simply change to credentials from another account home. Crowsnest keeps that boundary honest for Claude Code and Codex: it quotes a bounded briefing into a new session, records lineage, and leaves the original untouched.

Mechanism The destination receives quoted context in its own native session. Crowsnest never rewrites the source as if another account had authored it.
At a glance

Crowsnest Pro can keep several Claude Code and Codex accounts available, but it does not merge their native histories. Continuing on another account creates a new, attributed conversation with a compact briefing. The default behavior asks first; optional automatic behavior is limited to starting new conversations or continuing after a quota failure when exactly one other signed-in account for that provider is available.

Why this is a fork, not a switch

Both runtimes have an account-home boundary. Claude Code's documentation says CLAUDE_CONFIG_DIR stores settings, credentials, session history, and plugins. OpenAI's Codex documentation says CODEX_HOME stores Codex config, auth, logs, sessions, and other state. Crowsnest gives every registered account its own matching home.

The native mechanics differ: Claude Code resumes a transcript from its account's project tree, while Crowsnest reaches a Codex thread through Codex app-server under the account's CODEX_HOME. The boundary is the same: selecting different credentials does not make the receiving account own the original native history.

Crowsnest therefore treats cross-account continuation as a new branch. It starts the receiving runtime under the selected account's own home, sends attributed context as the first user message, and records a link back to the source. The old conversation stays where it was and remains unchanged. Because the briefing is built from Crowsnest's provider-neutral conversation model, the same handoff rules apply to Claude Code and Codex.

What crosses into the new conversation

The handoff is built locally from Crowsnest's normalized conversation model. It is a mechanical quote, not an extra model-generated summary and not an upload to a summarization service.

  1. Keep the opening task

    The first usable turn is retained, but capped so a very long prompt cannot crowd out the latest state.

  2. Fill backward from the end

    The newest usable turns are added newest-first until the quoted-body budget is full.

  3. Reduce bulky evidence

    Tool commands remain visible. Tool results keep their first line and state how many additional lines were omitted; private reasoning is not transferred.

  4. Name every omission

    If the middle does not fit, the briefing includes an explicit omitted-turn count. Truncation is never presented as complete history.

The complete briefing is usually longer than 8,000 characters because the attribution header, source metadata, separators, omission marker, and continuing instruction sit outside the quoted-body budget. The original draft called 8,000 a hard ceiling; the released code does not.

What happens near—or at—a quota wall

Claude Code and Codex expose their allowance state through different native interfaces. Crowsnest keeps the resulting readings attached to the correct provider account and exposes three distinct behaviors instead of calling all of them “automatic switching.”

The failed turn remains visible because it really did stall. Continuing elsewhere does not repair or erase that event; it starts a new conversation from the bounded briefing.

New conversations can start where more allowance remains

Routing applies only when a new conversation starts, and it ships off. When enabled, Crowsnest ranks the last published usage reading for each account. The fullest reported window is binding, so an account with a nearly exhausted session or weekly allowance does not look healthier because another meter is low.

When headroom is within 15 percentage points, the soonest known reset breaks the tie so expiring allowance is used first. A missing or failed reading is never interpreted as zero usage, and an account at 100% is not automatically selected. If nothing trustworthy is readable, Crowsnest falls back instead of dressing a guess up as a measurement.

Conversation size stops dominating once the budget fills

The app-side draft recorded the generated briefing size across 153 Claude Code transcripts on one machine. The result is directional evidence about the shared briefing builder, not a Claude Code or Codex benchmark: the corpus is not representative, the token column uses the rough four-characters-per-token convention, and no text was sent to a tokenizer service.

Source conversationTranscriptsMedian briefingRough tokensTurns kept
Under 50 KB271,057 chars2642
50–500 KB397,559 chars1,88939
0.5–5 MB688,612 chars2,15238
Over 5 MB198,615 chars2,15341

The large-conversation rows converge because the quoted body is budgeted. Their complete briefings can exceed 8,000 characters through fixed framing, and different model tokenizers can produce different counts from the same text. The briefing becomes the first message of the receiving conversation and may contribute to later input context until the provider caches or compacts it; “one-time token cost” would therefore be misleading.

API-equivalent cost depends on the receiving model, caching, current public pricing, and later context reuse. Provider subscriptions are not billed as simple input-token invoices. The article deliberately leaves out a fixed dollar promise.

A continuation is useful because its limits stay visible

  • Not full native context: the destination gets a bounded quote, not every record, tool result, attachment, or hidden provider state.
  • Not a repaired failed turn: a quota-stalled turn remains in the source conversation; the new session starts after it.
  • Not silent rotation by default: fresh installs ask at a wall, warn at 90%, and leave new-conversation routing off.
  • Not a pooled quota: every account keeps its own provider-reported windows and its own native config home.
  • Not a credential vault: Crowsnest creates and identifies account homes, then the provider's own CLI performs sign-in. Crowsnest does not upload the transcript to its own service; the selected model provider receives the bounded briefing when the new session starts.
  • Not the only provider option: a provider may offer other recovery choices, such as waiting for reset or changing how work is billed; current provider documentation is authoritative.

Provider documentation and released implementation

Provider references: Claude Code environment variables, Claude Code session storage, Claude Code models, usage, and limits, Codex environment variables, and Codex authentication. Crowsnest behavior was checked on August 28, 2026 against the released provider-account registry, handoff, and account-routing implementations.

Usage evidenceSeparate limits, estimates, and billsMulti-agent operationsBuild a reviewed Agent Crew

Published August 27 and source-reviewed August 28, 2026. Provider limits, plans, model tokenizers, and pricing evolve independently; linked first-party documentation is authoritative for current provider behavior.