Codex Desktop Archived Chats page discards SSH remote archived threads

Open 💬 5 comments Opened Jun 23, 2026 by yanggs07

What version of the Codex App are you using?

Local macOS Codex Desktop: 26.616.71553 (CFBundleVersion 4265)
Bundled local CLI: codex-cli 0.142.0
Remote Linux CLI/app-server: codex-cli 0.141.0

What platform is your computer?

Local: macOS arm64 Codex Desktop
Remote: Linux SSH managed remote project

What issue are you seeing?

Settings > Archived Chats does not show archived chats for an SSH remote host/project. The page always renders the empty state (No archived chats) even though the remote host has archived threads in ~/.codex/state_5.sqlite and ~/.codex/archived_sessions.

This is not data loss and does not appear to be a remote Codex version/config problem. The remote archive data is present.

Remote metadata check, with host/user/path details redacted:

codex --version
codex-cli 0.141.0

sqlite3 ~/.codex/state_5.sqlite \
  "select archived, count(*) from threads group by archived;"

archived=0  count=2
archived=1  count=2

sqlite3 ~/.codex/state_5.sqlite \
  "select id, title, archived, source, cwd, datetime(updated_at, 'unixepoch')
   from threads where archived=1 order by updated_at desc limit 10;"

<thread-id-1> | hello | 1 | vscode | /home/<user>/workspace | 2026-06-09 10:34:34
<thread-id-2> | <redacted title> | 1 | vscode | /home/<user>/workspace | 2026-06-06 11:05:27

find ~/.codex/archived_sessions -type f -name "*.jsonl" | wc -l
2

Expected behavior

When the selected Settings host is an SSH remote host, Settings > Archived Chats should display the archived threads returned by that host's list-archived-threads / thread/list archived:true path.

Actual behavior

The UI shows No archived chats for the remote host, despite archived rows and archived JSONL files existing remotely.

Likely root cause

I inspected the current Desktop app bundle to avoid guessing. In the extracted webview bundle, the archived chats settings page does call list-archived-threads with the selected host id:

queryKey:[`archived-threads`,t],
queryFn:()=>s(`list-archived-threads`,{hostId:t})

But when it builds the entries passed to the archived chat list, it only preserves the returned thread data when the selected host is exactly local:

let a=t===`local`?u:[]
...
A=xe({
  automationThreadIds:c,
  cloudTasks:m,
  localThreads:a,
  projects:k,
  projectlessThreadIds:new Set(r??[]),
  threadProjectAssignments:i,
  threadWorkspaceRootHints:o
})

So for any SSH remote host, the app can fetch archived threads into u, then discards them by setting localThreads to []. That makes the remote archived list empty even when the host returns data.

This looks like a Desktop archived-page bug, not a user SSH config issue and not missing archive support in the remote server.

Steps to reproduce

  1. Connect Codex Desktop on macOS to a Linux SSH remote project.
  2. Create or use an existing remote conversation.
  3. Archive that conversation from the remote project UI.
  4. Open Settings > Archived Chats and select the SSH remote host.
  5. Observe that the UI says there are no archived chats.
  6. SSH into the remote host and inspect ~/.codex/state_5.sqlite or ~/.codex/archived_sessions; the archived conversation is present.

Related issues

This is related to the broader remote history/sidebar hydration reports, especially #25092 and #27284, but this specific archived-chats failure appears to have a separate client-side cause in the Settings archived page.

Please fix this in the Desktop UI rather than expecting users to reset local state or edit SSH config. Archive is currently a destructive-feeling action for remote projects because the only recovery UI cannot see the remote archive.

View original on GitHub ↗

This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗