Remote SSH threads disappear or fail to open because pinned-thread hydration is routed to the local app server
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- rust
- Domain
- desktop, networking
Research direction
Start with the desktop logs for source=thread_hydration and method=thread/read, then inspect how pinned thread IDs from %USERPROFILE%\.codex\.codex-global-state.json are routed after startup. Reproduce with a remote SSH thread while the local host is active, comparing thread/list or thread/search host IDs with the failing read. Done means remote pinned threads route to the correct host and remain represented when that host is unavailable.
Written by the indexing model from the issue text.
Description
Product: Codex desktop app for Windows
Area: Remote SSH connections, thread sidebar, pinned threads, cross-host routing
Severity: High / data-loss appearance; persistent workflow disruption
Frequency: Repeatedly reproducible, including on the current app startup
Actual data loss: No server-side deletion observed. The threads remain discoverable through cross-host thread listing/search and become readable when requests are routed to the correct remote host.
Environment
- Windows Codex package:
OpenAI.Codex_26.707.9981.0_x64 - Runtime release reported by the active desktop log:
26.707.72221 - Codex core/command runner:
0.144.2 - Remote type: Codex-managed SSH connection
- One managed SSH host, 21 saved remote projects
- Six pinned remote thread IDs persisted in local global state
- Local state file:
%USERPROFILE%\.codex\.codex-global-state.json - Desktop logs:
%LOCALAPPDATA%\Codex\Logs\2026\07\... - Investigation date: 2026-07-15 (America/New_York)
Expected behavior
Remote threads should remain visible and openable after restarting Codex, switching between local and remote projects, or temporarily losing the SSH connection. If a remote host is offline, the UI should preserve the thread entry and show an explicit unavailable/offline state. It should not omit the thread, treat it as nonexistent, or route its ID to another host.
This matches the documented product model:
- Remote connections support continuing existing tasks and switching between connected hosts and tasks.
- A disconnected or sleeping host makes remote access temporarily unavailable; it does not delete tasks.
- Pinning changes where a task appears in the sidebar; it does not change task identity or accessibility.
- The documented sidebar troubleshooting paths are Chronological filtering and Archived tasks. Neither explains these failures, and the affected threads are not archived.
Actual behavior
On app startup or after returning to a local-host context, remote pinned threads disappear from the sidebar or fail to open. The desktop client logs thread/read failures with JSON-RPC error -32600 and message thread not loaded: <remote-thread-id>.
The same remote thread IDs are subsequently returned by cross-host thread/list or thread/search with the correct remote hostId. When explicitly read through that remote host, they succeed. This demonstrates that the threads still exist and that the failure is client-side host routing/hydration, not deletion.
Minimal reproduction
- Configure a Codex-managed SSH host and save at least one remote project.
- Open the remote project and create a thread.
- Pin that remote thread.
- Switch to a local project or close Codex while the local host is the initial/default context.
- Restart Codex.
- Observe the pinned remote thread section/sidebar before the remote SSH app server finishes connecting.
- Try to open the remote pinned thread from the local-host view.
Result
- The remote thread may be absent, may lose its pinned/sidebar representation, or may fail to open.
- The log shows
source=thread_hydrationorsource=thread,method=thread/read,errorCode=-32600, andthread not loaded. - Searching/listing across connected hosts still returns the thread with the remote
hostId. - Reading the thread after resolving/routing to the remote host succeeds.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- Avg merge
- 1m
- Merged PRs (30d)
- 1k
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from openai/codex
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug CLI windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
macOS sandbox blocks hw.optional.arm64 sysctl, causing Flutter to misdetect Apple Silicon as x64 Openbug CLI sandbox
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bug CLI TUI
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
CLI config enhancement skills
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
A-linter
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
oxc-project/oxc#26863 ·