Codex App SSH remote project shows "No chats" while remote threads exist in state DB
What version of the Codex App are you using?
Codex App: 26.608.12217 on macOS<br>Bundled Codex CLI: 0.138.0-alpha.7<br>Local standalone CLI: 0.136.0<br>Remote Linux Codex CLI/app-server: 0.137.0
What platform is your computer?
Local: macOS arm64<br>Remote: Linux x86_64 SSH host<br>Connection type: Codex App SSH remote project
What issue are you seeing?
A saved SSH remote project is online in the Codex App sidebar, but the project shows No chats. The conversations are not lost: they still exist on the remote host under ~/.codex and in the remote state_5.sqlite database.
The affected remote project is a Linux SSH project at a path shaped like:
/data/workspace
Remote DB inspection shows active threads for that project:
sqlite3 -readonly ~/.codex/state_5.sqlite \
"select cwd, archived, count(*) as n, max(datetime(updated_at, 'unixepoch')) as last_utc
from threads
where cwd='/data/workspace'
group by cwd, archived;"
cwd archived n last_utc
/data/workspace 0 32 2026-06-10 02:30:49
/data/workspace 1 1 2026-06-08 04:51:43
Example remote thread still present and unarchived:
id title cwd archived
019eaf56-ac93-73f0-8d95-c47c7faf7e76 <redacted title> /data/workspace 0
The remote durable files also exist:
~/.codex/session_index.jsonl
~/.codex/sessions/
~/.codex/archived_sessions/
~/.codex/state_5.sqlite
Counts observed on the remote host:
~/.codex/sessions: 166 jsonl files
~/.codex/archived_sessions: 27 jsonl files
~/.codex/session_index.jsonl: 138 lines
~/.codex/state_5.sqlite: 193 total threads, 166 active, 27 archived
The remote DB integrity checks pass:
sqlite3 -readonly ~/.codex/state_5.sqlite 'pragma integrity_check;' # ok
sqlite3 -readonly ~/.codex/state_5.sqlite 'pragma quick_check;' # ok
What steps can reproduce the bug?
- Open Codex App on macOS.
- Connect to a Linux SSH remote project.
- Use the remote project normally and create multiple conversations.
- Later reopen/reconnect to the same remote project.
- The project is shown as online in the sidebar, but the project displays
No chats. - SSH into the remote host and inspect
~/.codex/state_5.sqlite,~/.codex/session_index.jsonl, and~/.codex/sessions/; the threads are still present and unarchived.
Expected behavior
Codex App should display the existing unarchived remote project threads in the sidebar/history list for the SSH remote project.
Actual behavior
Codex App shows No chats for the remote project. Search in the app also does not find known remote thread titles, even though those threads exist on the remote host and are unarchived.
Additional diagnostics
Mac local App state appears to have partial remote-thread state but missing sidebar/project mapping:
- The local
.codex-global-state.jsonhas the remote project entry and host id. - It also contains
heartbeat-thread-permissions-by-identries for remote thread ids. - But
thread-workspace-root-hintshas no entries for those remote thread ids, including the latest remote thread id above. remote-project-connection-backfill-completedistruelocally.
I attempted a service-layer restart without modifying session files or project files:
codex remote-control stop- stopped stale SSH
app-server/app-server proxyprocesses fordesktop-ssh-websocket-v0.sock - removed stale app-server socket/lock files
codex remote-control start- let the macOS Codex App reconnect and recreate the SSH app-server/proxy
After restart:
- remote
state_5.sqlitestill showed the same/data/workspacethread counts - the Codex App still showed no remote threads
- app search still did not find known remote thread titles
- local
thread-workspace-root-hintsstill lacked the remote thread ids
This looks like a remote sidebar/history hydration or project/thread hint backfill issue rather than data loss.
Related issues
This seems closely related to:
- openai/codex#22438
- openai/codex#25092
- openai/codex#22796
10 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Update: I found a local workaround on the affected macOS machine.
Quitting Codex App and moving aside the Desktop UI state file fixed the sidebar for this SSH remote project. After reopening Codex App and reconnecting to the same remote project, the remote chats became visible again.
Workaround used:
This supports the earlier diagnosis that the remote threads were intact and the failure was in the macOS App's local Desktop/sidebar state. The reset removed/recreated local UI state, after which the App rebuilt the remote project chat list correctly.
Same bug, can confirm that workaround works!
I can reproduce a very similar failure mode, but with macOS -> macOS Remote Control rather than SSH remote.
Environment / setup:
administrators-Mac-mini.local0.142.5on both local and remote-control hostWhat happened:
administrators-Mac-mini...with a red error badge, while Settings > Connections still showedadministrators-Mac-mini.localas green/Connected.``
text
``remote control app-server stream sequence gap detected
Codex app-server initialize handshake timed out
OpenClaw,DontPressThis,Skills, etc.). It only showed local chats.Additional diagnostic signal from inside the MacBook Codex app:
list_threadscould see the remote threads under the healthy remote-control host id, including examples like:Check Hermes connections(cwd=/Users/administrator/Documents/OpenClaw)Investigate and fix the issue(cwd=/Users/administrator/Documents/OpenClaw)Update Update Machine(cwd=/Users/administrator/Documents/DontPressThis)Implement ClickUp spec(cwd=/Users/administrator/Documents/LinksBabe.com)navigate_to_codex_page/ direct thread navigation successfully openedCheck Hermes connectionsfrom the MacBook.list_projectsreturned an empty project registry:``
json
``{"schemaVersion":1,"projects":[]}
list_threadsstill saw remote threads cleanly, but the visible sidebar/search still did not show them because the project registry remained empty.This looks very consistent with the issue described here: data/thread state is present and direct navigation works, but the Desktop sidebar/search project mapping or hydration layer is broken. In my case, the trigger seemed to be removing a stale duplicate Remote Control host/project entry after repeated app-server handshake failures.
Related issue that matches the Mac mini Remote Control / handshake side of the repro: #29262.
I may be seeing the same class of issue, but with ChatGPT mobile Remote Control targeting the local Mac itself, not an SSH remote project.
Environment
26.623.101652Released: Jul 3, 2026
codex-cli 0.142.5Symptom
Remote Control works while connected, but the resulting threads are not discoverable later.
After using ChatGPT mobile Remote Control to either continue an existing thread or create a new one:
codex resumereports no resumable conversations./resumeinside the CLI also reports no resumable conversations.Local persistence checks
The local Codex state is updated after mobile Remote Control interactions.
I observed updates to files such as:
I also inspected
~/.codex/state_5.sqlite.The database contains a
threadstable, and that table contains persisted thread records.I am not pasting raw thread rows because fields such as
title,first_user_message,preview,cwd,rollout_path, and repository metadata may contain private project or conversation content.Safe aggregate query:
Result:
I also checked distinct
sourcevalues without exposing thread content.Observed values:
The historical file mentioned in some older reports does not exist in this environment:
Why this seems related
This does not look like complete data loss or a failed Remote Control connection.
The local SQLite state contains thread records, and the state WAL is updated after mobile interactions. However, the normal history/resume surfaces behave as if there are no resumable threads.
Compared with the original SSH remote report, this reproduction uses a simpler setup:
So this may point to a more general thread/sidebar/history hydration or indexing issue, rather than something specific to SSH remote projects.
I can still reproduce this class of bug on the new ChatGPT desktop app that now hosts Codex.
Environment
ChatGPT.app/ bundle idcom.openai.codex26.707.31123build5042codex-cli 0.142.3codex-cli 0.144.0Additional failure mode
This is not only an all-or-nothing
No chatsstate. I am also seeing partial/stale sidebar hydration:~/.codex/state_5.sqliteand was updated today.~/.codex/sqlite/codex-dev.dblocal_thread_catalogtable for the SSH host.local_thread_catalog, but theirsource_updated_atvalues are several days behind the remotethreads.updated_atvalues, so the Mac sidebar ordering/history is stale..codex-global-state.jsoncan still contain title/order/project state for the affected thread, whilelocal_thread_cataloghas no corresponding row. That leaves the sidebar in a half-hydrated state: the thread is real and can be opened/resumed by id, but it does not reliably appear in the project sidebar.Path canonicalization signal
The remote thread rows have
cwdvalues using the host's physical path, shaped like:The Mac remote project is registered through the SSH project picker using the logical/symlinked path, shaped like:
The two paths refer to the same directory on the SSH host, but the sidebar/catalog behavior appears to treat them as different project roots in at least some hydration/backfill paths.
Safe diagnostic shape
The mismatch can be observed by comparing remote
state_5.sqlitewith the Mac local catalog:Observed result:
local_thread_catalog: missing that thread entirely.Expected
When an SSH remote project reconnects, the desktop app should reconcile the remote
threadssource of truth into the locallocal_thread_catalog, normalize equivalent remote paths, and update the sidebar ordering/titles without requiring a manual restart or local DB repair.Actual
The remote session data is intact, but the Mac sidebar/local catalog remains stale or partially missing. This persists on the new
ChatGPT.appdesktop build26.707.31123.This looks related to the original issue here and also to #30520: not data loss, but remote thread catalog/sidebar hydration not being invalidated/refetched reliably, with an additional path-canonicalization edge case.
same problem
After restarting Codex Desktop following today’s update, all Remote SSH projects now show “No tasks,” not only the previously affected project. The threads still exist and are returned by global thread search, and their cwd now matches the registered project paths exactly. This appears to be a sidebar project/thread indexing or cache-rebuild regression after restart, rather than deleted or archived threads.
I am experiencing a closely related issue on Codex Desktop for Windows with a stable SSH connection named
ga-server.The remote tasks are not lost:
However, the corresponding remote project (
freee) disappears entirely from the Projects section of the sidebar. Unpinning causes tasks to disappear from the sidebar again.The SSH connection itself remains configured, enabled, and online. This is not caused by switching hosts.
Additional path-normalization detail:
/home/naoto/MYWORK/freee/mnt/data/dropbox/MYWORK/freee/home/naoto/MYWORKis a symbolic link to/mnt/data/dropbox/MYWORKThis appears to be the same remote project/sidebar hydration or project-thread association failure described in this issue.
Codex feedback ID:
019f5472-7f08-7511-81f2-d09d7446e1a1Confirmed reproduction: symlink path vs physical path after restart
I completed a controlled reproduction across multiple Windows 11 clients connected to the same Linux host through Codex Desktop Remote SSH.
Environment
0.145.0-alpha.4Directory layout
The Linux host exposes the same directory through two equivalent paths:
The first path is a symbolic link to the second path. Both paths resolve to the same directory on the Linux host.
Test procedure
Result after restart
The threads were not deleted.
All threads, including the thread created under the symlink-path project before restart, appeared under the physical-path project after startup recovery/sidebar hydration.
Global search could also find and open the conversations.
Confirmed behavior
This is not simply a general synchronization failure.
Before restart, cross-device synchronization works when both clients use the exact same symlink path.
After restart, the sidebar appears to rebuild or hydrate its remote thread catalog using the physical/canonical path. The saved symlink-path project remains registered as a separate project but shows zero threads.
In other words, Codex Desktop treats these equivalent paths as different project identities:
even though they resolve to the same directory.
User-visible impact
0 threads/No tasks.Workaround confirmed
Using the same physical path on every Windows client avoids the problem in this environment:
The important requirement appears to be consistent path identity across:
cwd;Expected behavior
Codex Desktop should normalize or resolve equivalent remote paths before associating threads with saved projects.
A symlink path and its physical target should either:
Threads should not appear lost because startup hydration resolves the path differently from the saved project registration.
This appears related to the path-normalization class of issues reported in #27243, but this reproduction specifically affects Linux Remote SSH projects and is triggered by a full desktop/PC restart.