Opening the ChatGPT desktop app silently consumes the Codex weekly limit (fixed 6% per background suggestion run; reproduced under controlled conditions)
Summary
Simply having the ChatGPT desktop app (bundled Codex Framework) open — without submitting any prompt — consumes the Codex weekly rate limit. In a controlled experiment I measured a fixed 6% deduction of the weekly window triggered by app-initiated background activity (pending turns / ambient suggestions on previously opened sessions). Quitting the app stops the drain immediately.
This has repeatedly consumed my weekly limit while I was not using Codex at all (2026-07-21, 07-29→07-30 full burn 100%→0% in ~11h, 08-01, and now reproduced on 08-07).
Controlled experiment (2026-08-05 ~ 08-07, KST)
I isolated variables one at a time, polling GET /backend-api/wham/usage (rate_limit.primary_window.used_percent) every 15–30 min:
| Phase | Condition | Result |
|---|---|---|
| 1 | All clients dead (logged out, app quit, reboot) | 103h 47m, 0% consumed |
| 2 | Valid credentials (auth.json refreshed), app quit | ~41h, 0% consumed |
| 3 | ChatGPT.app launched 14:33; user opened past sessions ~20:15 | 20:20–21:36: 97% → 91%, exactly −6% (≈1%/15min display progression) |
| 4 | App quit 21:41 | Drain stops immediately; 91% held for hours |
Cross-checks during the −6% window:
- No local Codex CLI sessions (
~/.codex/sessionsempty for that day). - No cloud tasks (
GET /backend-api/wham/tasks→ empty list) — and the drain stopped on app quit, so it was not server-side task execution. - The app produced 3 notifications for old threads (e.g.
codex://threads/019fb91a-2935-7a73-94d0-8c23b5bbe41a), i.e. the app executed pending turns/auto-suggestions on threads I merely had open — I never submitted anything.
Prior observation of the same fixed cost
On 2026-07-22 (clean window after reset) I measured ambient/personalized suggestions twice: 9 projects (52 model calls) → −6%; 1 project (4 model calls) → −6%. 13× the work, identical 6% charge. The 08-07 reproduction makes it sample n=3. The weekly limit appears to be quantized (~16–17 slots) and one background suggestion run costs one slot regardless of size.
Why this is a problem
- No user intent: opening the app (even just to check remaining quota) can cost 6% of the weekly window. On 07-29→07-30 this contributed to a 100%→0% burn in ~11 hours with zero user prompts, locking me out for what was scheduled as 6+ days.
- No disclosure: nothing in the UI indicates that ambient suggestions / auto-resumed turns consume the weekly limit, nor their fixed 6% cost.
- Delayed display: the deduction surfaces gradually (~1%/15min), so users cannot see the cost in real time.
- Support (case
11918266) repeatedly answered with unrelated web-error checklists and workspace-admin docs; the server-side usage ledger I requested was never provided.
Expected behavior
- Background/ambient activity should be opt-in, or at minimum clearly labeled with its quota cost.
- Usage accounting should be proportional to actual work, not a fixed 6% per run.
- A user-accessible usage ledger (what consumed the limit, when) — the local logs cannot show app-direct backend calls.
Environment
- macOS (Darwin 25.5.0), ChatGPT.app with Codex Framework 151.0.7922.71 (
com.openai.codex) - Plan: ChatGPT Plus (individual)
- Related in-app feedback ID:
019f81f9-9e2b-78f3-b78e-42b4df0c3f64
17 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Live reproduction #3, minutes after filing this issue.
After quitting the app (drain stopped, 91% held for >1h), I relaunched the app at ~22:5x KST and left it idle — no prompts submitted.
That is now three consecutive on/off cycles with the same result: launch → drain begins, quit → drain stops immediately, relaunch → drain resumes. I am continuing 15-minute polling with the app left open to see whether this run also settles at exactly −6% (i.e. 85%), consistent with the fixed-cost quantization described above. Will post the completed curve here.
Re the potential duplicates flagged by the bot (#36733, #36848, #36481): these describe the same symptom family — the desktop app consuming weekly quota while idle — but this issue is not a plain duplicate. What it adds:
Happy to have a maintainer consolidate these under one tracking issue; until then I'll keep this open as the controlled-reproduction dataset. I can provide the full minute-resolution TSV log on request.
The controlled launch/quit experiments make one missing product primitive very visible: every billable background execution needs a durable causal ledger entry that can be joined to the usage deduction.
Right now the user can observe:
but there is no authoritative record saying which logical background operation consumed that quota.
I would give every app-initiated model/background run a stable operation identity and attribution envelope:
Then the usage surface can reconcile server-side deductions against operations instead of showing only an aggregate rolling percentage. For background work, the app can also enforce policy before dispatch:
user_initiated=false+ billable => require opt-in / declared budget / visible notification, depending on product intent.The fixed 6% observation is especially important to preserve in diagnostics without assuming the billing mechanism: if quota is slot/quantum-based rather than token-linear, the ledger should record the server's actual charged unit alongside measured model work rather than attempting to infer cost from token counts.
A regression/control test could mirror the reporter's experiment:
The invariant is: if product-owned background activity can consume a user limit, the causal execution record must be observable and attributable to that limit change.
Root cause identified: Chronicle (desktop screen-memory summaries).
After the drain reproduced, I found
~/.codex/memories/extensions/chronicle/resources/full of*-10min-memory-summary.mdfiles. Their counts line up with every incident on this account:| Date | Chronicle 10-min summaries generated | Incident |
|---|---|---|
| 2026-07-21 | 93 | original burn (71% → 0%) |
| 2026-07-22 | 14 | −6% steps after reset |
| 2026-07-29 | 130 | 100% → 0% in ~11h |
| 2026-08-01 | 5 | "3% in 36 minutes" |
| 2026-08-07 | 10 | this issue's controlled reproduction (97% → 89%) |
On 08-07 the correlation is minute-for-minute: summary files written at 21:15 / 21:26 / 21:37 KST match the ~1%-per-15-min drain readings, and after relaunch, files at 23:06 / 23:17 match the 91→90→89 readings exactly. At roughly 1 summary ≈ 1% of the weekly window, 130 summaries on 07-29 fully accounts for the total burn.
So the mechanism is: with
chronicle = true(Settings > Personalization), the desktop app periodically generates screen-context memory summaries via billed model calls while the app is open — no user prompts involved. This matches #36733's "background memory jobs drain plan quota while idle" report.One open question: the
memories.min_rate_limit_remaining_percentstartup guard has existed since April (#19990,codex-rs/memories/write/src/guard.rs), yet 07-29 burned to 0%. Either the Chronicle summary path doesn't go through that guard, or generation simply tracks user screen activity (on 08-07, file timestamps coincide with the moments I was actually interacting with the app). Maintainers can tell from the app-side code.Mitigation that worked here:
chronicle = false(andmemories = false) inconfig.toml/ Settings > Personalization. Full minute-resolution TSV available on request.Corroborating this on ChatGPT Pro (the report above is Plus), same OS build (Darwin 25.5.0). Independent measurement, adding to the "background activity burns the weekly window with no user prompt" pattern.
Matching your findings
~/.codex/ambient-suggestions/contains runs generated at 08:21 and 11:04 on 2026-08-10 that I never requested.~/.codex/sessions/**/*.jsonland the numbers never reconciled — the implied token cost per 1% swung between 0.1M and 22M depending on the day. Your slot model explains that; token accounting cannot.Additional data from the Chronicle side (not yet in this thread)
Chronicle appears to be a second, separate drain on the same window:
~/.codex/memories_extensions. 1,680 screen-capture JPEGs (434 MB) were also present.features.chronicle = false, the already-runningcodex_chronicleprocess (uptime 6h13m) kept going and rewrote summary files I had just deleted. I had tokillit manually. Only after killing it and restarting the app did it stay down — so the flag appears to be read at launch and ignored at runtime. A user who disables Chronicle to stop the drain keeps paying until they happen to checkpgrep.Environment
ChatGPT.app 26.803.41515 / codex-cli 0.147.0 / macOS 26.5.2 (arm64) / Plan: Pro
Supporting your requested fixes
A user-accessible usage ledger is the core issue. Without it, neither of us could attribute our own consumption, and both of us had to run multi-day investigations to recover something the product already knows.
@rikyunezumi61-takanoha Thank you — I can corroborate parts of your Chronicle findings from the original (Plus) account:
~/.codex/memories_extensions/chronicle/on this Mac still holds 705 ten-minute summaries from April–May 2026 (6.9 MB), months past any documented retention. So Chronicle had been running on this machine since at least late April.chronicle = false(+memories = false) inconfig.tomlwithout restarting the app, I measured 8 hours with zero window consumption and zero new summary files, and nocodex_chronicleprocess is present now. So the runtime-flag-ignored behavior you observed may be build-dependent — worth including your app build when maintainers triage. Either way your advice stands: after disabling, verify withpgrep -fl chronicleand check~/.codex/memories/extensions/chronicle/resources/for fresh files.Agreed that the root ask remains a user-accessible usage ledger — three independent multi-day investigations (yours, mine, and the earlier duplicates) all exist only because the product doesn't expose what it already knows.
@Tygb99 Thank you — both for the corroboration and especially for the build-dependent correction. That kind of counter-observation is exactly what keeps a thread like this credible.
Following your advice, I have reported my exact build (ChatGPT.app 26.803.41515, build 6321 / codex-cli 0.147.0) to OpenAI support with the runtime-flag observation scoped to my environment only, noting your 151.0.7922.71 result as evidence it may not be universal.
One additional data point on the "local logs cannot show this" front: my local log store (
~/.codex/logs_2.sqlite, 147,055 rows covering 2026-08-02 onward) contains zero rows whosetarget,module_path, orfilefields reference chronicle. So even while the process was demonstrably running and rewriting files, it emitted no log lines locally. Whatever ledger exists is server-side only — which is your root ask, and I agree it remains the core issue.Your plan-change observation (invisible inside a Pro-sized window, several percent per run on Plus) also matches my timeline from the other side: I was on Pro the whole time and only caught it by reconciling rate-limit records manually.
I observed a related case on a ChatGPT Pro account in the EU, with one important cross-device detail.
Timeline
The fact that the server-side meter was already at 0% on iOS before the Mac was awakened rules out the desktop app's wake/resume event as the trigger.
It does not distinguish between:
However, there was no explicit user-initiated Codex activity between the 5% and 0% observations.
Earlier that evening I had separately observed the meter move from 10% remaining to 6% remaining while generating images in an ordinary ChatGPT browser conversation, with no concurrent local Codex requests. Current OpenAI documentation says built-in image generation can count toward general Codex usage limits, so I am treating that measured four-point decrease as a separate event, not necessarily the same bug.
The unexplained event is specifically the final 5% disappearing server-side while the Mac remained asleep, with the result independently visible from iOS before the desktop machine was awakened.
This may still be compatible with the pending-turn or ambient-suggestion behavior described in this issue, but it was not triggered by waking or reopening the desktop client. A user-accessible usage ledger would be needed to identify the actual request or accounting event.
Additional macOS Plus reproduction: hidden ambient_suggestions consume quota
I can independently reproduce this on macOS with a ChatGPT Plus subscription.
I initially had no visible Codex task running and no visible scheduled task, but my remaining Codex allowance dropped from 41% → 39% → 37% within a few hours while Codex Desktop was open.
I then inspected the local Codex operational database at:
~/.codex/logs_2.sqliteThe logs confirm hidden model turns that are not shown as normal foreground tasks.
At 2026-08-20 15:35:49 +08:00, Codex created a synthetic
TurnInputbeginning with:Generate 0 to 3 hyperpersonalized suggestions for what this user can do with Codex in this local project...At 15:35:54, this produced a real sampling request using:
model=gpt-5.6-terrareasoning_effort=mediumA second background ambient-suggestions turn occurred at 16:07:46, followed by another real
gpt-5.6-terra / mediumsampling request at 16:07:51.The logs also contain multiple additional hidden helper turns using
gpt-5.6-luna / lowto generate one-line activity updates beneath Codex tasks.Separately, I found one self-deleting heartbeat automation that ran at 15:22:11 using
gpt-5.6-terra / xhigh. Because that automation deleted itself after execution, it was no longer visible in the task list afterward. However, the later ambient-suggestions calls occurred independently and demonstrate that quota-consuming hidden background model requests continued outside the visible task list.After I fully quit Codex Desktop, both
~/.codex/logs_2.sqliteand its WAL stopped being written at approximately 17:56:18.This appears to be the same class of issue described here: simply keeping the Desktop app open can trigger non-user-initiated model generations that consume a paid Plus allowance.
Please:
ambient_suggestionsand activity-summary generations are intentionally charged against the user's Codex allowance.I can provide sanitized SQLite excerpts, timestamps, thread IDs, and screenshots if useful.
In
/.codex/config.toml, settingambient-suggestions-enabled = falsemight help. It seems usage has been stable since making this change so far (will report again if doesn't work as expected)Guys OpenAI isn't going to look at this themselves, we need to spam Tibo's feed
lets do it
https://x.com/yong_____jjang/status/2091685199067365741
Additional default-state and configuration evidence
Environment: macOS, ChatGPT desktop
26.818.41509build6962,codex-cli 0.149.0.I do not recall ever seeing or opting into a suggested prompt. However, inspection of this installed app build shows that
ambient-suggestions-enableddefaults totrue.The key was absent from
~/.codex/.codex-global-state.json, meaning there was no recorded user opt-in or opt-out and the app used its enabled default.I also found four older files under
~/.codex/ambient-suggestions/, despite never knowingly using the feature.Persistent override
The precise configuration override is:
Users who want to stop background memory generation while retaining access to existing memories can use:
I verified that:
Restarting the desktop app is advisable because runtime handling appears to vary between builds.
I have not yet completed a controlled before-and-after quota observation. This evidence confirms the invisible enabled default and the exact opt-out syntax; it does not independently establish the amount of quota consumed.
Additional macOS Plus reproduction with precise per-call log evidence
Corroborating this issue with a fully time-boxed reproduction and per-call log evidence.
Environment:
Incident window: 2026-08-26 20:30–23:46 (UTC+8) / 2026-08-26 12:30–15:46 UTC
Observed impact: ~40% of weekly Codex usage consumed with zero chat messages sent during the window.
Root cause confirmed via local desktop logs (
~/Library/Logs/com.openai.codex/2026/08/26/codex-desktop-*-t0-i1-063332-0.log): Chronicle was actively running throughout, making real billed model calls (gpt-5.5,reasoning_effort=medium) roughly every 2 minutes:11 summary-generation calls were started in this window; only 4 completed before the connection dropped (the other 7 were in-flight when the app disconnected). Across the full day, 32 such 10-minute summary files were written to
~/codex/memories/extensions/chronicle/resources/, with bucket timestamps showing this was a backlog catch-up batch spanning screen-recording buckets from Aug 10–13 and Aug 25 — not routine incremental usage from that evening alone.Confirming the "invisible enabled default" point from @NellInc's comment above: my
~/.codex/config.tomlnever contained the stringchronicleat all (checked via grep against the full file), so it ran on whatever the shipped default is. I had already setambient-suggestions-enabled = falseunder[desktop]weeks earlier, which had zero effect on this drain since Chronicle is a separate flag under[features].Mitigation applied: added
and fully quit/relaunched the app (not just closed the window).
Given this is now corroborated across at least 4-5 independent accounts/platforms with matching mechanism (fixed background 10-min summary cadence, real model calls, invisible-by-default), it would help a lot to get an explicit maintainer acknowledgment and a target for making
chronicleopt-in by default, plus guidance on requesting quota restoration for windows like this one.Cross-linking this controlled passive/background-consumption reproduction to #41220, a meta tracker for abnormal Codex usage/quota depletion and usage-accounting inconsistencies. This issue is especially useful because it isolates client state: >103 hours with clients closed showed no drain, launching the desktop app/background activity produced the observed fixed deduction, and quitting stopped it. #41220 is intentionally a symptom-family tracker rather than a claim that every linked report shares one root cause.