Codex quotas and reset times
Last updated: 8 September 2026 · Deutsch
What the ChatGPT/Codex card reads, why there are exactly two windows and not one per model, how the two kinds of credit differ, and where the reset time comes from.
Exactly two windows — no model split
The Codex quota state the app keeps has four parts: a five-hour window, a weekly window, the plan type, and a credit balance. That is the whole list. Unlike the Claude side, there is no field for model-scoped windows, because the interface offers none.
So if you are looking for a separate GPT-5 bar next to a Codex bar, or a model-specific sub-limit inside the weekly window: it does not exist here. Anything resembling one on this card would be a decoration, not a reading. The two windows are the quota.
Matched by length, never by position
The response labels its two windows “primary” and “secondary”, and those labels are not stable — the five-hour window is not reliably the first one. AI-Cockpit therefore ignores the order entirely and matches purely on the stated window length: 300 minutes is the five-hour window, 10,080 minutes is the weekly one. The same rule applies to both sources, the live fetch and the local log fallback, so both end up with identical windows.
This sounds like a detail and is not. Assigning by position is exactly the mistake that produces a card confidently showing a weekly figure as a five-hour one.
Live figures since version 6.5
Since 6.5 the Mac app fetches the numbers live from
https://chatgpt.com/backend-api/wham/usage, after a one-time sign-in
inside the app. There is no API key for this card. The sign-in is a device-code
flow, but — a warning for anyone rebuilding it — not RFC 8628: the
identifier is named differently, requests carry JSON rather than form data, “not
redeemed yet” arrives as an HTTP 403 or 404 instead of a pending status, and the
PKCE pair is generated by the server, not the client. The resulting token is stored
in the Keychain.
The live path needs no folder access
A common misreading: the ChatGPT card does not require the folder permission. The live path reads the Keychain and nothing else — no file, no directory, no permission dialog.
Only the fallback touches the disk. If there is no sign-in, or the fetch fails, the
app falls back to a locally installed Codex and reads its session logs from
~/.codex/sessions/. That is what the folder grant is for, and
it is read-only. Sign in inside the app and the question never comes up.
Two kinds of credit, deliberately kept apart
“Credit” means two different things on a ChatGPT account, and the app does not blend them:
- Money credit — an amount, and what has been spent of it since the start of the month.
- Reset credits — vouchers, given or bought, that reset a window early. These are not money; only their expiry date is of any use on a card.
Both are fetched at most once every five minutes. They are a side note, not the core quota: if either endpoint disappears or changes shape, that line quietly goes away and the two windows keep working.
The reset time
Each window carries its own reset timestamp as a Unix time, and the card shows it both ways: relative, so you can see how long you have to wait, and absolute, so you can plan around it. A relative figure alone is useless the moment you want to know whether it lands before or after a meeting.
The limits, plainly
- The credit endpoints are undocumented. OpenAI describes neither of them anywhere; they can change without notice. They were established by reading third-party source code and by calling them with a valid token. That is why they are treated as a bonus line rather than load-bearing.
- There is no spending limit to show. No endpoint supplies one. The field that looks like it is an enterprise feature for managed team accounts, and on a personal subscription it is always empty — a personal plan simply stops at a credit balance of zero. A figure there would be invented, so there is none.
- An unrecognisable response is an error, not an empty card. If a live answer contains no known window at all, that is a change of format, and the app says so. Otherwise you would go looking for the fault in your account instead of in the software.
On iPhone and iPad
The mobile app uses the same live path, with the same one-time sign-in. What it does not have is the fallback: there is no locally installed Codex on a phone, so there are no session logs to read. Without the sign-in, the card stays empty on purpose.
Shorter answers to the neighbouring questions — why a card shows nothing, where keys live, what the app costs — are on the FAQ page. How the sign-in token is stored and handled is covered on the Security page.