# Claudex statusline

The statusline keeps Claude Code’s model, workspace, and context presentation, but its Codex row is sourced only from the OpenAI Codex account selected at session start.

## Displayed

- Claude Code’s reported model and configured effort level.
- Workspace and Claude Code context usage.
- Unique user-prompt count from the main session transcript.
- Last assistant activity and elapsed session span.
- Pinned Codex account slug.
- 5-hour and 7-day **used** percentages.
- Each window’s provider-supplied reset time.
- `loading`, `stale`, and `unavailable` provider states.

The session account does not change if the Systray default changes while Claude is running. New sessions use the new default. Resuming a session re-pins it to the account the resumed process actually runs on, so `/resume` under a different account shows that account, not the one the conversation started on.

## Not available

The Codex app-server interface does not provide remaining request or token counts, quota ceilings, per-model limits, authoritative plan/credit/spend data, or actual GPT request cost. Account identity and plan in local credentials are not displayed because they are local JWT claims and can be stale.

Claude `rate_limits`, the previous Claude quota cache, Claude-oriented cost calculation, GPT token totals, and per-model token/cache breakdowns are not used.

## Activation and rollback

`install.install()` creates `~/.local/bin/statusline.py`. The global Claude settings run it for `statusLine` and `SessionStart`. Start a new `claudex` session to create the account pin and refresh its usage cache.

To restore the prior implementation, replace the global `statusLine.command` with `bash ~/.claude/statusline-command.sh` and remove the `statusline.py session-start` SessionStart hook.
