Repository navigation
acpmux: a Codex chat's plan usage limits (5-hour, weekly, credits) are its usageLimits, as a Claude chat's - #34714
Conversation
…y a used-up window is a limit reached Red: Codex's account/rateLimits/updated (cmux-codex-acp's _meta.codexAppServer.rateLimits) never reaches the session's usageLimits, and the normalizer and usage_limit_reached do not exist yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
…aude chat's codex app-server's account/rateLimits/updated (passed on by cmux-codex-acp as _meta.codexAppServer.rateLimits) now becomes the session detail's usageLimits in the shape Claude's take: the 5-hour window as session, the week as weekly (with windowMins), plus plan and credits. Nothing reported is nothing, never a zero; another limit id than codex is not the plan's. Workflow activities read a limit as reached only when a window is used up (usage_limit_reached), not whenever limits were reported: every Claude Code chat reports them, which held its activities as waiting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Shipped in:
|
|
Focused tests at ac1db16 (run 41766866343): |
|
Found 5 test failures on Blacksmith runners: Failures
|
|
Review (codex, router-review): SHIP at ac1db16 Reviewer: codex gpt-6.1-sol xhigh, fast tier. Follow-ups: 2. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward. SHIP at ac1db16 Visual verdict: no images; Leo tries the build Static review completed. The Python fake-server scenario passed; Rust tests could not run because
Follow-ups:
|
…ed limits; a used-up window is reached only until it resets Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Review follow-ups (router-review SHIP at ac1db16), handled at bdeebf1:
The bdeebf1 diff adds no new behaviour beyond these two review items. |
|
Focused tests at bdeebf1 (run 41772081422): |
|
Review (codex, router-review): SHIP at bdeebf1 Reviewer: codex gpt-6.1-sol xhigh, fast tier. Follow-ups: 1. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward. SHIP at bdeebf1
Rust tests could not run because Follow-ups:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo, 2026-11-04: "are we able to disable the context thing on the bottom right? i want to be able to right click disable it. what's its name?" and "likewise, i guess we can turn that into a 5h/weekly usage type thing instead as well for some people. i suppose it'd be relevant sometimes for SOME people to have that surfaced e.g in their session info thing."
References: Codex's ring popover ("Usage source: Your Pro plan / Weekly limit 10% left / Credits 56,766 credits / Manage usage") and Claude desktop's ("Plan usage limits · Ultra / 5-hour limit Resets at 10:00 PM 22% / Weekly · all models Resets Mon 3:00 PM 41%").
This is the acpmux half: the data. The composer ring's plan-usage mode, its popover and the Session Info section come in a follow-up web PR that reads this.
What changed
usageLimits(claude_stdio/usage_limits.rs, from Claude Code'srate_limit_event). A Codex chat now does too:codex app-server'saccount/rateLimits/updated, which cmux-codex-acp passes on as_meta.codexAppServer.rateLimits, is normalized (codex_app_server/usage_limits.rs) into the same shape:{windows: [{id, usedPercent, resetsAt?, windowMins?}], plan?, credits?}. The 5-hour window issessionand the weekweekly, as Claude's; any other length is named by its minutes.planis Codex'splanType;creditsis{balance}or{unlimited: true}, only when the account holds some.usageLimits), never a 0%. A snapshot for another limit id thancodexis not the plan's and is ignored.usageLimitsas "waiting on a limit". Every Claude Code chat reports limits, so its activities were always held as waiting, and Codex chats would now be too. They now read a limit as reached only when a window is used up (usage_limit_reached: a window at 100%).Tests
codex_app_server::usage_limits_tests(normalizer: Pro 5h+weekly+credits, weekly-only with unlimited credits, other window lengths, nothing reported is nothing, credits alone).claude_stdio::usage_limits_tests::only_a_used_up_window_is_a_limit_reached.hub_integrationcodex_usage_limits::a_codex_chat_keeps_its_accounts_usage_limits: the fake app-server ("codex-limits") sends two updates in a turn; the session detail holds the newest, and a chat with none has none.Red: 6455e4f (tests only; the normalizer and helper do not exist). Green: the head.
Observed / Not run
Changelog
none (the data is shown by the follow-up web PR)
Agent session: agent session
🤖 Generated with Claude Code
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Makes a Codex chat's plan usage limits (5-hour, weekly, credits) available as its
usageLimits, matching how a Claude chat's are kept, so the composer ring and Session Info read one shape for both.account/rateLimits/updated, passed on by cmux-codex-acp as_meta.codexAppServer.rateLimits, intousageLimits: the 5-hour window becomessessionand the weekweekly, plusplanandcredits.codexare ignored; an empty plan snapshot clears the limits saved so far.Written for commit bdeebf1. Summary will update on new commits.