Repository navigation
No transparent per-feature usage/billing breakdown — quota drains with no attributable local or server-side record #41617
Description
Summary
The core problem isn't just background consumption (Chronicle, desktop-app background jobs, etc.) — it's that there is no transparent, per-feature billing/usage breakdown for Codex quota at all. When quota drains unexpectedly, there is no reliable way for a user to answer "what exactly consumed this?"
What I observed
While investigating background quota drain (see #30639), I checked my local usage logs with ccusage — a tool that parses Codex's own local session logs into a usage report.
ccusage codexshowed no "Exec" entries at all for the period in question.- Despite that, my plan limits were fully drained.
So the drain is not just poorly attributed in the product UI — it doesn't even show up as a billable/loggable local event that a usage-analysis tool can reconstruct. This is a silent billing skip: quota is consumed without a corresponding, inspectable record of what consumed it, whether client-side or in whatever server-side accounting feeds the Analytics/limits UI.
Why this matters more than any single background-job bug
Root-causing and fixing individual background features (Chronicle, desktop-app suggestions, subagent overhead, etc. — see the many linked reports below) doesn't solve the underlying issue: users have no way to independently verify or audit what their quota is being spent on. Every one of these reports required manual forensic work (grepping local memory/session files, comparing before/after screenshots of Analytics) because there is no built-in, trustworthy usage ledger.
Ask
- A per-feature/per-surface usage breakdown (Chronicle, Exec, desktop suggestions, subagents, CLI, app-server, etc.) that reconciles with the quota meter shown to the user.
- Every quota-consuming event — including background/passive ones — should produce a corresponding local and/or server-side record, so tools like
ccusage(and the user) can audit it. - Ideally, a documented mapping between local session logs and the billed/limits-consuming events, so discrepancies (like the one above, where limits drained with zero matching local "Exec" activity) can actually be diagnosed instead of guessed at.
Related reports
This overlaps with the broader "abnormal quota depletion" pattern being tracked in #41220, and specifically with:
- Codex Desktop (macOS): Chronicle runs continuous background screen-recording summaries every 10 min, draining plan limits; disabling doesn't immediately stop capture #30639 — Chronicle background screen-recording summaries draining limits (where this transparency gap was first noticed)
- Codex Chronicle silently drains subscription quota 24/7 and triggers auth token invalidation #27773, Chronicle stays enabled after a Pro → Plus downgrade, consuming the smaller allowance in the background #36805, Chronicle never generates 6-hour summaries — only the 10-minute tier ever runs #37983, [macOS][Computer History] Recorder creates Skysight segments but 10-minute summaries never start #40386, Weekly limit is draining like the old 5-hour limit #33685 — Chronicle-specific variants
- Account-wide Codex usage attribution by client, session, and timestamp #28985 — Account-wide Codex usage attribution by client, session, and timestamp
- Codex Desktop: opt-in usage attribution by project and task #33433 — Codex Desktop: opt-in usage attribution by project and task
- Weekly Codex limit exhausted immediately after purchasing Plus; usage attribution is unclear #34066 — Weekly limit exhausted right after purchase; usage attribution unclear
- Show token usage breakdown at the end of codex exec #29272, /goal completion should show token usage breakdown, not only combined usage #28083, Show a detailed context usage breakdown when clicking context usage in Codex App #29783, Add native /context usage breakdown for context window visibility #27898 — requests for token usage breakdowns in various surfaces
- Stop Hiding Weekly Usage: ChatGPT Work Now Drains the Codex Quota Without Warning #35166 — Stop Hiding Weekly Usage: ChatGPT Work drains quota without warning
- Request: transparency and investigation into rapid Codex quota depletion for long-context research workflows #38600 — Request: transparency and investigation into rapid quota depletion
Environment
- Codex Desktop (macOS)
- Local usage inspected via
ccusage codex
Activity
hankwangtw commentedon Sep 2, 2026
Adding a measured data point to this, because it is exactly the gap you describe.
On my Mac the Chronicle screen-summary pipeline made 6,002 background model calls over the 8 days of logs I still had, and none of them appear in
threads.tokens_usedor in any rollout file. The local ledger is accurate for user-initiated work; this path simply bypasses it (0 rows whose cwd points at the chronicle capture directory, against 6,030 logged calls that all do).Controlled comparison, same machine, app open, no input: 48 minutes with it on → +23% of the 5-hour window; 197 minutes with it off → 0%.
Counting method, the on/off data and a read-only script that reproduces the numbers are in #42282. Fully agree the fix is attribution, not disclosure — the cost was documented; where it went was not.
berkyuo2-cpu commentedon Sep 8, 2026
Adding a measured Windows data point to the request for usage reconciliation.
Window: 2026-09-08 04:00–21:11 Europe/Istanbul (UTC+3), i.e. 01:00–18:11 UTC. The cutoff was fixed at the start of the analysis; the subsequent analysis itself is excluded.
Environment: Codex Desktop package 26.901.6511.0 (Windows package registry), bundled session/runtime version 0.153.4, Windows 10 build 19045 x64, ChatGPT Pro.
Measured local activity
51 unique local rollout files: 7 root tasks and 44 subagent threads, with 6,149 distinct usage increments.
Account allowance observations
The previous weekly window was at 99% at 04:04:08. A new reset epoch first appeared at 0% at 04:28:14; a stale old-epoch snapshot also appeared at 04:29:21. The new window reached 95% at 20:55:05, confirmed by a live account usage query at 21:11. The current reset timestamp corresponds to 2026-09-15 04:25:14 UTC+3. Small 1–4-second reset-timestamp variations were not treated as additional resets.
This is a 95-percentage-point increase in the new window, alongside substantial visible local activity. The trigger for the reset was not established. I cannot determine how much of that account-wide allowance change is attributable to the measured local events versus other surfaces or unlogged work.
Counting method
last_token_usage; 47 first records had total equal to last usage. At 4 counter resets, the new total also exactly equaled last usage, so start a new segment. Arithmetic mismatches: 0.turn_context.model, not fromrate_limits.limit_id, whose snapshots can refer to different allowance buckets.Naively summing every
last_token_usagewould produce 851,780,170, overstating the reconstructed total by 57,225,851 tokens (~7.20%). This is a log-analysis pitfall; it does not demonstrate duplicate billing.Interpretation and request
The visible workload contains thousands of large-context steps and substantial subagent activity. High cache reuse helps, but repeated cached context still accumulates usage. OpenAI's current pricing documentation explains that model, context, reasoning, tools and caching affect allowance consumption. Raw processed tokens are not directly equivalent to subscription allowance or a monetary bill.
Please provide a native, time-bounded export that reconciles account allowance with root tasks, subagents, compaction and background/cloud work; distinguishes cached/uncached input and reasoning/output; records request speed/service tier; and documents counter resets, repeated snapshots and the mapping to allowance consumption. The local records here do not expose per-request service tier, so speed-related allowance weighting could not be checked.
This analysis does not establish overbilling or a regression. Local counter arithmetic is consistent, but there is no independently verifiable account-wide reconciliation from these records. It covers this device's Codex logs, not all ChatGPT web/mobile usage or other devices. Raw prompts, project names/paths, account identifiers, session IDs and credentials are omitted from this public report.