Skip to content

Switching accounts

Switch by name

cam switch personal

The switch is a transaction: the registry's active pointer, the credential files, and the .claude.json splice move together or roll back together. The splice preserves every unrelated key in .claude.json; only the account identity is replaced.

Disabled and quarantined accounts stay valid explicit targets: cam switch <name> is you telling cam exactly what you want, and the eligibility filter only gates automatic picks.

Let a strategy pick

Omit the name and a strategy chooses from cached usage:

cam switch --strategy best            # default
cam switch --strategy next-available
  • best lands only on an account with strictly more headroom than the current one. Ties stay put, and if the current account's usage can't be measured nothing is provably better, so cam stays (usage-unavailable).
  • next-available walks the registry past the current account and takes the first eligible candidate. A measured candidate at 0 headroom is skipped (at-limit); an unmeasured one is not.

Disabled, quarantined, and credential-less accounts are skipped by both strategies and reported in the skipped list. When nothing is eligible the outcome is no-valid-target, or candidates-exhausted if at least one account exists but everything measured is at the wall.

The same choice is available in the TUI: s lists every account with its bars; arrows pick, ++enter++ switches, ++b++ takes the best pick:

cam switch to which account? █work   ● active █5h     ━━━━━━━━━━━━━━━━━━━━━╸────────  73%  resets 20725d 8h · Oct 10 22:30 █7d     ━━━━━━━━━━━━──────────────────  41%  resets 20730d 10h · Oct 16 00:00 █Sonnet ━━━━━━━━━━━━━━━━━━━━━━━━━━────  88%  resets 20730d 10h  (ahead of pace) █personal █5h ━━━╸──────────────────────────  12%  resets 20725d 8h · Oct 10 22:30 █7d ━━────────────────────────────   8%  resets 20730d 10h · Oct 16 00:00 █backup █5h ━━━━━━━━━━━━━━━━━━━━━━━━━━━━──  94%  resets 20725d 8h · Oct 10 22:30 █7d ━━━━━━━━━━━━━━━━━━━━━━━━━━────  87%  resets 20730d 10h · Oct 16 00:00  (ahead of pace)  ⏎ Switch  b Best pick  esc/q/s Back  f1 Help  ^t Theme  p Emails ▏^space

Preview before committing

cam switch --dry-run

Reports the target, the skipped candidates, and what would be preserved, without touching a byte.

Keep an account out of rotation

cam disable personal   # still a valid explicit target
cam enable personal    # back in the pool

Unmanaged live logins

If the active claude login isn't one cam knows (signed in before cam existed, or into a different profile), cam status reports it as unmanaged. Strategy switches from an unmanaged login can't compare headroom, so best reports usage-unavailable; name the target explicitly, or register the live login as an account first.