sideby is a local CLI. It starts the official Host binary on your PATH (Claude Code, Codex, Grok Build, or pi) with one config directory per account. It does not patch those binaries, and it does not call a model.
Nothing sideby ships sends credential values off the machine. Built-in quota and usage readers make no network requests and do not call private quota endpoints (ADR-0003). They read local files, and for Claude Code the status-line payload the Host already hands to a local command.
- sideby does not read a subscription token to call a model, pool logins, or rotate accounts.
sideby listand the panel show identity fields only: email, and for Claude Code the organization name. Codex'sid_tokenis base64url-decoded only so theemailclaim can be shown. The token and every other claim are dropped and are never stored, logged, or returned.- Values from
proxy.env,auth.json, and.claude.jsonare never printed. Errors name the path or the variable, and for a parse error the line number only. The one setting shown as a Claude API account's model isANTHROPIC_MODEL. - Doctor checks those credential files for type and mode 600. The only content it reads is the single key a
json-keyshared item names (Claude'smcpServers). sideby nextranks accounts from quota data already on disk and starts the pick the same waysideby rundoes. It does not copy sessions or credentials between accounts.launchdoes not change the parent shell and clears each family's hijack variables for every account.
A plugin is local code with the user's full permissions. sideby does not sandbox plugins. Docs and sideby plugins say so.
Only the version currently tagged latest on npm is supported. Older releases, including anything before the current latest, are not patched in place. Upgrade with npm i -g sideby.
Report privately through GitHub private vulnerability reporting (Security Advisories). Do not open a public issue or discussion, and do not include token values, proxy.env, auth.json, or .claude.json.