From agentops
Switches coding-agent accounts on rate limits or for swarm lane distribution. Routes by host+agent: macOS+Claude via claude-acct; Codex/Gemini and Linux/WSL via caam.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agentops:account-rotationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!-- TOC: Quick Start | Why the Route Exists | claude-acct (Mac+Claude) | caam (everything else) | Capture Discipline | Live-Session Caveat | Swarm Lanes -->
The moment: you hit a usage limit on a Claude Max / Codex Pro / Gemini subscription and want to keep working on a fresh account, or you're spreading swarm lanes across accounts for parallel quota. The tool depends on the host — because the credential layer differs by OS+agent. This skill routes; the tools do the swap.
macOS + Claude → claude-acct (Keychain layer)
macOS + Codex/Gemini → caam (file layer)
Linux / WSL + anything → caam (file layer)
caam swaps the auth file (~/.claude/.credentials.json, codex/gemini auth
files). Correct for file-based auth — Codex, Gemini, and Claude-on-Linux. But
current Claude Code on macOS stores its token in the login Keychain (security
service Claude Code-credentials) and ignores that file. So caam activate/next
for Claude on Mac are no-ops — they swap a file Claude doesn't read. That one
exception is the whole reason this router exists.
claude-acct (Keychain swap)A full Claude account on Mac = two pieces, both swapped together: the Keychain
token + the ~/.claude.json .oauthAccount identity block (claude auth status reads the email from the latter; a token-only swap leaves the identity
pinned to the last login → "only the current account works"). claude-acct swaps
both via security add/delete-generic-password -A (-A = no GUI prompt, so
headless workers don't stall) + a JSON splice of .oauthAccount.
claude-acct list # captured accounts → real email each maps to
claude-acct current # which account a NEW claude starts on
claude-acct use <name> # swap (token + identity)
claude-acct login <name> [email] # one-time capture (see Capture Discipline)
Tool: dotfiles/bin/claude-acct.
caam (file swap)caam is the adopted file-based rotator and is correct here. It self-documents (there is intentionally no caam skill — the CLI is the doc):
caam status <tool> # vault + health
caam next <tool> # rotate to next non-cooldown account
caam use <tool> <profile>
caam --help # full surface
On bushido (Ubuntu) this is the only rotator you need — file-based auth means caam's swap actually takes.
claude-acct warns on collision.)A running agent process holds its token in memory; rotation changes what a new process picks up, not the live session. To move the session you're in: rotate, then relaunch the CLI. Exactly right for spawning swarm lanes.
Parallel quota = put each lane on a different account before launching it:
# Mac (Claude)
claude-acct use acct-a && <spawn lane A>; claude-acct use acct-b && <spawn lane B>
# Linux / Codex
caam use codex acct-a && <spawn lane A>; caam next codex && <spawn lane B>
A dispatcher's limit-hit hook calls claude-acct use on Mac / caam next on
Linux, then re-dispatches the lane's work.
In the trilateral (2 Claude builders + 1 Codex Navi), the Navi runs on a
DIFFERENT runtime/account, so it is UNAFFECTED by a builder's Claude rate limit —
making it the right agent to rotate a limited builder. navi-rotate
(dotfiles/bin/navi-rotate) wraps claude-acct with rotation-order + peer-relaunch
signaling, so the move is one repeatable command:
navi-rotate <peer-tmux-session> [--to <account>] [--dry-run]
# Navi: next account (claude-acct list order) -> claude-acct use <next>
# -> am + atm signal the peer to relaunch.
Per the Live-Session Caveat: the swap lands on the peer's NEXT launch, not its
live session — continuity rides the durable substrate (worktree + bead + handoff),
so the peer resumes from its last bead on the fresh account. This is the repeatable,
cross-model-driven form of the dispatcher limit-hit hook above. Routed correctly:
the swap is always claude-acct for Mac+Claude (NEVER caam).
npx claudepluginhub boshu2/agentops --plugin agentopsDelegates tasks to Gemini CLI for bulk processing, second opinions, 1M-context file analysis, and quota fallback when Anthropic limits are hit. Supports multiple OAuth accounts with a credential switcher, context handoff via markdown brief, and automated recovery from Gemini quota exhaustion.
Guides Claude Code team setup including plans, enterprise policies, multi-user project conventions, shared configs, .gitignore rules, and collaborative workflows.
Rewires which AI CLI handles each role in cc-multi-cli-plugin, swaps CLIs, adds/disables subagents, and diagnoses CLI quirks via env vars and config files.