Repository navigation
Codex app tools cannot target a connected Remote Control host for projectless chat creation #50158
Description
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, build12553, bundle IDcom.openai.codex. - Running and installed source builds both report
12553; running commit69c39c76da78edf143e380efffe94e49f10da8e0. - Destination remote app-server:
0.159.2; a current successful connection is recorded.
Reproduction
- Connect a second Mac through Remote Control.
- From a local chat, call
list_threadsandread_threadwith the connected host ID. Both work; the inventory reports no unavailable hosts. - 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. - Inspect
create_thread:targetacceptsproject,projectless, orchatgptWorkCloud. The projectless branch accepts onlydirectoryName, with no destination-host field. - 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. - Attempt
handoff_threadfor that chat with the connected destination host. It returnsOnly project-scoped Git repository chats can be handed off.This is an explicit limitation, not evidence of a failed Git handoff. - 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_threadcan route through an already-discovered saved remote project ID, converting it to an internalremoteProjecttarget.- The public projectless target preserves the local default host; only the internal
remoteProjecttarget selects another host. list_projectsexplicitly fetches local projects, then consults an existing project selector. It does not explicitly fetch remote projects. Project Git metadata lookups usePromise.allSettledand discard rejected entries without reporting them.create_projectandlist_hostsschemas 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
- Codex App cross-host handoff cannot discover matching saved project #29284 concerns failure to match saved Git projects during cross-host handoff. This reproduction is projectless and stops at the documented Git-only handoff boundary.
- Codex Desktop create_thread from an SSH-host executor can spawn children on local host and lose completion handoffs #30626 concerns SSH-side child placement. This reproduction starts on a local Mac and explicitly needs a Remote Control destination.
- Remote-created Codex Desktop threads on connected host do not receive automation_update/load_workspace_dependencies #24280 concerns missing automation tools after remote creation. This report concerns the creation/discovery route itself.
The exact private host names, paths, chat IDs, prompts, and raw logs are omitted.
Activity
aetherxeg-source commentedon Oct 2, 2026
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 identityIf 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.