GPT-5.3-Codex-Spark weekly limit stays at 100% after successful usage
Summary
The GPT-5.3-Codex-Spark weekly usage meter shown by /status remains at 100% after successful GPT-5.3-Codex-Spark usage. This makes the Spark-specific weekly quota appear frozen and prevents users from knowing their actual remaining capacity.
Environment
- Product: official Codex CLI/TUI
- Authentication: ChatGPT account
- Model:
gpt-5.3-codex-spark - Affected Codex version: not yet captured from the affected machine
- Affected OS: not yet captured from the affected machine
- Reporter-side comparison environment: Codex CLI
0.144.4, macOS 26.3 arm64 - Observed: 2026-07-15
Repository Decision
- Target repository:
openai/codex - Why: the symptom is on the built-in model-specific rate-limit snapshot and
/statussurface, with no LazyCodex-specific integration required. - Upstream source path:
codex-rs/app-server/src/request_processors/account_processor.rsfetches backend snapshots and indexes them bylimit_id;codex-rs/tui/src/app/background_requests.rsrefreshes them;codex-rs/tui/src/app_server_session.rsforwards additional model-specific snapshots to the TUI. - LazyCodex source review found no separate Spark quota/accounting implementation that would own this symptom.
Reproduction
- Sign in to the official Codex CLI with a ChatGPT account.
- Select
gpt-5.3-codex-spark. - Run
/statusand record the GPT-5.3-Codex-Spark weekly limit. It reports 100% left. - Complete multiple successful turns using
gpt-5.3-codex-spark. - Run
/statusagain, including after starting a fresh session or forcing the normal status refresh. - Observe that the GPT-5.3-Codex-Spark weekly limit still reports 100% left.
Expected Behavior
Successful Spark usage should decrement the Spark-specific weekly remaining percentage, and /status should show the refreshed value within the documented accounting delay. If Spark usage is intentionally not charged, the UI should not present a consumable weekly meter.
Actual Behavior
The model is actively usable and successful turns complete, but the GPT-5.3-Codex-Spark weekly limit remains fixed at 100% in /status.
Evidence and Scope
- User-observed runtime evidence: Spark turns complete while the Spark weekly meter remains unchanged at 100%.
- Local source inspection shows the TUI displays model-specific snapshots received from the account rate-limit response; it does not independently calculate token-to-percent depletion.
- Current evidence does not establish whether the backend fails to debit
codex_bengalfox, returns a stale snapshot, or the client fails to refresh/replace that snapshot. - Three distinguishing hypotheses:
- Backend accounting does not increment the Spark weekly bucket.
- Backend accounting increments it, but
account/rateLimits/readreturns a stale Spark snapshot. - A fresh snapshot is returned, but the TUI retains or renders an older value.
- Maintainer-side decisive check: compare the Spark
limit_id, weeklyused_percent, and reset timestamp in the turn's rate-limit event with a freshaccount/rateLimits/readresponse before and after one successful Spark turn.
Related but not duplicate:
- #23150 reports Spark usage draining regular Codex limits.
- #32053 reports Spark continuation being blocked despite remaining Spark quota.
- #17764 reports generally stuck quota through OpenCode rather than this official Spark-specific path.
- #30970 reports inference blocked while status shows quota available.
Root Cause
Not confirmed because the affected machine's raw rate-limit events and backend response are not available here. The source boundary narrows the fault to Spark bucket accounting, snapshot freshness, or client snapshot replacement; it does not support choosing one without before/after runtime payloads.
Proposed Fix
- Add server-side telemetry or an account-safe diagnostic that correlates a successful Spark request with the
codex_bengalfoxweekly bucket update. - Ensure
account/rateLimits/readreturns the updated model-specific snapshot immediately after acknowledged usage, subject to a documented delay. - In the TUI, add a regression test that replaces an existing Spark snapshot with a lower remaining percentage after refresh and verifies
/statusrenders the new value. - If quota updates are asynchronous, show the last-updated time or a stale/pending indicator instead of silently displaying 100%.
Verification Plan
- Capture
/statusand raw rate-limit snapshots immediately before a Spark turn. - Complete one successful Spark turn and confirm non-zero usage.
- Refresh rate limits and verify the Spark weekly
used_percentincreases and displayed remaining percentage decreases. - Repeat in a fresh session to exclude in-memory caching.
- Confirm regular Codex and Spark buckets remain correctly separated.
3 Comments
I've observed the same happening, the bug started after the last wide usage reset.
same to me.
<img width="1259" height="432" alt="Image" src="https://github.com/user-attachments/assets/1f96784e-afa3-4b1c-a469-6fe304ce6875" />
<img width="1243" height="515" alt="Image" src="https://github.com/user-attachments/assets/0a31ffe6-62d7-4991-85e2-865cc3a08d5b" />
Additional affected-machine evidence, captured 2026-08-01 UTC:
Environment
0.146.0-alpha.9.20.147.0-alpha.4auth_mode=chatgpt;codex login statusreportsLogged in using ChatGPTOPENAI_API_KEY, customOPENAI_BASE_URL, Azure OpenAI route, or saved API key was activegpt-5.3-codex-sparkand marks itsupported_in_api: falseSuccessful-turn evidence
Four
codex exec --model gpt-5.3-codex-spark --jsonturns completed successfully with no reported errors: one direct turn and three simultaneous read-only turns.Aggregate reported usage across those four turns:
121,998103,9363,975Fresh account snapshot
After those successful turns, a direct
account/rateLimits/readcall returned:codex:76% used, 10,080-minute window, reset epoch1785904313codex_bengalfox/ GPT-5.3-Codex-Spark:0% used, 10,080-minute window, reset epoch1786150087The same values were independently returned through both the embedded
0.146.0-alpha.9.2app-server and isolated0.147.0-alpha.4. The Codex Analytics page correspondingly showed regular weekly usage at24% remainingand Spark at100% remaining.I cannot causally attribute movement in the regular
codexbucket to these Spark-requested turns because other Codex activity also used the account. I also cannot prove exact returned-model identity from the CLI JSONL: it proves the requested/selected slug, not backend-returned model provenance.Maintainer-side distinguishing check requested
Could maintainers confirm for these subscription-authenticated requests whether:
gpt-5.3-codex-spark;codex_bengalfox;codexbucket, or not recorded;account/rateLimits/readis returning a stale Spark snapshot?This reproduces with the latest alpha's app-server too, so updating the local client alone did not change the account snapshot.