Codex App crashes when opening Archived Conversations with API key auth

Open 💬 0 comments Opened Jul 10, 2026 by 4x25

What version of the Codex App are you using?

26.623.141536 (bundle version 4753)

What subscription do you have?

API key authentication only, not ChatGPT auth.

What platform is your computer?

Darwin 25.5.0 arm64 arm

What issue are you seeing?

Opening Settings -> Archived conversations crashes the app route with the React error boundary:

Cannot read properties of undefined (reading 'title')

The component stack points at DataControlsSettings in the data-controls bundle. Around the same flow, the app also attempts a ChatGPT backend request for archived tasks:

GET https://chatgpt.com/backend-api/wham/tasks/list?limit=20&task_filter=archived

For API-key auth, there is no ChatGPT backend token attached, so this request can return 401. The UI should not crash in this mode.

What steps can reproduce the bug?

  1. Use Codex App with API key authentication only.
  2. Open Settings.
  3. Click Archived conversations.
  4. Observe the route crash/error boundary.

What is the expected behavior?

The Archived conversations page should render local archived conversations, or an empty/error state, without crashing. In API-key auth mode, ChatGPT-only archived task fetching should either be skipped or its 401/403 result should be fully isolated from the local archived conversation UI.

Additional information

A local investigation suggests this is not caused by malformed local archived thread records:

  • The app-server thread/list response completes successfully immediately before the React error boundary fires.
  • Local archived thread storage has non-null/non-empty title/preview fields.
  • The v2 Thread API shape exposes name and preview, not title; the frontend archived page normalizes local threads into its own { title } entry shape.
  • The archived cloud task query in the current bundle appears to catch 401/403/404 and return an empty page, so the 401 itself should not be enough to crash.

The likely issue is a frontend data-shape/cache assumption in the archived conversations page or shared thread list atoms. The current bundle contains unsafe title reads in the archived list dependency graph, including:

e.title.localeCompare(t.title)

and a shared local thread atom comparison similar to:

t.conversation.title === m.title

If a stale or malformed runtime/cache entry reaches either path, the whole settings route crashes instead of defensively rebuilding/filtering the entry.

View original on GitHub ↗