refresh-claude-accountlisted
Install: claude install-skill soulmachine/skills
# Repair a dead Claude account (OAuth)
Restores an account to a **full OAuth login** — `accessToken` + `refreshToken` + `expiresAt` +
the complete scope set — and produces a `claude-accounts.json` that
the `sync-claude-accounts` skill distributes to the rest of the fleet.
OAuth is the only credential that works end to end here. It is the only one that can report
usage (`/api/oauth/usage` needs `user:profile`), and usage is what drives rotation at all —
`cswap auto` is purely usage-polling. cux, which is what the fleet actually rotates with
(it is the only layer that can continue an unattended session through a rate limit), is built
around the `/login` credential bundle and cannot hold anything else. So a repair that does not
end in a full OAuth bundle leaves the account unrotatable. See "Why not setup-tokens" at the
bottom.
## Pick the cheap path first
| | Path A — re-seed | Path B — re-authenticate |
|---|---|---|
| **Use when** | Any machine still holds a live copy of this account | The account is dead everywhere |
| **Needs a browser** | No | Yes, and the user must drive it |
| **Interrupts sessions** | No | Yes — rewrites the machine-global login |
| **Effort** | Two commands | Interactive OAuth round trip |
Always check Path A first. On a fleet, an account that died on one machine is very often
still alive on another — the refresh-token race has a *winner*, not just losers, and the
winner's credential is a perfectly good seed.
## Why the refresh token died
`cswap