Skip to main content

Multi-account switcher for Claude Code

Project description

claude-swap

Multi-account switcher for Claude Code. Easily switch between multiple Claude accounts without logging out. Works with both the Claude Code CLI and the VS Code extension.

Installation

Using uv (recommended)

uv tool install claude-swap

Using pipx

pipx install claude-swap

From source

git clone https://github.com/realiti4/claude-swap.git
cd claude-swap
uv sync
uv run cswap --help

Updating

uv tool upgrade claude-swap
# or
pipx upgrade claude-swap

Usage

Add your first account

Log into Claude Code with your first account, then:

cswap --add-account

Add more accounts

Log in with another account, then:

cswap --add-account

Switch accounts

Rotate to the next account:

cswap --switch

Or switch to a specific account:

cswap --switch-to 2
cswap --switch-to user@example.com

Note: Restart Claude Code (or close and reopen the VS Code extension tab) after switching for the new account to take effect.

Refresh expired tokens

If an account's token expires, log back into Claude Code with that account and re-run:

cswap --add-account

This will update the stored credentials without creating a duplicate.

Interactive TUI

If you don't want to remember flags, launch the arrow-key menu:

cswap --tui

Add an account from a raw OAuth token

If you only have a long-lived setup-token (e.g., produced by claude setup-token) and you don't want to log in via the browser flow first — useful on headless servers or when receiving a token from another machine — register it directly:

cswap --add-token sk-ant-oat01-... --email user@example.com
cswap --add-token sk-ant-oat01-... --email user@example.com --slot 3
cswap --add-token - --email user@example.com           # read token from stdin
cswap --add-token --email user@example.com             # prompt securely (no echo)

--email is required so cswap's metadata stays aligned with the rest of the accounts. No Anthropic API calls are made.

Other commands

cswap --list                    # Show all accounts with 5h/7d usage and reset times
cswap --status                  # Show current account
cswap --add-account --slot 3    # Add account to a specific slot (prompts before overwrite)
cswap --remove-account 2        # Remove an account
cswap --purge                   # Remove all claude-swap data

Tips

  • Continuing sessions after switching: You can resume the same Claude Code session after switching accounts. Close Claude Code or the VS Code extension tab, run cswap --switch in any terminal, then reopen and select your previous session. Note that the first message on the new account may use extra usage as the conversation cache rebuilds for that account.

How it works

  • Backs up OAuth tokens and config when you add an account
  • Swaps credentials when you switch accounts
  • Account credentials stored securely using platform-appropriate methods

Data locations

Platform Credentials Config backups
Windows Windows Credential Manager ~/.claude-swap-backup/
macOS macOS Keychain ~/.claude-swap-backup/
Linux / WSL File-based (inside the backup directory, under credentials/) ${XDG_DATA_HOME:-~/.local/share}/claude-swap/

On Linux/WSL the location follows the XDG Base Directory Specification. Set XDG_DATA_HOME to override; otherwise it defaults to ~/.local/share/claude-swap/. Existing installs with data under ~/.claude-swap-backup/ are migrated automatically on the first run. If both the legacy and new paths exist, cswap refuses to start and asks you to remove the stale one manually.

Backup and migration

Move account data between machines or back it up:

cswap --export backup.cswap                  # All accounts to a file
cswap --export backup.cswap --account 2      # One account
cswap --export backup.cswap --full           # Include full local ~/.claude.json (same-PC backup)
cswap --import backup.cswap                  # Skips accounts that already exist
cswap --import backup.cswap --force          # Overwrite existing

The export file is plaintext JSON. If you need encryption, pipe through your tool of choice (e.g. cswap --export - | gpg -c > backup.gpg).

Uninstall

Remove all data:

cswap --purge

Then uninstall the tool:

uv tool uninstall claude-swap
# or
pipx uninstall claude-swap

Requirements

  • Python 3.12+
  • Claude Code installed and logged in

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

claude_swap-0.10.0.tar.gz (86.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claude_swap-0.10.0-py3-none-any.whl (44.1 kB view details)

Uploaded Python 3

File details

Details for the file claude_swap-0.10.0.tar.gz.

File metadata

  • Download URL: claude_swap-0.10.0.tar.gz
  • Upload date:
  • Size: 86.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for claude_swap-0.10.0.tar.gz
Algorithm Hash digest
SHA256 2eef4584e7bf6ecd77fd94219f4556078db6254c95f15750daf9f42817c5f5f6
MD5 80ae0d3edb3e4c684b42ad6cedf0943b
BLAKE2b-256 18664ed2bc1c91185ea34f736f2134814da56f3c67aa64dd5c42a6c25ee258ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for claude_swap-0.10.0.tar.gz:

Publisher: publish.yml on realiti4/claude-swap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file claude_swap-0.10.0-py3-none-any.whl.

File metadata

  • Download URL: claude_swap-0.10.0-py3-none-any.whl
  • Upload date:
  • Size: 44.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for claude_swap-0.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 079312930edc9c8d535ac5f433d7fd2144b6a0cb72ffb16ac35c6c4f76a8086b
MD5 8548ac4beaf507281f0089cecd0e1c7b
BLAKE2b-256 3c12b4cf9dda0eb3c667615c97977e196658f6412d387907c963a276d8ae39eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for claude_swap-0.10.0-py3-none-any.whl:

Publisher: publish.yml on realiti4/claude-swap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page