codex - 💡(How to fix) Fix Codex Desktop sidebar title cache does not update after durable thread title repair

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Codex Desktop can keep showing a stale non-empty thread title in the visible sidebar after the durable local thread metadata has already been repaired. The durable SQLite and session_index.jsonl state can contain the corrected title, but the mounted sidebar row may continue to show the older title, for example Resume thread.

This looks like a renderer-side title cache invalidation gap rather than SQLite/session-index corruption.

Error Message

  1. A local title-repair guard updates durable thread metadata in ~/.codex/state_5.sqlite and appends/repairs matching records in ~/.codex/session_index.jsonl.
  2. Local verification confirms the durable thread title is corrected and SQLite integrity checks pass.
  3. The visible Codex Desktop sidebar can still show the previous non-empty title for the same thread.
  4. Toggling/remounting the sidebar is not sufficient when the stale cached row already has a non-empty title.

Root Cause

Local recovery tooling can make durable metadata correct, but operators use the visible sidebar to resume project work. If the UI continues to display stale low-signal titles, recovery and handoff workflows remain confusing even though the underlying metadata has been repaired.

Code Example

if (cached.has(conversationId)) {
  update(conversationId, item => {
    if (!item.title && listedTitle) item.title = listedTitle;
  });
  return;
}

---

if (listedTitle && item.title !== listedTitle) item.title = listedTitle;
RAW_BUFFERClick to expand / collapse

Summary

Codex Desktop can keep showing a stale non-empty thread title in the visible sidebar after the durable local thread metadata has already been repaired. The durable SQLite and session_index.jsonl state can contain the corrected title, but the mounted sidebar row may continue to show the older title, for example Resume thread.

This looks like a renderer-side title cache invalidation gap rather than SQLite/session-index corruption.

Environment

  • Product: Codex Desktop
  • App version observed locally: 26.527.31326 (bundle build 3390)
  • Platform: macOS 26.4.1, arm64
  • Date observed: 2026-05-31

Observed behavior

  1. A local title-repair guard updates durable thread metadata in ~/.codex/state_5.sqlite and appends/repairs matching records in ~/.codex/session_index.jsonl.
  2. Local verification confirms the durable thread title is corrected and SQLite integrity checks pass.
  3. The visible Codex Desktop sidebar can still show the previous non-empty title for the same thread.
  4. Toggling/remounting the sidebar is not sufficient when the stale cached row already has a non-empty title.

Representative local evidence, redacted:

  • Thread id: <thread-id>
  • Durable SQLite title: Ecobee - Resume backend and frontend review
  • User-visible sidebar title remained: Resume thread
  • The visible Codex embedded app-server process had ~/.codex/state_5.sqlite open, so this did not appear to be a hidden alternate database.

Expected behavior

When the authoritative listed/durable title for a thread changes, the Codex Desktop sidebar should repaint the corresponding visible row without requiring unsupported renderer-state manipulation or a full app reset.

Implementation clue from local inspection

Local inspection of the installed app bundle suggested that the recent-conversation refresh path only updates an existing cached conversation title when the cached title is empty. In pseudocode, the observed behavior looked equivalent to:

if (cached.has(conversationId)) {
  update(conversationId, item => {
    if (!item.title && listedTitle) item.title = listedTitle;
  });
  return;
}

That means a stale non-empty label such as Resume thread can survive even when the authoritative listed title differs.

A safer behavior would be to update when the authoritative title differs, for example:

if (listedTitle && item.title !== listedTitle) item.title = listedTitle;

Requested support

Any first-class supported path would solve this for local recovery tooling:

  1. Make the recent-conversation refresh path overwrite stale cached titles when the authoritative listed title differs.
  2. Expose a supported desktop/app-server IPC route that forwards a title update to the renderer for a specific host/thread/title.
  3. Connect the visible desktop app-server to the supported title-update notification path used by the remote-control app-server, if that is intended to be the canonical route.
  4. Document the supported cache invalidation path if one already exists.

Why this matters

Local recovery tooling can make durable metadata correct, but operators use the visible sidebar to resume project work. If the UI continues to display stale low-signal titles, recovery and handoff workflows remain confusing even though the underlying metadata has been repaired.

Safety note

A synthetic renderer event approach was tested locally and rejected because it interfered with active thread update streams. This report is asking for a first-class app-supported title-cache refresh/invalidation hook rather than unsupported manual renderer manipulation.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

When the authoritative listed/durable title for a thread changes, the Codex Desktop sidebar should repaint the corresponding visible row without requiring unsupported renderer-state manipulation or a full app reset.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

codex - 💡(How to fix) Fix Codex Desktop sidebar title cache does not update after durable thread title repair