Operating system
macOS 26.6.2 (build 25G83), Apple Silicon
Orca version
1.4.196
Details
Short summary
After my ChatGPT subscription changed to a plan whose token reports chatgpt_plan_type: "prolite", the Codex segment disappeared entirely from the status bar. Anthropic segments still render fine. The cause is not auth: the plan now returns only one rate-limit window (weekly), and Orca's window classifier keeps only ~300 min (session) and ~10080 min (weekly), so session ends up null and nothing is shown — even though the weekly percentage is known and would be displayable.
What happened?
The shape of rate_limits changed at the exact moment the plan changed. From my own Codex session logs (~/.codex/sessions/2026/09/03/rollout-*.jsonl), same machine, same day:
| time |
primary |
secondary |
credits |
| 08:47 |
used_percent: 15.0, window_minutes: 300 |
used_percent: 28.0, window_minutes: 10080 |
absent |
| 09:52 |
used_percent: 66.0, window_minutes: 300 |
used_percent: 36.0, window_minutes: 10080 |
absent |
| 10:0x |
null |
null |
present |
| 11:00 onward |
used_percent: 4.0, window_minutes: 10080 |
null |
{has_credits: false, unlimited: false, balance: "0"} |
So on this plan the weekly window arrives as primary_window, secondary_window is null, and a credits block appears.
Matching that against the shipped bundle (Contents/Resources/app.asar), the classifier is exact-match on two durations:
function Poi(e){ let t=e.windowDurationMins;
return typeof t!=='number'||!Number.isFinite(t) ? null
: Math.abs(t-300)<=Moi ? 'session'
: Math.abs(t-10080)<=Moi ? 'weekly'
: null }
and the fetch path maps rate_limit.primary_window / rate_limit.secondary_window through it, then returns {session, weekly}. With only a weekly window present, session is null. The follow-up helper confirms session is expected to exist:
if (n?.signal?.aborted || e.session || !e.weekly) return e; // fallback only when session missing
Expected
If only one window is returned, still render what is known — the weekly meter — instead of hiding the Codex segment completely. Ideally also surface the new credits block (balance), since on credit-based plans that is the number that matters.
Actual
No Codex segment at all in the status bar. Screenshot shows only the Anthropic ones:
5% used 4h 25m · 29% used 6d 7h · 29% used Fable
Ruled out
- Not auth.
~/.codex/auth.json was refreshed the same day; the access token is valid for another 10 days and tokens.account_id is set. Voi() builds the Authorization / ChatGPT-Account-Id headers from exactly these fields.
- Not the Codex CLI. Orca queries
https://chatgpt.com/backend-api/wham/usage over HTTP itself, so a broken CLI cannot explain it. (Mine was in fact broken earlier that day — missing @openai/codex-darwin-arm64 — and reinstalling it changed nothing here, as expected.)
- Not a stale cache.
orca-codex-usage.json last scanned at 11:00:33 with lastScanError: null; that file tracks token counts, not rate limits.
Possibly related
#14489 reports the weekly Codex meter vanishing from the footer on 1.4.182. Same symptom, but that report attributes it to an app update; here the trigger is reproducibly the plan change, with the payload shape captured above. They may share a root cause.
Operating system
macOS 26.6.2 (build 25G83), Apple Silicon
Orca version
1.4.196
Details
Short summary
After my ChatGPT subscription changed to a plan whose token reports
chatgpt_plan_type: "prolite", the Codex segment disappeared entirely from the status bar. Anthropic segments still render fine. The cause is not auth: the plan now returns only one rate-limit window (weekly), and Orca's window classifier keeps only~300 min(session) and~10080 min(weekly), sosessionends upnulland nothing is shown — even though the weekly percentage is known and would be displayable.What happened?
The shape of
rate_limitschanged at the exact moment the plan changed. From my own Codex session logs (~/.codex/sessions/2026/09/03/rollout-*.jsonl), same machine, same day:used_percent: 15.0,window_minutes: 300used_percent: 28.0,window_minutes: 10080used_percent: 66.0,window_minutes: 300used_percent: 36.0,window_minutes: 10080nullnullused_percent: 4.0,window_minutes: 10080null{has_credits: false, unlimited: false, balance: "0"}So on this plan the weekly window arrives as
primary_window,secondary_windowisnull, and acreditsblock appears.Matching that against the shipped bundle (
Contents/Resources/app.asar), the classifier is exact-match on two durations:and the fetch path maps
rate_limit.primary_window/rate_limit.secondary_windowthrough it, then returns{session, weekly}. With only a weekly window present,sessionisnull. The follow-up helper confirmssessionis expected to exist:Expected
If only one window is returned, still render what is known — the weekly meter — instead of hiding the Codex segment completely. Ideally also surface the new
creditsblock (balance), since on credit-based plans that is the number that matters.Actual
No Codex segment at all in the status bar. Screenshot shows only the Anthropic ones:
5% used 4h 25m · 29% used 6d 7h · 29% used FableRuled out
~/.codex/auth.jsonwas refreshed the same day; the access token is valid for another 10 days andtokens.account_idis set.Voi()builds theAuthorization/ChatGPT-Account-Idheaders from exactly these fields.https://chatgpt.com/backend-api/wham/usageover HTTP itself, so a broken CLI cannot explain it. (Mine was in fact broken earlier that day — missing@openai/codex-darwin-arm64— and reinstalling it changed nothing here, as expected.)orca-codex-usage.jsonlast scanned at 11:00:33 withlastScanError: null; that file tracks token counts, not rate limits.Possibly related
#14489 reports the weekly Codex meter vanishing from the footer on 1.4.182. Same symptom, but that report attributes it to an app update; here the trigger is reproducibly the plan change, with the payload shape captured above. They may share a root cause.