Repository navigation
Accounts
Agents Monitor tracks any number of accounts of either provider. There are three kinds.
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(ororganizationName) 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.
Any CODEX_HOME signed in to Codex with a ChatGPT account: ~/.codex by default, or ~/.codex-<name>.
-
Auto-discovery: every
~/.codex*directory with anauth.jsonholding 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.jsonfile, 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.
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.
- On the source machine, get the credentials JSON:
# macOS security find-generic-password -s "Claude Code-credentials" -w # Linux cat ~/.claude/.credentials.json
- Settings → Accounts → Add Remote Account…, paste the whole JSON, Save. It is checked for
claudeAiOauth.accessTokenbefore 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.
In Settings → Accounts: rename, Desktop and ntfy toggles, an optional ntfy topic override, a Menu bar checkbox, and remove. See Alerts.
Agents Monitor · MIT © Roy Padina · More Mac apps · Support on Ko-fi ☕