GPT-5.3-Codex-Spark weekly limit stays at 100% after successful usage

Open 💬 3 comments Opened Jul 15, 2026 by MongLong0214

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 /status surface, with no LazyCodex-specific integration required.
  • Upstream source path: codex-rs/app-server/src/request_processors/account_processor.rs fetches backend snapshots and indexes them by limit_id; codex-rs/tui/src/app/background_requests.rs refreshes them; codex-rs/tui/src/app_server_session.rs forwards additional model-specific snapshots to the TUI.
  • LazyCodex source review found no separate Spark quota/accounting implementation that would own this symptom.

Reproduction

  1. Sign in to the official Codex CLI with a ChatGPT account.
  2. Select gpt-5.3-codex-spark.
  3. Run /status and record the GPT-5.3-Codex-Spark weekly limit. It reports 100% left.
  4. Complete multiple successful turns using gpt-5.3-codex-spark.
  5. Run /status again, including after starting a fresh session or forcing the normal status refresh.
  6. 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:
  1. Backend accounting does not increment the Spark weekly bucket.
  2. Backend accounting increments it, but account/rateLimits/read returns a stale Spark snapshot.
  3. A fresh snapshot is returned, but the TUI retains or renders an older value.
  • Maintainer-side decisive check: compare the Spark limit_id, weekly used_percent, and reset timestamp in the turn's rate-limit event with a fresh account/rateLimits/read response 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

  1. Add server-side telemetry or an account-safe diagnostic that correlates a successful Spark request with the codex_bengalfox weekly bucket update.
  2. Ensure account/rateLimits/read returns the updated model-specific snapshot immediately after acknowledged usage, subject to a documented delay.
  3. In the TUI, add a regression test that replaces an existing Spark snapshot with a lower remaining percentage after refresh and verifies /status renders the new value.
  4. If quota updates are asynchronous, show the last-updated time or a stale/pending indicator instead of silently displaying 100%.

Verification Plan

  • Capture /status and 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_percent increases and displayed remaining percentage decreases.
  • Repeat in a fresh session to exclude in-memory caching.
  • Confirm regular Codex and Spark buckets remain correctly separated.

View original on GitHub ↗

3 Comments

luizwidmer · 1 month ago

I've observed the same happening, the bug started after the last wide usage reset.

MichaelLi423 · 1 month ago

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" />

tayloroclaw · 27 days ago

Additional affected-machine evidence, captured 2026-08-01 UTC:

Environment

  • macOS 26.4 arm64
  • ChatGPT desktop 26.727.51351 (build 6119)
  • Embedded Codex CLI: 0.146.0-alpha.9.2
  • Latest isolated alpha also checked: 0.147.0-alpha.4
  • Authentication: auth_mode=chatgpt; codex login status reports Logged in using ChatGPT
  • No OPENAI_API_KEY, custom OPENAI_BASE_URL, Azure OpenAI route, or saved API key was active
  • Installed model catalog lists gpt-5.3-codex-spark and marks it supported_in_api: false

Successful-turn evidence

Four codex exec --model gpt-5.3-codex-spark --json turns completed successfully with no reported errors: one direct turn and three simultaneous read-only turns.

Aggregate reported usage across those four turns:

  • input tokens: 121,998
  • cached input tokens: 103,936
  • output tokens: 3,975

Fresh account snapshot

After those successful turns, a direct account/rateLimits/read call returned:

  • codex: 76% used, 10,080-minute window, reset epoch 1785904313
  • codex_bengalfox / GPT-5.3-Codex-Spark: 0% used, 10,080-minute window, reset epoch 1786150087

The same values were independently returned through both the embedded 0.146.0-alpha.9.2 app-server and isolated 0.147.0-alpha.4. The Codex Analytics page correspondingly showed regular weekly usage at 24% remaining and Spark at 100% remaining.

I cannot causally attribute movement in the regular codex bucket 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:

  1. the backend actually served gpt-5.3-codex-spark;
  2. the active metered limit was codex_bengalfox;
  3. usage was below an integer-percentage rounding threshold, attributed to the regular codex bucket, or not recorded;
  4. account/rateLimits/read is 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.