Triage
This is a real Usage → Limits attribution bug in a setup we already model, not a missing multi-account product.
T3 does not infer upstream ChatGPT accounts from an OpenAI-compatible proxy. Request routing and limit reads are separate:
- Codex usage on the provider comes from the local CLI’s
account/rateLimits/read(CodexProvider/codexUsageLimits). A custom/local provider is exactly the case where Codex itself reportsLimits: data not available yet. - Per-account pool data comes from a CLIProxyAPI Usage hub: Settings → Providers → Usage providers → Add hub. That path (
UsageLimitSources+cliproxyApi) reads each stored OAuth file and is documented in Usage and limits. Routing Codex through the proxy does not turn those files into Usage rows by itself.
The Limits UI already pools by provider (collectLimitAccounts / collectLimitPools in packages/shared/src/usageLimits.ts; web UsageLimitsPooled, same collectors on mobile). Identity is driver + email. Instances without an email stay separate (environmentId:instanceId). Two identical weekly segments with the same remaining % and reset are therefore almost certainly the same native/cached ChatGPT snapshot drawn twice (two Codex instances and/or two selected environments), not independently measured Account A vs Account B. The popover showing one Codex identity matches that: it is one LimitAccount, not a pool total.
That matches the open cluster:
- #10877 (approved) — stop publishing native quota for custom Codex (
requiresOpenaiAuth: false); this is the “say limits are unavailable” outcome you asked for. - #11473 / #11467 — CLIProxy can still leak cached ChatGPT limits as extra native accounts.
- #10701 / #10700 —
/usage-limitsdouble-counts the same subscription (composer command; Limits page already merges when email matches). - #10835 / #10845 / #10876 — real same-email / workspace split, only if the two bars are actually different subscriptions.
We are not going to auto-detect a proxy account pool from the OpenAI-compatible endpoint. If attribution is missing, the bars should go away (unsupported / unavailable), not look like two measured accounts.
Workaround today: add the hub under Usage providers (management URL + key), then use those rows as the source of truth. Treat native Codex bars on a custom provider as untrusted.
Please confirm (so we know whether this is only the custom-provider leak or also a failed hub read):
- Is a hub configured at Settings → Providers → Usage providers?
- How many Codex provider instances, and how many environments are selected on Usage?
- In each weekly popover: display name, plan, Signed in vs Via, and whether the emails differ.
No further design work needed beyond landing #10877 / #11473 and, if a hub is already configured and the bars still match after that, checking the collector identity for that snapshot.