Add in-thread navigation / table of contents for long sessions in Desktop App

Open 💬 4 comments Opened May 14, 2026 by Seanium

What variant of Codex are you using?

App (Desktop)

What feature would you like to see?

Problem

In long coding sessions, conversations can easily grow to hundreds or thousands of messages.

Currently, navigating older parts of a session in the Desktop App mainly requires manually scrolling upward through the chat history. This becomes inefficient when trying to revisit:

  • earlier architecture decisions
  • previous code suggestions
  • debugging steps
  • summarized plans or checkpoints

While session history/search helps locate conversations, there is no convenient way to navigate within a long conversation.

Proposed feature

Add in-thread navigation features for long sessions, such as:

  • Table of contents / outline panel
  • Automatically generate a navigable outline from user prompts, assistant summaries, or section markers.
  • Jump to message / search within current thread
  • Search only inside the active session and jump directly to matching messages.
  • Collapsible sections
  • Allow collapsing older sections of a conversation to reduce visual clutter.
  • Manual bookmarks / anchors
  • Let users bookmark important messages or checkpoints.

Example use cases

During long coding workflows, users often need to quickly return to:

  • initial requirements
  • earlier API designs
  • bug root cause discussions
  • implementation summaries

A navigation panel similar to:

  • VS Code Outline
  • Notion block navigation
  • Slack jump/search

would significantly improve usability for long-running sessions.

Why this matters

Codex is especially useful for large and iterative engineering tasks, which naturally create very long conversations.

As sessions grow longer, lack of in-thread navigation becomes a UX bottleneck and makes context revisiting unnecessarily slow.

Additional information

Related pain points seem connected to existing issues around session history/indexing/sidebar consistency, but this request is specifically about improving navigation inside a single long session.

View original on GitHub ↗

4 Comments

mandarBadve · 3 months ago

created same functionality for web, use extension to easily navigate long chat
https://chromewebstore.google.com/detail/chat-navigator/ojgjmimdamephabkknacopkdbfaojbbm

Necmttn · 2 months ago

The outline can be generated from session structure rather than another model pass.

Useful anchors: user prompts, compaction boundaries, plan/checkpoint messages, tool-call clusters, errors, approvals, and file-edit bursts. Each outline row should point to a turn id/source offset so clicking it jumps to the real transcript position and survives re-rendering or resume.

---

_Generated with ax._

gigberg · 2 months ago

look at my gist TOC patch for codex vscode:https://gist.github.com/gigberg/c205a365aaa08dec3f9d8ea45355186b

GodRayyy · 29 days ago

Adding a concrete Codex-specific MVP and acceptance criteria to this proposal.

I arrived at the same need after using the per-turn navigation rail available in the ChatGPT web experience and noticing that there is no equivalent semantic navigator in Codex Desktop. The need is stronger in Codex because a turn can contain progress updates, tool calls, command output, diffs, approval requests, and a final response.

I think a useful first version should stay deliberately simple:

  1. Use user prompts as the primary anchors. Do not list every tool event; that would reproduce the noise the outline is meant to remove.
  2. Derive labels deterministically at first, for example from a truncated first non-empty line. This avoids an extra model call, latency, and titles changing after they have been shown.
  3. Highlight the current turn as the user scrolls, and jump to the start of the user message when an anchor is selected.
  4. Reuse stable turn/message identifiers so anchors remain accurate across streaming, resume, lazy loading, and transcript virtualization.
  5. Keep existing anchors stable while output streams. New output should append/update the current turn without reordering earlier anchors or moving the user's reading position.
  6. Make the outline collapsible and responsive. On narrow windows it should become a compact rail or overlay rather than permanently reducing the transcript width.
  7. Expose the same anchor model to keyboard and assistive technology, including previous/next-turn commands, focusable items, useful accessible labels, and visible focus/current-state styling.

After that MVP, Codex-specific secondary markers could be added for approvals/input required, plan or phase changes, errors/interruption, compaction boundaries, and completed results. These should be visually subordinate to user prompts and filterable.

Suggested acceptance criteria:

  • any loaded user turn is reachable in one action;
  • the selected anchor lands on the correct message boundary in a 100+ turn thread;
  • streaming does not reorder anchors or disturb the current reading position;
  • the implementation does not require keeping the entire transcript DOM mounted;
  • long command output and diffs do not flood the outline;
  • the feature remains usable by keyboard, screen reader, and at narrow window widths.

This would also provide a shared navigation primitive for related requests such as block-level navigation (#17536), TUI prompt-to-prompt navigation (#21732), and manual bookmarks (#23350), while keeping the initial desktop implementation focused.