Am un cont Claude Code de la serviciu și unul personal, iar amândouă stau pe același MacBook. Claude Code ține o singură autentificare per folder de config, deci soluția e să dau fiecărui cont propriul folder, cu variabila de mediu CLAUDE_CONFIG_DIR. Apoi merg un pas mai departe și blochez comanda simplă claude, ca să nu pot porni niciodată o sesiune fără să spun pe ce cont rulează.
Pe scurt: două foldere de config plus două funcții de shell, iar
claudesimplu refuză să ruleze.
- Foldere separate: fiecare își ține autentificarea, setările și istoricul, iar ambele conturi rămân conectate în același timp.
- Comenzi cu nume:
claude-workșiclaude-personalsetează folderul și pornesc programul real.- Fără cont implicit: dacă scrii
claude, primești o eroare în loc să se aleagă un cont în locul tău.
De ce nu ajunge o singură autentificare
Poți să te deconectezi și să te reconectezi, dar e lent și ușor de uitat. Problema mai gravă e cea tăcută: deschizi un terminal, scrii claude și petreci o oră pe un proiect personal consumând cota de la serviciu, cu istoricul salvat lângă sesiunile de lucru.
Am vrut ca alegerea contului să facă parte din comanda pe care o scriu, de fiecare dată.
Dă fiecărui cont propriul folder de config
Claude Code își citește configurația din ~/.claude, implicit. Dacă îndrepți CLAUDE_CONFIG_DIR în altă parte, îl tratează ca pe o instalare complet separată: autentificare separată, settings.json separat, istoric de sesiuni separat.
Las contul de serviciu pe folderul implicit, ca să nu se mute nimic din ce era deja configurat acolo, și dau celui personal un folder nou:
CLAUDE_CONFIG_DIR="$HOME/.claude-personal" claude
Prima rulare pornește deconectată. Rulează /login, intră cu al doilea cont și de acum folderul îl ține minte. Folosește /status într-o sesiune ca să vezi pe ce cont ești.
Cum oprești rularea lui claude simplu?
Să scrii variabila de mediu de fiecare dată devine repede obositor, așa că am pus-o în funcții de shell. Trucul e să definești și o funcție numită claude, care nu face nimic altceva decât să se plângă. Se pune în ~/.zshrc:
# Block bare `claude`, force an explicit account
claude() {
echo "Use claude-work or claude-personal" >&2
return 1
}
claude-work() { CLAUDE_CONFIG_DIR="$HOME/.claude" command claude "$@"; }
claude-personal() { CLAUDE_CONFIG_DIR="$HOME/.claude-personal" command claude "$@"; }
Reîncarcă cu source ~/.zshrc și încearcă:
$ claude
Use claude-work or claude-personal
command claude e partea care face totul să meargă. Ignoră funcțiile și alias-urile din shell și rulează binarul real din PATH, așa că cele două funcții ajung la programul adevărat, iar blocajul prinde orice altceva. "$@" trece mai departe flag-urile, deci claude-personal --resume se comportă cum te aștepți.
Câteva lucruri pe care nu le acoperă:
- Doar shell-ul tău interactiv îl vede. Scripturile, cron-urile și extensiile din IDE apelează binarul direct și nu citesc
~/.zshrc, deci folosesc în continuare folderul implicit (aici, contul de serviciu). Pentru mine e comportamentul corect, pentru că nu se strică nimic automat. - Ieșire de urgență:
command claudeîn terminal rulează contul implicit fără să treacă prin blocaj. - Dacă folosești Bash: aceleași funcții merg neschimbate în
~/.bashrc.
Ce partajezi între conturi?
Folderul nou pornește gol. CLAUDE.md global, skill-urile tale, plugin-urile și setările rămân toate în ~/.claude.
Fac symlink pentru părțile care descriu cum lucrez, pentru că sunt la fel indiferent cine plătește tokenii:
ln -s ~/.claude/CLAUDE.md ~/.claude-personal/CLAUDE.md
ln -s ~/.claude/skills ~/.claude-personal/skills
Țin separat settings.json și plugin-urile. Un cont de serviciu are de obicei setup specific organizației, cum ar fi servere MCP, conectori și reguli de permisiuni, și nimic din asta nu are ce căuta în sesiunile personale.
Notă: un skill partajat prin symlink nu se poate baza pe faptul că alte skill-uri sunt instalate în ambele foldere. Dacă un skill citește altul, trimite-l direct la calea fișierului.
Dar aplicația desktop și web-ul?
Variabila de mediu ajută doar în terminal. Aplicația desktop se conectează la un singur cont odată. Pe web folosesc câte un profil Chrome pentru fiecare cont, ceea ce ține cookie-urile separate și îmi lasă ambele conturi deschise în ferestre diferite.
Împărțirea mea ajunge să fie: serviciul în aplicația desktop și cu claude-work, personalul în propriul profil Chrome și cu claude-personal. Același tipar merge pentru orice CLI care își citește calea de config dintr-o variabilă de mediu, așa că merită verificat data viitoare când dai de problema asta cu alt tool.