Skip to content
Yoink

Usage

Every yoink command with worked examples: switch Claude Code accounts, save Codex logins, connect a provider to opencode, and script it all with --json.

Updated

On this page

yoink switches between Claude Code accounts, switches subscription logins for ChatGPT (Codex), Kimi Code, Gemini, and GitHub Copilot, and manages API-key providers across your coding harnesses (pi, omp, opencode, codex, Claude Code, Qwen Code, Kilo Code, Droid, Crush, Goose, Zed, Continue, and Claude Desktop). This page covers every command, the shorthand for switching, and a few common examples.

Commands

CommandAliasesWhat it does
yoinkOpen the interactive account menu.
yoink <name>Switch straight to a saved profile.
yoink addloginAdd a Claude account, a Codex, Kimi, Gemini, or Copilot login, or an API-key provider. Interactive by default; pass flags to add a provider from a script (see below).
yoink edit <name>Edit a profile (rename a Claude account; for a provider, change its harnesses, models, id, display name, API key, or endpoints).
yoink save <name>Snapshot the current live Claude login as a profile. Add --tool <tool> (codex, kimi, gemini, copilot) to snapshot that tool's login instead.
yoink use <name>switchSwitch to a saved profile. Claude accounts and providers switch Claude Code; a subscription profile switches only its own tool. Warns if the tool is running (from a script, refuses unless --force); no-ops if already active.
yoink connect <name>Connect a provider to harnesses (--to pi,opencode skips the picker).
yoink disconnect <name>Remove a provider from harnesses (--from codex, or every harness it is in).
yoink models <name>Choose which models a provider exposes, then re-sync its harnesses (--set a,b skips the picker).
yoink harnessesShow detected harnesses, their config paths, and their providers (--json for scripts).
yoink importImport providers already configured in your harnesses (--yes skips the prompt).
yoink status <name>Show each harness for a provider: installed, compatible, and connected (--json for scripts).
yoink presetsList the built-in provider presets (--json for scripts).
yoink probeDetect a provider's endpoints and models from --base-url <u> or --preset <p>, with the API key on stdin (--token-stdin, --json).
yoink listls, accountsList all saved profiles grouped by tool, marking the active one in each group (--json for scripts).
yoink currentwhoShow the active profile for Claude Code and each subscription tool (--tool <tool> for one, --json for scripts).
yoink rename <a> <b>Rename a profile (a provider is renamed in every harness too).
yoink remove <name>rmDelete a profile (a provider is disconnected from every harness first).
yoink version-v, --versionPrint the version.
yoink help-h, --helpPrint help.

Any unrecognized argument is treated as a profile name, so yoink work and yoink use work are identical.

Interactive or scripted

Adding a Claude account always needs an interactive terminal, because it runs the Claude sign-in. Everything provider-related also works without one:

CommandNon-interactive form
yoink addyoink add --external --name <id> (--preset <p> | --base-url <u> [--protocol <p,...>] | --endpoint <p>=<url>,...) --models <m,...> [--connect <h,...>] [--default <m>] [--allow-tracked] --token-stdin
yoink add (legacy Claude Code provider)yoink add --external --name <n> --provider <p> --base-url <u> --model <m> --token-stdin
yoink edit <name>yoink edit <name> [--name <n>] [--provider <p>] [--base-url <u>] [--model <m>] [--token-stdin]
yoink connect <name>yoink connect <name> --to <h,...> [--default <m>] [--allow-tracked]
yoink disconnect <name>yoink disconnect <name> [--from <h,...>]
yoink models <name>yoink models <name> --set <m,...>
yoink importyoink import --yes
yoink save (subscription)yoink save <name> --tool <tool>
yoink use (tool running)yoink use <name> --force
yoink listyoink list --json
yoink currentyoink current [--tool <tool>] --json
yoink status <name>yoink status <name> --json
yoink presetsyoink presets --json
yoink probeyoink probe (--base-url <u> | --preset <p>) --token-stdin --json

--token-stdin reads the API key from stdin, so it never lands in your shell history. --allow-tracked writes a key into a harness config even when git tracks that file (see Security). Harness ids are pi, omp, opencode, codex, claude-code, qwen, kilo, droid, crush, goose, zed, continue, and claude-desktop (goose, zed, and claude-desktop are experimental). Every flag is described in Providers and Harnesses.

Examples

yoink add
 
yoink list
 
yoink work
 
yoink use personal
 
yoink current
 
yoink save temp
 
yoink rename temp scratch
 
yoink remove scratch

Subscription logins in other tools:

yoink save codex-work --tool codex
 
yoink use codex-work
 
yoink use kimi-personal --force
 
yoink current --tool gemini
 
yoink list --json

Providers across harnesses:

echo "$FUSE_API_KEY" | yoink add --external --name fuse --provider Fuse \
  --base-url https://api.fuse.example/v1 --models claude-sonnet-4-5,gpt-5.2 \
  --connect pi,opencode --default claude-sonnet-4-5 --token-stdin
 
yoink presets
 
echo "$FUSE_API_KEY" | yoink probe --base-url https://api.fuse.example/v1 --token-stdin --json
 
yoink harnesses
 
yoink status fuse
 
yoink connect fuse --to omp
 
yoink models fuse --set claude-sonnet-4-5,gpt-5.2,kimi-k2
 
yoink disconnect fuse --from opencode
 
yoink import
  • Interactive menu: keymap and behavior of the yoink account menu.
  • Providers: presets, custom providers, model selection, and Claude Code scope.
  • Harnesses: what yoink writes into each of the 13 supported harnesses.
  • Subscriptions: switching ChatGPT (Codex), Kimi Code, Gemini, and GitHub Copilot logins.