Skip to content

Session pinned to wrong rate_limits bucket (codex_bengalfox) while concurrent sessions on the same account receive the correct codex bucket #43136

Open

Description

@rm0nroe

What version of the Codex App are you using (From “About Codex” dialog)?

0.153.3

What subscription do you have?

ChatGPT Pro

What platform is your computer?

Darwin 25.6.0 arm64 arm (macOS 26.6.2)

What issue are you seeing?

During a multi-agent gpt-6-astra run, four threads began receiving rate_limits for a bucket the account was not consuming -- limit_id: "codex_bengalfox", limit_name: "GPT-5.3-Codex-Spark" -- instead of the codex bucket their requests were actually metered against.

That substitute bucket reported used_percent: 0.0 on both windows for the final 1,549 responses of the run, because it was not the bucket being drained.

This was not an account-wide outage. During the same minutes, other sessions on the same account received correct codex readings climbing 54% -> 100%. Only the threads in this run were misrouted.

Same account, same minute, two different answers

The codex bucket was last served to any of the four affected threads at 21:07:04.974Z, reading 51%. It never appeared in those threads again.

21:07:04.974Z  thread=root(11-42-15)   limit_id=codex            primary={used_percent:51.0, window_minutes:10080}   <-- LAST correct reading to this run
21:07:13.140Z  thread=root(11-42-15)   limit_id=codex_bengalfox  primary={used_percent:0.0, window_minutes:300}
                                                                 secondary={used_percent:0.0, window_minutes:10080}
21:13:41.131Z  thread=17-13-28         limit_id=codex            primary={used_percent:54.0, window_minutes:10080}   <-- correct, different session
21:14:01.229Z  thread=17-13-28         limit_id=codex            primary={used_percent:55.0, window_minutes:10080}
23:07:39.110Z  thread=19-04-51         limit_id=codex            primary={used_percent:100.0, window_minutes:10080}  <-- correct, different session
23:08:37.677Z  thread=phase3(11-42-58) limit_id=codex_bengalfox  primary={used_percent:0.0, window_minutes:300}
                                                                 secondary={used_percent:0.0, window_minutes:10080}

143 correct codex weekly readings were issued to this account after 21:07:05Z. None went to the four threads in this run, which were still actively issuing requests throughout (1,023 requests in the 21:00Z hour alone).

Onset: both buckets interleaved for ~17 minutes

20:49:53.982Z  limit_id=codex             primary={used_percent:40.0, window_minutes:10080, resets_at:1789225024}  secondary=null
20:49:54.448Z  limit_id=codex_bengalfox   limit_name="GPT-5.3-Codex-Spark"
                                          primary={used_percent:0.0,  window_minutes:300,   resets_at:1788659369}
                                          secondary={used_percent:0.0, window_minutes:10080, resets_at:1789246169}
20:49:54.692Z  limit_id=codex             primary={used_percent:41.0, window_minutes:10080, resets_at:1789225024}  secondary=null

Two further signals that codex_bengalfox is not a live bucket for this account:

  1. used_percent is 0.0 on all 1,628 of its occurrences -- max primary 0, max secondary 0, across the entire run.
  2. Its resets_at advances on every response (1788659369 -> 1788660400 -> 1788660405 -> 1788667665), a window that never anchors and cannot accumulate. The real codex bucket held a stable resets_at of 1789225024 throughout.

Counts

Responses to the 4 affected threads with limit_id: codex 1,051 -- first 15:42:26Z, last 21:07:04Z, max 51%
Responses to the 4 affected threads with limit_id: codex_bengalfox 1,628 -- first 20:49:54Z, last 23:08:37Z, max 0%
Responses to the 4 affected threads after 21:07:13Z 1,549
-- of those reporting nonzero usage on any window 0
Correct codex readings to other sessions after 21:07:05Z 143 (54% -> 100%)

Impact

A banked reset was redeemed on this account at ~14:57Z that morning, opening a fresh weekly window. It was fully consumed by 23:13Z -- 7h 31m later -- with the affected threads reporting 0% for the final two hours and surfacing no warning banner at any threshold.

You have hit your usage limit. Visit https://chatgpt.com/codex/settings/usage
to purchase more credits or try again at Sep 12th, 2026 10:57 AM.

What steps can reproduce the bug?

Not deterministically reproduced. Observed conditions:

  1. Codex Desktop 0.153.3, plan pro, model gpt-6-astra (effort medium, summary auto).
  2. Start a root thread and spawn 3 subagents (multi_agent_version: v2; agent_path values /root/phase3_next_step, /root/camera_review, /root/platform_acceptance). All 4 threads share one cwd.
  3. Run continuously for several hours (this run: 2026-09-05T15:42:19Z -> 23:13Z, 2,683 model requests).
  4. Concurrently, run one or more separate unrelated Codex sessions on the same account.
  5. Inspect rate_limits in the token_count payloads of each session rollout at ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl.

Onset was mid-run at 20:49:54Z, with ~17 minutes of both buckets interleaved before codex disappeared from these threads entirely at 21:07:04.974Z. The separate sessions started later (17:13 and 19:04 local) continued to receive correct codex readings throughout.

The fact that sibling sessions were unaffected suggests a routing or session-affinity problem rather than an account-level state transition.

What is the expected behavior?

rate_limits should describe the bucket the request is actually metered against, consistently, for every session on an account.

Specifically:

  • A session must not be pinned to a limit_id other than the one its requests are drawing down.
  • A session must not silently switch which limit_id it reports mid-run.
  • A bucket reading 0% must not suppress low-usage warnings for the bucket actually being consumed.

Actual behavior: four threads reported 0% on both windows for their final 1,549 responses while the account ran from 51% to exhaustion, with no warning at any threshold, while sibling sessions on the same account concurrently received accurate readings.

Additional information

Ruling out workload and client-side causes

  • Not a background/idle request loop. The run had 286 of 451 wall-clock minutes with zero requests, including one contiguous 251.6-minute gap (16:07:59Z -> 20:19:35Z) during which the client issued nothing. All 2,683 requests are attributable to active agent turns.
  • Not a changed workload profile. Cache hit ratio for this weekly window was 97.7%, statistically identical to the account's three prior weekly windows (97.0%, 97.3%, 97.5%).
  • Not client version skew. All four affected threads and the correctly-served concurrent sessions ran the same binary (0.153.3) on the same machine under the same auth session.

Other notes

A third limit_id value, premium, was also observed on this account the same day. Not investigated here.

Raw rollout files are not attached -- they contain source-tree paths and workspace content. Full sanitized token_count / rate_limits line sets for all 2,683 responses, plus the correctly-served concurrent sessions, can be provided through a private or support-safe channel on request.

Activity

  1. added
    appIssues related to the Codex desktop app
    on Sep 6, 2026
  2. added
    bugSomething isn't working
    rate-limitsIssues related to rate limits, quotas, and token usage reporting
    on Sep 6, 2026
  3. rm0nroe commented on Sep 6, 2026

    @rm0nroe
    Author

    Adding request IDs, per OpenAI support, who confirmed this repo is the right channel and asked for client version, timestamps with timezone, and the resp_... IDs showing the alternating limit_id.

    Client: Codex Desktop 0.153.3, macOS 26.6.2 (Apple Silicon), model gpt-6-astra, effort medium. All timestamps below are UTC; local timezone was America/New_York (UTC-4).

    Onset - 2026-09-05T20:49:5x Z

    20:49:53.982Z  resp_0c3854e118730bd1016a9c8045490c87d182cea5eb654c3306  limit_id=codex            used_percent=40.0  window_minutes=10080
    20:49:54.448Z  resp_0c1dffb24bf14141016a9c805a226c87d1adbd54b4e3a4e9b9  limit_id=codex_bengalfox  used_percent=0.0   window_minutes=300
    20:49:54.692Z  resp_0496db9326d90372016a9c806d3f3087d19b58c3e534009f6f  limit_id=codex            used_percent=41.0  window_minutes=10080
    

    Both buckets served alternately inside a 9-second window - 21:13:4x Z

    This is the clearest sample. Same account, same nine seconds, alternating between the correct and incorrect bucket depending on which session the response went to:

    21:13:41.131Z  resp_034a0b08a949a915016a9c85ff238487d1904f9d3632259803  limit_id=codex            used_percent=54.0  window_minutes=10080  [unaffected session]
    21:13:46.870Z  resp_048d54a8bc725eca016a9c8603c10887d181cc056b3561b294  limit_id=codex_bengalfox  used_percent=0.0   window_minutes=300    [affected session]
    21:13:47.523Z  resp_034a0b08a949a915016a9c8605957487d18a097c479ffd9b52  limit_id=codex            used_percent=54.0  window_minutes=10080  [unaffected session]
    21:13:48.383Z  resp_0c1dffb24bf14141016a9c85dd0eac87d1afcc0714f67a2549  limit_id=codex_bengalfox  used_percent=0.0   window_minutes=300    [affected session]
    21:13:49.620Z  resp_034a0b08a949a915016a9c860bdef887d1ac2b025fabbe04cf  limit_id=codex            used_percent=54.0  window_minutes=10080  [unaffected session]
    

    Last correct reading to an affected thread

    21:07:04.974Z  resp_0c3854e118730bd1016a9c847614c887d1831054824ba87731  limit_id=codex  used_percent=51.0  window_minutes=10080
    

    After this, the affected threads received only codex_bengalfox at used_percent: 0.0 for 1,549 consecutive responses, while the real codex weekly bucket went from 54% to 100% consumed as observed from the unaffected sessions.

    Note on codex_bengalfox

    OpenAI support confirmed this is a real, separate GPT-5.3-Codex-Spark entitlement on the account, currently unused. That is consistent with the report: it is a genuine bucket, it simply was not the bucket these sessions were drawing down. The sessions were running gpt-6-astra against the codex weekly allowance.

    Its resets_at also advanced on every response (1788659369 -> 1788660400 -> 1788660405 -> 1788667665), so the window never anchored and could not accumulate.

    Full sanitized token_count / rate_limits lines for all 2,683 responses are available on request.

  4. dterenyi commented on Sep 7, 2026

    @dterenyi

    I’m seeing the same problem on Codex Desktop 26.901.51231 with codex-core 0.153.4.

    I had a long gpt-6-astra chat set to Medium. It was showing the normal Codex weekly meter at 7%, then at 10:23:10 PM CDT on September 6 it suddenly switched to codex_bengalfox and showed “GPT-5.3-Codex-Spark” at 31%. I never switched that chat to Spark. The actual Codex weekly meter later showed 9%.

    So the chat was still using Astra, but its meter had jumped to a completely different model’s bucket and was no longer telling me what the chat was consuming. This happened in a root chat with three subagents on the same account.

    I also checked whether the subagents could explain it. All three of their rollout records say gpt-6-astra, effort medium, and every one of their meter records uses the normal codex bucket. None used or reported codex_bengalfox. The parent started receiving the Spark bucket 26 seconds after the last subagent response, then received it for 34 consecutive meter updates while the parent still recorded Astra Medium. So this was not legitimate Spark subagent usage.

    I can share the sanitized response IDs and rollout lines if that would help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingrate-limitsIssues related to rate limits, quotas, and token usage reporting

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions