Remote-created Codex Desktop threads on connected host do not receive automation_update/load_workspace_dependencies
1. Feedback ID
019e4c10-cadb-7e70-8bf8-38245507bc2f
2. Product
Codex Desktop App / Remote Control / app-server thread/start dynamic tool provisioning.
3. Environment
- Host: always-on Mac Mini running Codex Desktop
- Client: MacBook Pro using the Codex remote workflow against the Mac Mini host
- Host project path:
~/Documents/Codex/projects/business-intake-task-system - Codex Desktop app/server version observed in logs:
26.519.41501 - CLI/session version:
codex-cli 0.133.0-alpha.1 - Platform: macOS / Darwin / Apple Silicon
Hostnames, user account paths, raw logs, databases, auth files, and unrelated prompt content are intentionally not included here.
4. Summary
Brand-new Codex Desktop threads created locally on the Mac Mini host receive the expected built-in Codex app dynamic tools:
codex_app.automation_updatecodex_app.read_thread_terminalcodex_app.load_workspace_dependencies
Brand-new threads created from the MacBook Pro remote workflow against the same Mac Mini host and same project receive only:
codex_app.read_thread_terminal
If a thread is created locally on the Mac Mini first and then continued from the MacBook Pro, the full tool set remains available. So remote continuation works, host-local thread creation works, but brand-new remote thread creation appears to persist a reduced dynamic-tool set at thread creation time.
5. Steps to reproduce
- On a Mac Mini host running Codex Desktop, open a new project thread locally for a project path such as
~/Documents/Codex/projects/business-intake-task-system. - Confirm the thread has
codex_app.automation_update,codex_app.read_thread_terminal, andcodex_app.load_workspace_dependencies. - From a MacBook Pro, use the Codex remote workflow to create a brand-new thread on the same Mac Mini host and same project path.
- Inspect the new remote-created thread's dynamic tools.
- Separately, create a thread locally on the Mac Mini first, then continue that same thread from the MacBook Pro.
6. Expected behavior
A brand-new remote-created thread on a connected host should receive the same built-in Codex app dynamic tools as an equivalent host-local thread for the same project.
If remote-created threads are intentionally not automation-capable, Codex should clearly label them as such and provide an action to create or open an automation-capable host-local thread.
7. Actual behavior
Remote-created brand-new threads look like normal user project threads but are persisted with only codex_app.read_thread_terminal. They do not receive codex_app.automation_update or codex_app.load_workspace_dependencies, so they cannot create or update Codex automations.
8. Confirmed PASS cases
Mac Mini direct via deep link
- Session:
019e5690-baaa-7161-8e15-5b3cbe023ffa - Dynamic tools:
codex_app.automation_updatecodex_app.read_thread_terminalcodex_app.load_workspace_dependencies- App-server indicator:
connection_id=0 - Heartbeat/thread permission state: present in
.codex-global-state.json
Mac Mini direct via normal Codex App UI new thread
- Session:
019e5694-641d-79a3-9447-54f86074e996 - Dynamic tools:
codex_app.automation_updatecodex_app.read_thread_terminalcodex_app.load_workspace_dependencies- App-server indicator:
connection_id=0 - Heartbeat/thread permission state: present
9. Confirmed FAIL cases
MacBook Pro remote workflow, brand-new thread on the Mac Mini host
- Session:
019e5697-260c-7d73-8941-4db90e80b7e6 - Dynamic tools:
codex_app.read_thread_terminal- Missing:
codex_app.automation_updatecodex_app.load_workspace_dependencies- App-server indicator:
connection_id=12 - Heartbeat/thread permission state: absent
Second MacBook Pro remote-created failing-pattern thread
- Session:
019e56fe-b398-7c32-8768-2f3e656d0828 - Dynamic tools:
codex_app.read_thread_terminal- Missing:
codex_app.automation_updatecodex_app.load_workspace_dependencies- App-server indicator:
connection_id=23 - Heartbeat/thread permission state: absent
10. Remote continuation result
A Mac Mini-created thread was continued from the MacBook Pro:
- Session:
019e5690-baaa-7161-8e15-5b3cbe023ffa - Dynamic tools remained:
codex_app.automation_updatecodex_app.read_thread_terminalcodex_app.load_workspace_dependencies
This shows the MacBook Pro remote client can continue and use an automation-capable thread. The failure is specific to brand-new remote thread creation.
11. Evidence
state_5.sqlitethread rows are materially identical across pass/fail forcwd,source,thread_source, model, sandbox, approval mode, CLI version, and memory mode.state_5.sqlitethread_dynamic_toolsdiffers:- host-local created threads: 3 tools
- remote-created threads: 1 tool
- Session JSONL
session_meta.dynamic_toolsdiffers on the firstsession_metaline, so the mismatch exists at or before session creation. logs_2.sqliteshows both paths usingrpc.method=thread/startandrpc.transport=stdiowithclient_name=Codex Desktopandclient_version=26.519.41501.- The visible differentiator is app-server connection identity:
- host-local creation:
connection_id=0 - remote new-thread creation: nonzero remote connection IDs such as
connection_id=12andconnection_id=23 .codex-global-state.jsonheartbeat-thread-permissions-by-idhas entries for host-created passing threads but not for remote-created failing threads.- No log evidence showed
automation_updatebeing denied or filtered by entitlement, policy, sandbox, or approval settings.
12. Important negative findings
source=vscodeis not causal. Passing and failing threads both reportsource=vscode.- GitHub Copilot Chat appears unrelated.
- No active Codex/OpenAI/ChatGPT VS Code extension or bridge was found during inspection.
- VS Code was not running during inspection.
- Remote continuation does not strip
automation_update.
13. Suspected root cause
The remote thread/start path appears to skip or use a reduced built-in dynamic-tool provisioning branch. It attaches read_thread_terminal but omits automation_update and load_workspace_dependencies, and it does not seed the same heartbeat/thread permission state that host-local thread creation seeds.
14. Workaround
Create the thread locally on the Mac Mini first, using either the Codex App UI or a deep link like:
open 'codex://threads/new?path=/Users/<user>/Documents/Codex/projects/business-intake-task-system'
Then continue that same thread from the MacBook Pro. Remote continuation preserves automation_update.
15. Scrubbed local evidence available
I can provide scrubbed excerpts from the relevant thread_dynamic_tools, session_meta.dynamic_tools, and app-server log rows if maintainers want them. I am not attaching raw logs, full JSONL files, auth files, database files, or unrelated prompt content because they may contain sensitive local context.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗