Skip to content

Repeated user-session rollouts replay large history and rapidly grow context/quota #36101

Description

@centerseed

Environment

  • ChatGPT Desktop for macOS build: 26.721.81911
  • Bundled Codex CLI: 0.146.0-alpha.3.1
  • Model: gpt-5.6-sol, medium reasoning
  • macOS on Apple Silicon
  • Time zone: Asia/Tokyo
  • Global configuration includes tool_output_token_limit = 2000
  • Observed rollouts report source = vscode

Issue

A normal user session that was mostly writing specifications rapidly consumed quota while its model context grew from about 22k to 50k–178k tokens.

The local rollout data shows multiple distinct rollout files for the same session ID, each with:

  • thread_source = user
  • parent_thread_id = null
  • the same initial last_input_tokens = 21,927
  • roughly 732–748 historical token_count events materialized into the rollout

Within approximately 25 minutes, the latest last_input_tokens values among these rollouts ranged from about 51,970 to 177,909. Cached input was very high (for example, 167,680 cached out of 169,297 input).

There were no newly observed spawn_agent calls or /side sessions in the affected period. The repeated large prefix therefore does not appear to be an explicit full-history subagent fork.

Why this is unexpected

The session was doing largely specification work, not repeatedly loading a large repository. Nevertheless, each new rollout appears to materialize the same already-large history and then grow again. This makes the context/quota cost disproportionate to the visible work.

Tool-output observation

After restart, tool_output_token_limit = 2000 appears to limit the model-visible history contribution of large code-mode results, but raw custom_tool_call_output records are still persisted in rollout JSONL (observed individual records up to about 295 KB). Therefore it does not resolve rollout/session-history replay or raw-output persistence.

Expected behavior

A user session should not repeatedly materialize a large accumulated history into distinct rollouts without an explicit user-visible fork/resume reason. Existing history should preserve cache lineage and avoid replay/duplication; tool outputs should not remain as unbounded raw payloads in history that compaction or a new rollout can replay.

Related issues

I can provide a sanitized, aggregate-only event timeline if helpful. I cannot share the full rollout JSONL because it contains private project content.

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingcontextIssues related to context management (including compaction)rate-limitsIssues related to rate limits, quotas, and token usage reportingsessionIssues involving session (thread) management, resuming, forking, naming, archiving

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions