Skip to content

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

Open

Description

@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.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    sessionIssues involving session (thread) management, resuming, forking, naming, archiving
    app-serverIssues involving app server protocol or interfaces
    on Jun 30, 2026
  2. Grin1024 commented on Aug 22, 2026

    @Grin1024

    Still reproducible on the latest Windows Codex Desktop available as of 2026-08-22, with a remote Linux host running codex-cli 0.147.0.

    Additional symptom: in Settings > Archived Chats, selecting the local host shows the Delete all bulk action, but switching to the SSH remote host hides/removes that action entirely. This is in addition to the remote archived-thread handling described in this issue.

    The remote host does contain archived threads, and the remote CLI exposes supported per-thread deletion through codex delete <thread-id>. This suggests host-scoped UI capability gating rather than an absence of remote data or delete support.

    Expected behavior:

    • Render archived threads returned by the selected remote host.
    • Show a host-scoped Delete all action for that remote host.
    • Route deletion to the selected remote app-server/thread store only; it must never delete local-host threads when a remote host is selected.

    This distinction may help separate the hidden remote action from cases where a visible local bulk-delete action is invoked but fails.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appapp-serverIssues involving app server protocol or interfacesbugSomething isn't workingremotesessionIssues involving session (thread) management, resuming, forking, naming, archiving

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions