Codex Desktop: SSH remote Archived conversations page drops remote archived threads

Open 💬 1 comment Opened Jun 30, 2026 by jiaitanyu

Summary

In Codex Desktop on Windows, the Settings -> remote host -> Archived conversations page shows an empty state for SSH remote hosts even when the selected remote app-server has archived threads.

The remote app-server and state DB are healthy, and the remote thread can be read by ID. The issue appears to be in the Desktop archived conversations UI: the page queries archived threads, but then only passes archived thread results into the rendered list when the selected host is local.

Environment

  • Codex Desktop package: OpenAI.Codex_26.623.9142.0_x64__2p2nqsd0c76g0
  • Codex CLI / app-server version on remote: 0.142.4
  • Remote host type: SSH managed remote host
  • Remote host id shape: remote-ssh-codex-managed:<host>
  • Remote app-server command shape: codex app-server --remote-control --listen unix://
  • Remote app-server mode: persistent mode

Actual behavior

Settings -> <SSH remote host> -> Archived conversations displays the empty state (No archived chats / localized equivalent), even though the remote state DB contains archived threads and the affected archived thread can be read directly by ID through the remote host.

Normal search/list does not show the thread while it is archived, as expected. If the thread is manually unarchived on the remote CLI, it appears again in normal thread search/list.

Expected behavior

When a selected SSH remote host has archived threads, Settings -> <SSH remote host> -> Archived conversations should list those archived remote threads. The remote app-server should be queried with thread/list using archived: true, and the returned threads should be rendered for the selected host.

Evidence / suspected root cause

Inspecting the installed Desktop bundle shows that the archived-page query path exists:

listArchivedThreads() {
  return this.listAllThreads({ modelProviders: null, archived: true })
}

and listAllThreads ultimately sends thread/list with the archived parameter.

However, in the archived conversations page bundle (webview/assets/data-controls-*.js), the selected host's archived thread query result is only passed to the list renderer for the local host:

let localThreads = selectedHostId === "local" ? archivedThreads : []

Then rendering uses:

ut({
  cloudTasks,
  localThreads,
  projects,
  projectlessThreadIds,
  threadProjectAssignments,
  threadWorkspaceRootHints,
})

This means for remote-ssh-codex-managed:<host>, archivedThreads may be fetched but is replaced with [] before the list is built. That matches the UI symptom exactly: remote archived conversations page always appears empty even when the remote app-server has archived threads.

Suggested fix

Use the selected host's archived thread results for SSH remote hosts too, e.g. conceptually:

localThreads: archivedThreads ?? []

or rename the variable away from localThreads if it is intended to include host-local threads for both the machine-local host and remote app-server hosts.

Cloud task handling can remain separate if needed, but app-server archived threads should not be discarded just because selectedHostId !== "local".

Workaround

Manually unarchive the thread on the remote host via CLI, then it appears in normal thread search/list again:

codex unarchive <thread-id>

Notes

This is filed against openai/codex because the public repository README points users to the Desktop app experience via Codex App. If Desktop UI issues belong elsewhere, please route accordingly.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗