openai / openai/codex

Codex quota consumption: same 11% usage band consumed with 52% less observed token-weighted work

Open
#42,448 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug CLI rate-limits
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of Codex CLI is running?

0.152.1 (upgraded, so has run 2 other versions in this window)

What subscription do you have?

PRO 20X

Which model were you using?

sol (ultra and max) and terra (high)

What platform is your computer?

Darwin 25.5.0 arm64 arm

What terminal emulator and version are you using (if applicable)?

terminal

Codex doctor report
codex doctor --json
{
  "schemaVersion": 1,
  "generatedAt": "1788410022s since unix epoch",
  "overallStatus": "ok",
  "codexVersion": "0.152.1",
  "checks": {
    "app_server.status": {
      "id": "app_server.status",
      "category": "app-server",
      "status": "ok",
      "summary": "background server is running",
      "details": {
        "app-server version": "0.150.1",
        "control socket": "/Users/limpingninja/.codex/app-server-control/app-server-control.sock",
        "daemon state dir": "/Users/limpingninja/.codex/app-server-daemon",
        "mode": "ephemeral",
        "pid file": "/Users/limpingninja/.codex/app-server-daemon/app-server.pid (file)",
        "settings": "/Users/limpingninja/.codex/app-server-daemon/settings.json (missing)",
        "status": "running",
        "update-loop pid file": "/Users/limpingninja/.codex/app-server-daemon/app-server-updater.pid (missing)"
      },
      "remediation": null,
      "durationMs": 153
    },
    "auth.credentials": {
      "id": "auth.credentials",
      "category": "auth",
      "status": "ok",
      "summary": "auth is configured",
      "details": {
        "auth file": "/Users/limpingninja/.codex/auth.json",
        "auth storage mode": "File",
        "stored API key": "false",
        "stored ChatGPT tokens": "true",
        "stored agent identity": "false",
        "stored auth mode": "chatgpt"
      },
      "remediation": null,
      "durationMs": 0
    },
    "config.load": {
      "id": "config.load",
      "category": "config",
      "status": "ok",
      "summary": "config loaded",
      "details": {
        "CODEX_HOME": "/Users/limpingninja/.codex",
        "config.toml": "/Users/limpingninja/.codex/config.toml",
        "config.toml parse": "ok",
        "cwd": "/Users/limpingninja",
        "enabled feature flags": "shell_tool, view_image, sleep_tool, unified_exec, unified_exec_zsh_fork, shell_snapshot, content_item_kinds, code_mode_host, terminal_resize_reflow, sqlite, hooks, enable_request_compression, unbounded_connection_retries, multi_agent, apps, tool_search_always_defer_mcp_tools, tool_suggest, plugins, in_app_browser, in_app_chat, in_app_dictation, in_app_local_automation, in_app_updates, browser_use, browser_use_full_cdp_access, browser_use_external, computer_use, remote_plugin, plugin_sharing, image_generation, resize_all_images, item_ids, skill_mcp_dependency_install, skill_search, mentions_v2, steer, guardian_approval, goals, collaboration_modes, tool_call_mcp_elicitation, auth_elicitation, personality, fast_mode, tui_app_server, remote_compaction_v2, compaction_image_budget, workspace_dependencies",
        "feature flag overrides": "none",
        "feature flags enabled": "47",
        "log dir": "/Users/limpingninja/.codex/log",
        "mcp servers": "0",
        "model": "gpt-5.6-terra",
        "model provider": "openai",
        "sqlite home": "/Users/limpingninja/.codex"
      },
      "remediation": null,
      "durationMs": 0
    },
    "git.environment": {
      "id": "git.environment",
      "category": "git",
      "status": "ok",
      "summary": "git version 2.50.1 (Apple Git-155)",
      "details": {
        "PATH git #1": "/usr/bin/git",
        "PATH git entries": "1",
        "git build options": "git version 2.50.1 (Apple Git-155); cpu: arm64; no commit associated with this build; sizeof-long: 8; sizeof-size_t: 8; shell-path: /bin/sh; feature: fsmonitor--daemon; libcurl: 8.7.1; zlib: 1.2.12; SHA-1: SHA1_DC; SHA-256: SHA256_BLK",
        "git exec path": "/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core",
        "git version": "git version 2.50.1 (Apple Git-155)",
        "repo detected": "false",
        "selected git": "/usr/bin/git"
      },
      "remediation": null,
      "durationMs": 159
    },
    "installation": {
      "id": "installation",
      "category": "install",
      "status": "ok",
      "summary": "installation looks consistent",
      "details": {
        "PATH codex #1": "/Users/limpingninja/.local/bin/codex",
        "current executable": "/Users/limpingninja/.local/bin/codex",
        "install context": "standalone (unix, package /Users/limpingninja/.codex/packages/standalone/releases/0.152.1-aarch64-apple-darwin, bin /Users/limpingninja/.codex/packages/standalone/releases/0.152.1-aarch64-apple-darwin/bin, resources /Users/limpingninja/.codex/packages/standalone/releases/0.152.1-aarch64-apple-darwin/codex-resources, path /Users/limpingninja/.codex/packages/standalone/releases/0.152.1-aarch64-apple-darwin/codex-path)",
        "managed by bun": "false",
        "managed by npm": "false",
        "managed by pnpm": "false",
        "managed package root": "not set"
      },
      "remediation": null,
      "durationMs": 3
    },
    "mcp.config": {
      "id": "mcp.config",
      "category": "mcp",
      "status": "ok",
      "summary": "no MCP servers configured",
      "details": {},
      "remediation": null,
      "durationMs": 0
    },
    "network.env": {
      "id": "network.env",
      "category": "network",
      "status": "ok",
      "summary": "network-related environment looks readable",
      "details": {
        "managed proxy": "not configured",
        "proxy env vars": "none",
        "respect system proxy": "disabled",
        "system proxy": "direct"
      },
      "remediation": null,
      "durationMs": 1
    },
    "network.provider_reachability": {
      "id": "network.provider_reachability",
      "category": "reachability",
      "status": "ok",
      "summary": "active provider endpoints are reachable over HTTP",
      "details": {
        "ChatGPT inference URL": "https://chatgpt.com/backend-api/<redacted> reachable (HTTP 405)",
        "reachability mode": "ChatGPT auth"
      },
      "remediation": null,
      "durationMs": 332
    },
    "network.websocket_reachability": {
      "id": "network.websocket_reachability",
      "category": "websocket",
      "status": "ok",
      "summary": "Responses WebSocket handshake succeeded",
      "details": {
        "DNS": "2 IPv4, 2 IPv6, first IPv6",
        "auth mode": "chatgpt",
        "connect timeout": "15000 ms",
        "endpoint": "wss://chatgpt.com/backend-api/<redacted>",
        "handshake result": "HTTP 101 Switching Protocols",
        "model provider": "openai",
        "provider name": "OpenAI",
        "proxy env vars": "none",
        "reasoning header": "false",
        "server model present": "false",
        "supports websockets": "true",
        "wire API": "responses"
      },
      "remediation": null,
      "durationMs": 916
    },
    "runtime.provenance": {
      "id": "runtime.provenance",
      "category": "runtime",
      "status": "ok",
      "summary": "running standalone on macos-aarch64",
      "details": {
        "commit": "unknown",
        "current executable": "/Users/limpingninja/.local/bin/codex",
        "install method": "standalone (unix, package /Users/limpingninja/.codex/packages/standalone/releases/0.152.1-aarch64-apple-darwin, bin /Users/limpingninja/.codex/packages/standalone/releases/0.152.1-aarch64-apple-darwin/bin, resources /Users/limpingninja/.codex/packages/standalone/releases/0.152.1-aarch64-apple-darwin/codex-resources, path /Users/limpingninja/.codex/packages/standalone/releases/0.152.1-aarch64-apple-darwin/codex-path)",
        "platform": "macos-aarch64",
        "version": "0.152.1"
      },
      "remediation": null,
      "durationMs": 0
    },
    "runtime.search": {
      "id": "runtime.search",
      "category": "search",
      "status": "ok",
      "summary": "search is OK (bundled)",
      "details": {
        "search command": "/Users/limpingninja/.codex/packages/standalone/releases/0.152.1-aarch64-apple-darwin/codex-path/rg",
        "search command readiness": "file exists",
        "search provider": "bundled"
      },
      "remediation": null,
      "durationMs": 0
    },
    "sandbox.helpers": {
      "id": "sandbox.helpers",
      "category": "sandbox",
      "status": "ok",
      "summary": "sandbox configuration is readable",
      "details": {
        "approval policy": "OnRequest",
        "codex-linux-sandbox helper": "none",
        "execve wrapper helper": "/Users/limpingninja/.codex/tmp/arg0/codex-arg0UHpOCv/codex-execve-wrapper",
        "filesystem sandbox": "restricted",
        "network sandbox": "restricted"
      },
      "remediation": null,
      "durationMs": 0
    },
    "security.endpoint": {
      "id": "security.endpoint",
      "category": "security",
      "status": "ok",
      "summary": "no supported endpoint protection detected",
      "details": {
        "endpoint products": "none detected"
      },
      "remediation": null,
      "durationMs": 23
    },
    "state.paths": {
      "id": "state.paths",
      "category": "state",
      "status": "ok",
      "summary": "state paths and databases are inspectable",
      "details": {
        "CODEX_HOME": "/Users/limpingninja/.codex (dir)",
        "active rollout files": "316 files, 2884646505 total bytes, 9128628 average bytes",
        "archived rollout files": "1 files, 39169 total bytes, 39169 average bytes",
        "goals DB": "/Users/limpingninja/.codex/goals_1.sqlite (file)",
        "goals DB integrity": "ok",
        "log DB": "/Users/limpingninja/.codex/logs_2.sqlite (file)",
        "log DB integrity": "ok",
        "log dir": "/Users/limpingninja/.codex/log (missing)",
        "memories DB": "/Users/limpingninja/.codex/memories_1.sqlite (file)",
        "memories DB integrity": "ok",
        "queue DB": "/Users/limpingninja/.codex/queue_1.sqlite (file)",
        "queue DB integrity": "ok",
        "sqlite home": "/Users/limpingninja/.codex (dir)",
        "standalone release cache": "3 entries in /Users/limpingninja/.codex/packages/standalone/releases",
        "state DB": "/Users/limpingninja/.codex/state_5.sqlite (file)",
        "state DB integrity": "ok",
        "thread history DB": "/Users/limpingninja/.codex/thread_history_1.sqlite (file)",
        "thread history DB integrity": "ok"
      },
      "remediation": null,
      "durationMs": 4233
    },
    "state.rollout_db_parity": {
      "id": "state.rollout_db_parity",
      "category": "threads",
      "status": "ok",
      "summary": "rollout files and state DB thread inventory agree",
      "details": {
        "default model provider": "openai",
        "rollout DB active files": "316",
        "rollout DB active rows": "316",
        "rollout DB archive mismatches": "0",
        "rollout DB archived files": "1",
        "rollout DB archived rows": "1",
        "rollout DB duplicate DB paths": "0",
        "rollout DB duplicate rollout thread ids": "0",
        "rollout DB malformed file names": "0",
        "rollout DB missing active rows": "0",
        "rollout DB missing archived rows": "0",
        "rollout DB model providers": "openai=317",
        "rollout DB rows": "317",
        "rollout DB scan cap reached": "false",
        "rollout DB scan errors": "0",
        "rollout DB sources": "subagent:thread_spawn=313, cli=2, vscode=2",
        "rollout DB stale rows": "0"
      },
      "remediation": null,
      "durationMs": 316
    },
    "system.disk": {
      "id": "system.disk",
      "category": "disk",
      "status": "ok",
      "summary": "sufficient free disk space (265.2 GiB)",
      "details": {
        "CODEX_HOME available": "265.2 GiB",
        "failure threshold": "1.0 GiB",
        "warning threshold": "5.0 GiB",
        "worktree available": "265.2 GiB"
      },
      "remediation": null,
      "durationMs": 0
    },
    "system.environment": {
      "id": "system.environment",
      "category": "system",
      "status": "ok",
      "summary": "OS language en-CA",
      "details": {
        "EDITOR": "not set",
        "LANG": "en_CA.UTF-8",
        "VISUAL": "not set",
        "os": "Mac OS 26.5.1 [64-bit]",
        "os language": "en-CA",
        "os type": "Mac OS",
        "os version": "26.5.1"
      },
      "remediation": null,
      "durationMs": 2
    },
    "terminal.env": {
      "id": "terminal.env",
      "category": "terminal",
      "status": "ok",
      "summary": "terminal metadata was detected",
      "details": {
        "COLORTERM": "truecolor",
        "TERM_PROGRAM": "Apple_Terminal",
        "color output": "enabled",
        "effective locale": "en_CA.UTF-8",
        "stderr is terminal": "true",
        "stdin is terminal": "true",
        "stdout is terminal": "true",
        "terminal": "Apple Terminal",
        "terminal size": "147x56",
        "terminal version": "470.2"
      },
      "remediation": null,
      "durationMs": 0
    },
    "terminal.title": {
      "id": "terminal.title",
      "category": "title",
      "status": "ok",
      "summary": "terminal title default",
      "details": {
        "terminal title activity": "true",
        "terminal title items": "activity, project-name",
        "terminal title project source": "cwd",
        "terminal title project value": "limpingninja",
        "terminal title source": "default"
      },
      "remediation": null,
      "durationMs": 0
    },
    "updates.status": {
      "id": "updates.status",
      "category": "updates",
      "status": "ok",
      "summary": "update configuration is locally consistent",
      "details": {
        "cached latest version": "0.152.1",
        "check for update on startup": "true",
        "last checked at": "2026-09-02T18:28:55.943275Z",
        "latest version": "0.153.0",
        "latest version status": "newer version is available",
        "update action": "standalone installer",
        "version cache": "/Users/limpingninja/.codex/version.json"
      },
      "remediation": null,
      "durationMs": 671
    }
  }
}
What issue are you seeing?

Summary

I’m on ChatGPT Pro 20x and am seeing possible disproportionate Codex quota consumption. 01a027f5-6ce4-7531-badf-e0ff4781a1b6

I compared two periods with the exact same underlying quota movement:

  • Consumed usage: 36% → 47%
  • Displayed remaining usage: 64% → 53%
  • Quota consumed: 11 percentage points

The current period consumed the same 11 quota points with approximately 52% less observed token-weighted work than an earlier GPT-5.6 Sol / Ultra
period.

Exact same-band comparison

Window Remaining usage Recorded model / effort Duration Local token-usage updates Raw tokens Model rate-card proxy*
━━━━━━━━ ━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━
Aug 26 64% → 53% GPT-5.6 Sol / Ultra only 1h 16m 604 229.4M 2,753.3
──────── ───────────────── ─────────────────────────────────── ────────── ─────────────────────────── ──────────── ────────────────────────
Sep 2 64% → 53% GPT-5.6 Sol Max/inherited, plus 5h 33m 885 91.3M 1,316.3
33 Terra xhigh updates

For the same 11 percentage points of quota consumption, the Sep 2 interval had:

  • 60% less raw token work: 91.3M vs 229.4M
  • 52% less token-weighted work under the published model rate card: 1,316.3 vs 2,753.3
  • 47% more local token-usage updates: 885 vs 604
  • 73% fewer tokens per update: approximately 103K vs 380K

The Sep 2 workload consisted of many smaller agent/tool-loop requests, not more token-weighted work. The local records show 885 token-usage
updates during the interval.

Why I believe this needs investigation

The current meter consumed the same quota band with about 2.1× less observed local token-weighted work than the earlier all-Sol/Ultra period.

I understand that local telemetry is not an invoice and may omit activity outside these local transcripts. However, this is exactly why I am
requesting an account-level audit.

Please determine whether the Sep 2 usage includes any activity not represented in my local session telemetry, including:

  1. ChatGPT Work, cloud, or other-device activity sharing this usage pool.
  2. Background tasks, memories, automations, compaction, rolling summaries, or computer-history work.
  3. Subagent escalation or delegation not reflected in the visible task.
  4. Fast-mode or other higher-rate routing/configuration.
  5. MCP/tool-result duplication or another metering regression.

If none of the above accounts for the difference, please investigate whether this is related to the recently acknowledged Codex/ChatGPT Work
overconsumption issues.

Method and limitations

  • “Raw tokens” here means local input plus output telemetry.
  • The comparison proxy applies OpenAI’s published per-million-token rates for input, cached input, and output to the recorded models.
  • It is a like-for-like comparison aid, not a claim about my invoice or a conversion of Pro 20x quota into credits.
  • I can provide redacted timestamped aggregates and session metadata privately. I do not want to post raw transcript logs publicly because they
    contain project paths, command arguments, and tool output.

Relevant documentation:

What steps can reproduce the bug?

I let it run for 11% and rated the 11% window w/Sol Max and Terra Xhigh vs. a Sol Ultra window from 7 days prior. The results show that for the same 11 percentage points of quota consumption, the Sep 2 interval had:

  • 60% less raw token work: 91.3M vs 229.4M
  • 52% less token-weighted work under the published model rate card: 1,316.3 vs 2,753.3
  • 47% more local token-usage updates: 885 vs 604
  • 73% fewer tokens per update: approximately 103K vs 380K

But consumed the same amount of credits in less time with drastically less work performed.

What is the expected behavior?

The patches published by OpenAI specifically stated that they were correcting for quota issues. Despite this, and with no change to the type of work, we see a drastic token usage increase for same workload type, if I extrapolate by 11% window you can see this, the same work now takes up 25% or more of weekly quota in a much shorter window.

Additional information

Please note that the 11% baseline I used was with SOL ULTRA.

I noticed on Sunday that my weekly quota had been fully utilized, 50$ in credits were burned. I used a 'refresh' and within a couple hours 25% of my weekly quota had burned. The work that was being done was very similar work throughout the week, I noticed an extreme amount of tool calls and model responses, so I gave the agent guidance to orchestrate to avoid parallel agents making tool calls, pass the info in and restrict the agent.

This fixed the anomalous tool calling, which could be model or harness, but that's not what I wanted to track.

Then I let it run for 11% and rated the 11% window w/Sol Max and Terra Xhigh vs. a Sol Ultra window from 7 days prior. The results show that for the same 11 percentage points of quota consumption, the Sep 2 interval had:

  • 60% less raw token work: 91.3M vs 229.4M
  • 52% less token-weighted work under the published model rate card: 1,316.3 vs 2,753.3
  • 47% more local token-usage updates: 885 vs 604
  • 73% fewer tokens per update: approximately 103K vs 380K

But consumed the same amount of credits in less time with drastically less work performed.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the quota discrepancy with Codex CLI 0.152.1 on the listed models, comparing observed token-weighted work with reported usage. Use the supplied doctor report and rollout/state data as evidence; done means the discrepancy is explained and the affected accounting behavior is corrected or clearly documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.