Codex App: make session-status checks feel instant
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- PR merge metrics
- PR metrics pending
Description
Summary
The Codex app feels slow in the core loop before model or tool latency is involved. Checking whether a session is running, opening an existing session, or seeing that a session has finished should feel close to opening Instagram: show a useful state immediately, then progressively load detail.
This is a Codex App responsiveness issue, not a request to optimize model generation.
User-visible flows
- Launch the app and see the session list and current statuses.
- Switch to an existing session.
- Resume a session and see whether it is running, waiting, or finished.
- Return to the app after a background refresh or reconnect.
- Confirm that a session has completed without waiting for full history hydration.
Evidence already in the tracker
- #45636 reports 10–15 seconds to open chats.
- #37334 reports minutes to tens of minutes before threads become interactive.
- #38373 measures a 1.87-second full scan of a 23,739-thread state table during startup.
- #40137 measures a roughly 2.5-second stale model-metadata fetch on the first-turn critical path.
- #42812 reports a 55% reduction in a local filesystem metadata repro after removing redundant home-directory resolution.
Proposed behavior
- Render the latest locally available session status from an indexed/cacheable source before hydrating full conversation history.
- Keep model, MCP, plugin, and other network refreshes off the first usable status path when cached state is sufficient.
- Make history hydration progressive and cancellable; opening a session should not require scanning or rendering all of its contents first.
- Use explicit loading/stale/reconnecting states so an immediate status is useful without implying it is final.
- Define and publish latency budgets. As a starting point, target the first useful session state within 500 ms on warm local state and within 2 seconds on cold start, then tighten based on measured baselines.
Acceptance criteria
- The four flows above have p50/p95 measurements split by cold/warm start and local history size.
- The first useful session status meets an agreed budget without waiting for full history hydration or optional network refreshes.
- Large histories do not make the common status-check path degrade linearly.
- Regressions are covered by an automated performance check or trace-based benchmark.
Related
See #40087 for per-turn/tool timing. This issue focuses specifically on the user-visible session-status path.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No files, tests, or entry points are named. Start by locating the session-status path and measuring the four listed flows across cold and warm starts; done means an agreed first-useful-status latency budget is met without full history or optional network refreshes, with large-history regressions covered by a performance check or trace benchmark.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100