Skip to content

Remote SSH threads disappear or fail to open because pinned-thread hydration is routed to the local app server #33359

Open

Description

@burmjohn

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

  1. Configure a Codex-managed SSH host and save at least one remote project.
  2. Open the remote project and create a thread.
  3. Pin that remote thread.
  4. Switch to a local project or close Codex while the local host is the initial/default context.
  5. Restart Codex.
  6. Observe the pinned remote thread section/sidebar before the remote SSH app server finishes connecting.
  7. 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_hydration or source=thread, method=thread/read, errorCode=-32600, and thread 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.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    app-serverIssues involving app server protocol or interfaces
    on Jul 15, 2026
  2. burmjohn commented on Jul 15, 2026

    @burmjohn
    Author

    The desktop sidebar/pinned-thread hydration path treats threadId as globally unique and/or uses the current/default app-server connection instead of the thread's owning hostId. During startup, local becomes ready first. Bare persisted pinned IDs are immediately hydrated against local. Remote initialization happens afterward, and there is no reliable re-hydration/reconciliation that restores all failed pinned entries. A later route or host switch can again omit hostId, producing the same interactive failure even while the remote server is connected.

  3. github-actions commented on Jul 15, 2026

    @github-actions
    Contributor

    Potential duplicates detected. Please review them and close your issue if it is a duplicate.

    Powered by Codex Action

  4. burmjohn commented on Jul 16, 2026

    @burmjohn
    Author

    Feedback ID: 019f6629-02a8-7b71-b630-34a620bb18d9

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 workingremote

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions