Skip to content

Codex app tools cannot target a connected Remote Control host for projectless chat creation #50158

Open

Description

@johnsilvavlogs

Summary

From a local Codex Desktop chat, the native app tools can enumerate and read chats on a connected Remote Control Mac, but list_projects exposes no projects from that host. The advertised create_thread schema has no host selector for a projectless chat. This leaves no exposed native tool route to create a dedicated projectless chat on the connected computer, although the app's New chat → Work in → Remote flow succeeds immediately.

Environment

  • Source and destination: macOS, Apple Silicon.
  • Connection: Codex Desktop Remote Control, not SSH.
  • Source app: 26.928.31416, build 12553, bundle ID com.openai.codex.
  • Running and installed source builds both report 12553; running commit 69c39c76da78edf143e380efffe94e49f10da8e0.
  • Destination remote app-server: 0.159.2; a current successful connection is recorded.

Reproduction

  1. Connect a second Mac through Remote Control.
  2. From a local chat, call list_threads and read_thread with the connected host ID. Both work; the inventory reports no unavailable hosts.
  3. Call list_projects({}). Repeated calls return source-local projects and shared ChatGPT projects, with zero destination-host projects. Its advertised contract says it lists local, remote, and ChatGPT projects.
  4. Inspect create_thread: target accepts project, projectless, or chatgptWorkCloud. The projectless branch accepts only directoryName, with no destination-host field.
  5. Create a projectless setup chat with a host guard. The result correctly reports hostId: local; the guard confirms it is on the source Mac and performs no changes.
  6. Attempt handoff_thread for that chat with the connected destination host. It returns Only project-scoped Git repository chats can be handed off. This is an explicit limitation, not evidence of a failed Git handoff.
  7. Use the native UI's New chat → Work in → Remote, select the connected Mac, and send the same guarded setup prompt. The resulting chat is immediately listed under the correct remote host and verifies its execution there.

Expected

Expose a supported native tool route for creating a projectless chat on a specified connected Remote Control host, matching the existing UI capability. Alternatively, expose supported host discovery and remote project registration so an agent can establish a valid remote project target without UI control.

Read-only implementation evidence

Inspection of the installed bundle confirms:

  • create_thread can route through an already-discovered saved remote project ID, converting it to an internal remoteProject target.
  • The public projectless target preserves the local default host; only the internal remoteProject target selects another host.
  • list_projects explicitly fetches local projects, then consults an existing project selector. It does not explicitly fetch remote projects. Project Git metadata lookups use Promise.allSettled and discard rejected entries without reporting them.
  • create_project and list_hosts schemas exist in the installed bundle but neither Codex capability appears in this task's live tool registry, including deferred-tool discovery.
  • The source's saved remote project state contains no project associated with this particular destination. Therefore zero returned destination projects is not by itself proof of a connection failure or a remote-project listing regression.

A supported workaround is to register a destination folder as a saved remote project through the native UI, then use its discovered project ID. Direct remote projectless UI creation also works. Neither avoids UI control with the currently exposed native tools.

Actual and workaround

Remote chat reads and UI creation work, while native project discovery and projectless host selection do not provide that route. The task required Computer Use solely to launch the remote chat. Subsequent native remote chat reads and title updates work.

No restart, reconnection, database edit, cache patch, or security change was performed. Active chats were preserved. The guarded source-local staging chat made no setup changes and was archived after the remote launch succeeded.

Related reports

The exact private host names, paths, chat IDs, prompts, and raw logs are omitted.

Activity

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

    @aetherxeg-source

    A useful creation-time invariant here is connected host availability != execution-target binding.

    Being able to enumerate/read a remote host proves reachability, but it does not prove that a new execution context was bound to that host. For thread creation I’d make the destination an explicit immutable part of the creation receipt:

    requested host -> resolved host identity -> created thread id -> execution host identity

    If the public tool surface cannot express a remote destination for a projectless thread, that should fail before creation as target_not_expressible (or equivalent), rather than silently creating locally and relying on a later guard to discover the mismatch.

    A conformance test could issue the same projectless creation request against local and remote targets and assert that the returned thread/execution evidence carries the resolved host identity before any tool action is allowed. That distinguishes host discovery from actual placement authority.

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