Jak przełączać konta w Claude Code — claude-swap krok po kroku

Mam trzy subskrypcje Claude Pro. Firmową, agencyjną i jedną dla osoby z zespołu, która korzysta z Claude rzadko. Ta trzecia przydaje się podwójnie: albo jako osobne środowisko robocze, albo jako zapasowy pakiet kiedy dobijam do limitu na swoich kontach i mogę przeskoczyć na jej niewykorzystaną quotę.
Claude Code obsługuje jedno konto naraz. Żeby przełączyć się między nimi, trzeba wylogować się przez /logout, zalogować ponownie, przejść przez OAuth w przeglądarce, poczekać. Minutę, może dwie. Dwa razy dziennie. Trzy konta. Zaczyna boleć szybciej niż myślisz.
Postanowiłem to naprawić. W pośpiechu zacząłem budować własne rozwiązanie, funkcje w zsh, backup tokenów, swap przez Keychain. Godzina roboty. Zadowolony z efektu. Dopiero potem znalazłem claude-swap, narzędzie które robi to samo, istnieje od miesięcy i instaluje się w jednej komendzie.
Co to jest claude-swap?
claude-swap to narzędzie CLI do przełączania kont w Claude Code bez wylogowywania się. Instaluje się jedną komendą, obsługuje dowolną liczbę kont i pokazuje zużycie quoty każdego konta w czasie rzeczywistym. Działa na macOS, Linux i WSL. Repozytorium: github.com/realiti4/claude-swap.
Brak natywnego wsparcia wielu kont w Claude Code to znany problem. Na GitHubie Anthropica jest otwarty issue z setkami głosów z prośbą o wbudowane przełączanie. Dopóki Anthropic tego nie zaimplementuje, claude-swap jest najprostszym działającym rozwiązaniem.
Potrzebujesz pomocy z tym tematem?
Pomagam firmom wdrażać nowoczesne rozwiązania. Umów bezpłatną 30-minutową rozmowę.
Umów bezpłatną rozmowę →
Dlaczego podmiana pliku .claude.json nie wystarczy?
Zanim trafił_ś tutaj szukając rozwiązania, może próbował_ś tego co ja. Logika jest prosta: token gdzieś leży w pliku, podmieniasz plik, zmieniasz konto.
W ~/.claude/.claude.json rzeczywiście siedzą metadane konta: email, UUID użytkownika, UUID organizacji. Podmieniam. Sprawdzam:
python3 -c "import json; d=json.load(open('$HOME/.claude/.claude.json')); print(d['oauthAccount']['emailAddress'])"
# → [email protected]
Plik się zmienił. Konto nie.
Sam token OAuth, który autoryzuje każde zapytanie, trafia do macOS Keychain, nie do pliku. Można to zobaczyć:
security dump-keychain 2>/dev/null | grep -i "claude"
# → "Claude Code-credentials"
Żeby przełączyć konto, trzeba zmienić oba: plik i wpis w Keychain. To jest powód dla którego każde „proste” ręczne rozwiązanie szybko się komplikuje. claude-swap obsługuje oba za Ciebie.
Jak zainstalować claude-swap?
Wymagania: Python 3.12+, zainstalowany Claude Code.
Instalacja przez uv (rekomendowane):
uv tool install claude-swap
Lub przez pipx:
pipx install claude-swap
Sprawdź czy działa:
cswap --help
Jak dodać konta do claude-swap?
Dla każdego konta musisz być aktualnie zalogowany w Claude Code, a dopiero potem uruchomić cswap --add-account. Kolejność jest ważna.
# Konto pierwsze — zaloguj, potem zapisz
claude auth login --claudeai
cswap --add-account
# → Added Account 1: [email protected] [Twoja Organizacja]
# Konto drugie
claude auth logout
claude auth login --claudeai
cswap --add-account
# → Added Account 2: [email protected] [...]
# Konto trzecie
claude auth logout
claude auth login --claudeai
cswap --add-account
# → Added Account 3: [email protected] [Twoja Organizacja]
Powtarzasz dla każdego konta. Na końcu przełącz się z powrotem na to, którego używasz na co dzień:
cswap --switch-to 1
Jak przełączać konta i sprawdzać quotę?
cswap --list
# Accounts:
# 1: [email protected] (active)
# ├ 5h: 75% resets 15:30 in 4h 15m
# └ 7d: 9% resets Jul 6 03:00 in 6d 15h
# 2: [email protected]
# ├ 5h: 92% resets 15:10
# └ 7d: 39% resets Jul 4
# 3: [email protected]
# ├ 5h: 99% resets 13:20
# └ 7d: 33% resets Jun 30
cswap --switch-to 2
# Switched to [email protected]
cswap --status
# Active: [email protected]
Widać ile quoty zostało na każdym koncie i kiedy się resetuje. Przydatne kiedy jedno konto dobija do limitu i chcesz wiedzieć na które przeskoczyć bez zgadywania.
Jest też tryb automatyczny: cswap --switch --strategy best sam wybiera konto z najniższym zużyciem quoty.
Jak skonfigurować aliasy w zsh żeby przełączanie było wygodne?
Wpisywanie cswap --switch-to 2 kilka razy dziennie to niepotrzebne tarcie. Prostsza jest jedna funkcja w ~/.zshrc.
Ważna pułapka: nie nazywaj jej cc. Na macOS cc to alias do kompilatora C (clang). Przekonałem się o tym szybko:
❯ cc 3
clang: error: no such file or directory: '3'
clang: error: no input files
Zamiast tego ccs (Claude Code Switch):
# ~/.zshrc
ccs() {
case "$1" in
list) cswap --list ;;
who) cswap --status ;;
*) cswap --switch-to "$1" ;;
esac
}
Po dodaniu do .zshrc i source ~/.zshrc:
ccs list # lista kont z quotą
ccs who # aktywne konto
ccs 1 # przełącz na konto 1
ccs 2 # przełącz na konto 2
ccs 3 # przełącz na konto 3
Skala działa dla dowolnej liczby kont bez zmian w funkcji.
Czy po przełączeniu konta można wznowić poprzednią sesję?
Nie. To ograniczenie, o którym warto wiedzieć zanim się na nie natkniesz.
Po przełączeniu konta przez cswap nie możesz wznowić poprzedniej sesji Claude Code przez claude --resume. Sesje są przypisane do konta, nie do projektu. Jeśli zaraz po ccs 2 wpiszesz claude --resume, dostaniesz:
Not logged in · Please run /login
Prawidłowy flow po przełączeniu konta:
ccs 2 # przełącz konto
claude # nowa sesja od zera
--resume działa tylko w ramach tego samego konta. Historia sesji nie przenosi się między kontami. Jeśli pracujesz intensywnie nad jednym projektem na kilku kontach naprzemiennie, każde przełączenie oznacza świeży start konwersacji.
Jak do tego doszedłem — albo dlaczego warto zacząć od GitHuba
Zacząłem od naturalnego odruchu: opisałem problem Claude Code i zaczęliśmy budować własne rozwiązanie. Funkcje zsh, backup credentiali przez security, swap przez Keychain. Kilkanaście minut na zrozumienie architektury auth. Kolejne kilkanaście na pisanie, testowanie, iterowanie.
Po godzinie działało. Byłem zadowolony.
Wtedy padło pytanie: „Hej, a sprawdziłeś GitHuba zanim zaczęliśmy?”
Nie sprawdziliśmy.
Szybkie wyszukiwanie pokazało kilka gotowych narzędzi: claude-swap, cc-account-switcher, ClaudeCodeMultiAccounts. Napisanych przez ludzi z tym samym problemem, tygodnie lub miesiące wcześniej. Wyrzuciłem całą funkcję którą napisaliśmy. Zainstalowałem claude-swap w jednej komendzie.
Model sprawnie rozwiązuje to czego się go zapyta. Nie ma nawyku zatrzymywania się i pytania: czy ktoś to już rozwiązał? Ten nawyk musisz mieć sam.
Stąd reguła którą stosuję przy każdym problemie narzędziowym: zanim zaczniemy budować, pytam wprost. „Sprawdź najpierw czy to już istnieje.”
Czasem istnieje. Czasem nie. W obu przypadkach wiem z czego wychodzę.
FAQ
Czy claude-swap działa na Windows?
claude-swap działa na macOS, Linux i WSL (Windows Subsystem for Linux). Natywny Windows bez WSL nie jest oficjalnie wspierany. Sprawdź aktualny status w repozytorium projektu.
Czy przełączenie konta wpływa na działające sesje Claude Code?
Tak. Aktywna sesja Claude Code w terminalu może przestać odpowiadać po przełączeniu konta przez cswap. Bezpieczny flow: przełącz konto, otwórz nową sesję claude. Nie próbuj wznawiać starych sesji przez claude --resume po zmianie konta, to nie zadziała.
Czy claude-swap przechowuje hasła lub tokeny w sposób bezpieczny?
claude-swap używa systemowego menadżera haseł — macOS Keychain na Mac, libsecret na Linux. Tokeny nie są przechowywane w plikach tekstowych. To samo miejsce, którego używa Claude Code do przechowywania własnych credentiali. Możesz to zweryfikować:
security find-generic-password -s "Claude Code-credentials" 2>/dev/null | grep svce
Co zrobić kiedy cswap –add-account nie widzi zalogowanego konta?
Upewnij się że Claude Code jest zalogowany przed uruchomieniem cswap --add-account. Sprawdź status:
claude auth status
Jeśli pokazuje loggedIn: false, najpierw zaloguj się przez claude auth login --claudeai, przejdź przez OAuth w przeglądarce, poczekaj na potwierdzenie w terminalu. Dopiero potem cswap --add-account.
Łukasz Ślusarski — 29 czerwca 2026
Zostań w pętli
Nowe artykuły, narzędzia i case study — prosto na maila.