Usage tracking
What it is
- Pulls provider usage/quota directly from their usage endpoints.
- No estimated costs; only the provider-reported windows.
- Human-readable status output is normalized to
X% left, even when an upstream API reports consumed quota, remaining quota, or only raw counts. - Session-level
/statusandsession_statuscan fall back to the latest transcript usage entry when the live session snapshot is sparse. That fallback fills missing token/cache counters, can recover the active runtime model label, and prefers the larger prompt-oriented total when session metadata is missing or smaller. Existing nonzero live values still win.
Where it shows up
/statusin chats: emoji‑rich status card with session tokens + estimated cost (API key only). Provider usage shows for the current model provider when available as a normalizedX% leftwindow./usage off|tokens|fullin chats: per-response usage footer (OAuth shows tokens only)./usage costin chats: local cost summary aggregated from OpenClaw session logs.- CLI:
openclaw status --usageprints a full per-provider breakdown. - CLI:
openclaw channels listprints the same usage snapshot alongside provider config (use--no-usageto skip). - macOS menu bar: “Usage” section under Context (only if available).
Providers + credentials
- Anthropic (Claude): OAuth tokens in auth profiles.
- GitHub Copilot: OAuth tokens in auth profiles.
- Gemini CLI: OAuth tokens in auth profiles.
- JSON usage falls back to
stats;stats.cachedis normalized intocacheRead.
- JSON usage falls back to
- OpenAI Codex: OAuth tokens in auth profiles (accountId used when present).
- MiniMax: API key or MiniMax OAuth auth profile. OpenClaw treats
minimax,minimax-cn, andminimax-portalas the same MiniMax quota surface, prefers stored MiniMax OAuth when present, and otherwise falls back toMINIMAX_CODE_PLAN_KEY,MINIMAX_CODING_API_KEY, orMINIMAX_API_KEY. MiniMax’s rawusage_percent/usagePercentfields mean remaining quota, so OpenClaw inverts them before display; count-based fields win when present.- Coding-plan window labels come from provider hours/minutes fields when
present, then fall back to the
start_time/end_timespan. - If the coding-plan endpoint returns
model_remains, OpenClaw prefers the chat-model entry, derives the window label from timestamps when explicitwindow_hours/window_minutesfields are absent, and includes the model name in the plan label.
- Coding-plan window labels come from provider hours/minutes fields when
present, then fall back to the
- Xiaomi MiMo: API key via env/config/auth store (
XIAOMI_API_KEY). - z.ai: API key via env/config/auth store.