Codex Desktop: SSH remote Archived conversations page drops remote archived threads
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.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗