Skip to content

Accounts

Roy Padina edited this page Oct 6, 2026 · 1 revision

Accounts

Agents Monitor tracks any number of accounts of either provider. There are three kinds.

Local Claude Code accounts

Any CLAUDE_CONFIG_DIR already logged in to Claude Code on this Mac: ~/.claude by default, or ~/.claude-<name> for extra profiles.

  • Auto-discovery on first launch: checks ~/.claude, globs ~/.claude-*, and adds every directory with a matching keychain entry.
  • Add one manually: Settings → Accounts → Add Claude Account… (folder picker).
  • Naming: from oauthAccount.emailAddress (or organizationName) in that profile's .claude.json, else the directory name. Rename from Settings or the popover.
  • Tokens are read fresh from the keychain on every poll and never refreshed. See How it works.

Codex accounts

Any CODEX_HOME signed in to Codex with a ChatGPT account: ~/.codex by default, or ~/.codex-<name>.

  • Auto-discovery: every ~/.codex* directory with an auth.json holding a readable ChatGPT token becomes an account.
  • Add one manually: Settings → Accounts → Add Codex Account… (folder picker).
  • A login holding only an API key (auth_mode: apikey) is skipped: there is no plan usage behind it.
  • Naming: the signed-in address from the stored id_token, else the directory name.
  • Credentials come from the auth.json file, not the keychain. Never refreshed by the app.
  • Shown: Session and Week, plus the code-review cap if your plan reports one. No spend row, because the Codex payload reports a remaining credit balance rather than an amount spent.
  • Codex sends no severity per window, so green/orange/red is applied locally at the same cutoffs Anthropic returns.

Remote accounts (Claude only)

An account that is not logged in on this Mac, for example on another machine or a CI box. Agents Monitor owns the credentials and refreshes the token itself.

  1. On the source machine, get the credentials JSON:
    # macOS
    security find-generic-password -s "Claude Code-credentials" -w
    # Linux
    cat ~/.claude/.credentials.json
  2. Settings → Accounts → Add Remote Account…, paste the whole JSON, Save. It is checked for claudeAiOauth.accessToken before storing.

Storage is an app-owned keychain item (AgentsMonitor-account-<uuid>), device-only, no iCloud sync. The pasted text is never written to UserDefaults and never logged.

Rotation race: if Claude Code on the source machine also refreshes that same login, one side's refresh token goes stale. The card then shows Credentials expired with a Paste credentials… button: paste a fresh copy. Remote accounts work best for machines you are not actively using.

Per-account settings

In Settings → Accounts: rename, Desktop and ntfy toggles, an optional ntfy topic override, a Menu bar checkbox, and remove. See Alerts.

Clone this wiki locally