Skip to content

Codex App becomes choppy when session history contains a large user message #22283

@bornio

Description

@bornio

What version of the Codex App are you using (From “About Codex” dialog)?

Version 26.506.31421 (2620)

What subscription do you have?

Pro

What platform is your computer?

Darwin 25.4.0 arm64 arm

What issue are you seeing?

Summary

The Codex desktop app becomes noticeably choppy when the profile's session history contains a session JSONL with a very large user message. The most visible symptom is that dragging the Codex pet becomes stuttery/choppy.

This appears tied to the Codex app processing session history, not to the display configuration, GPU state, or the app binary itself.

Environment

  • macOS on Apple Silicon
  • External display at 5K / 60 Hz
  • Codex App launched from /Applications/Codex.app
  • Session JSONL metadata reports CLI version: 0.130.0

Impact

Live app interactions become less responsive even though the large session is historical and not the active conversation. A clean or trimmed profile is smooth; adding back the relevant session history makes the app choppy again.

What steps can reproduce the bug?

I isolated this with non-destructive CODEX_HOME copies.

Launch command used for each test profile:

open -n -F --env "CODEX_HOME=/path/to/test-profile" /Applications/Codex.app

Observed results:

  • Clean temporary CODEX_HOME: smooth
  • Full copied real profile: choppy
  • Trimmed profile excluding sessions/: smooth
  • Trimmed profile plus only logs/state SQLite files: smooth
  • Trimmed profile plus sessions/: choppy
  • Trimmed profile plus one specific historical session JSONL: slightly choppy
  • Same single session JSONL, but with the huge user-message fields replaced by short placeholders: smooth

The single reproducing JSONL was about 516 KB with 28 JSONL records. It contained one private user message of length 185,525 characters, duplicated in two records:

  • line 6: response_item, payload.type = "message", role = "user", payload.content[0].text.length = 185525
  • line 7: event_msg, payload.type = "user_message", payload.message.length = 185525

A synthetic reproducer should likely be enough:

  1. Start from a clean CODEX_HOME.
  2. Add a session JSONL under sessions/YYYY/MM/DD/ with normal session metadata and a user message around 185k characters.
  3. Store the same large text in both a response_item user message field and an event_msg user_message field, matching the current session log structure.
  4. Launch Codex App with that CODEX_HOME.
  5. Drag the Codex pet and compare responsiveness against the clean CODEX_HOME.

Uploaded thread for additional context: dde817eb-024c-47fd-9cae-43e6c5e8b79a

What is the expected behavior?

Large historical session messages should not affect unrelated live UI interactions such as dragging the Codex pet.

Session history parsing/rendering/indexing should be bounded, lazy, virtualized, off-main-thread, or otherwise isolated from input and animation responsiveness.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingperformance

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions