Skip to content

Support remote app-server threads in Desktop thread orchestration #25482

Open

Description

@JiehoonKwak

Summary

Remote-native Codex threads can be created on an SSH host, but Codex Desktop's local thread orchestration surface cannot list/read/manage those remote threads.

Repro

  1. Start from a local Codex Desktop host with an SSH remote configured.
  2. On the remote host, create a native app-server thread in a remote workspace:
ssh <host> 'cd <remote-workspace> && codex debug app-server send-message-v2 "Reply exactly REMOTE_NATIVE_OK"'
  1. The remote host creates a real Codex thread with:

    • remote cwd
    • remote rollout under <remote CODEX_HOME>/sessions/...
    • remote workspace instructions loaded
  2. From the local Desktop thread orchestration surface, try to inspect that thread:

read_thread(<remote-thread-id>) -> thread not loaded
list_threads(query: <remote-thread-id>) -> no results

Expected

Codex Desktop should be able to treat remote app-server threads as first-class thread targets:

  • list/search remote threads by host/workspace
  • read remote thread status and recent turns
  • create a remote thread with a specific remote cwd
  • send follow-up prompts to a remote thread
  • rename/title remote threads
  • pin/unpin and archive/unarchive remote threads

Actual

The remote thread exists and is durable on the SSH host, but local Desktop thread orchestration cannot see or manage it. The current workaround is to create a local child thread that runs ssh <host> ..., which works but loses native thread identity, sidebar organization, and remote workspace ownership.

Why this matters

A local Director/orchestrator thread should be able to coordinate work across SSH remote workspaces without falling back to shell-level SSH wrappers.

Related

Related but broader/different:

Activity

  1. added
    enhancementNew feature or request
    appIssues related to the Codex desktop app
    app-serverIssues involving app server protocol or interfaces
    on Jun 1, 2026
  2. github-actions commented on Jun 1, 2026

    @github-actions
    Contributor
  3. bakemocho commented on Jun 2, 2026

    @bakemocho

    This seems related to #25914, but not the same issue.

    #25914 is about the local Desktop/app-server case: a local external app-server
    client can see persisted thread history, but there is no documented way to
    discover and attach to the currently active Desktop UI thread/turn as a loaded,
    controllable target.

    This issue looks like a remote-side form of a similar targetability boundary:
    the remote thread exists and is durable on the SSH host, but the local Desktop
    thread orchestration surface cannot list/read/manage it as a first-class thread
    target.

    It may be useful for the app-server/Desktop contract to explicitly distinguish:

    • persisted thread record vs loaded controllable thread;
    • local app-server process vs remote app-server process;
    • host/workspace ownership of a thread;
    • current UI thread vs non-UI/background thread;
    • unsupported target vs unknown thread id.

    That would help both local-current-thread integrations (#25914) and remote
    thread orchestration (#25482) avoid guessing from local files, SSH wrappers, or
    sidebar/project state.

  4. yanggs07 commented on Jun 3, 2026

    @yanggs07

    Adding a concrete current-thread tool-gating repro from #26178, which looks like the same remote thread orchestration boundary from a narrower angle.

    In a Codex Desktop remote-backed thread:

    • codex_app.set_thread_title is exposed/discoverable in the model tool surface.
    • The current thread is visible in the Desktop sidebar.
    • Calling codex_app.set_thread_title for the current thread returns:
    Codex thread tools are only supported for local threads.
    

    This means the thread-management tool appears available, but the runtime rejects the call because the thread is classified as non-local. That makes it hard for skills/agents to know whether they can safely rename/pin/archive the current Desktop-visible thread. It is the same shape as #25873 for automation_update, but with thread-title management rather than automations.

    A useful fix for this umbrella issue would be either first-class support for remote-backed Desktop thread management, or a capability/status signal so remote threads do not expose tools that will later reject with a local-only runtime error.

  5. evelant commented on Jun 12, 2026

    @evelant

    You can actually connect to those threads with desktop, but only by adding a new "project" with the exact cwd of the thread in the remote ssh target. Only exact matches will show in codex desktop, which makes many remote workflows essentially unusable because it means you must create a new "project" for every single thread started remote unless your remote workflow is single-directory-only, which many are not, such as any parallel workflow.

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 interfacesenhancementNew feature or requestremote

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions