Repository navigation
Dot cannot create or follow up with local Codex tasks in saved projects #49729
Description
Summary
A dot can start a local Codex task on a connected desktop, but its task-creation tool cannot select an existing saved Codex App project. A local Codex task can create a thread in that project, yet the dot then cannot read or message that project thread by its returned ID. This breaks the natural dot → project task → follow-up orchestration flow.
Reproduction
- Connect a Mac running ChatGPT/Codex Desktop to a dot and register an existing local Git repository as a Codex project.
- Ask the dot to create a local Codex task inside that saved project.
- Observe that the dot's task creation interface accepts a computer and
cwd, but exposes no project target. A task it creates directly appears projectless. - From a local Codex task, use the desktop's project-aware
create_threadwith the saved project ID. The new task is created and verified inside that project. - Give the new thread ID to the dot and ask it to read or send a follow-up message to that task.
Actual behavior
The dot-side read rejected the project thread ID with an error saying post-cutover thread ID ... unsupported placement format version 1. The dot-side send returned CloudThreadNotFoundError. The project task itself was valid and running in the correct repository. The dot could observe an external GitHub issue created by the task, but could not directly inspect or steer the task. This is a task-interface interoperability failure, not a missing local-computer connection.
Expected behavior
A dot should be able to create a local Codex task directly in a selected saved project, receive its thread ID, then read, message, and monitor that task through the same interface. At minimum, a project-aware thread created by a local Codex task should be addressable by the dot when its ID is known.
Why this matters
The project is the user's normal place to manage related coding work. A working-directory-only task may load repository AGENTS.md, but it is displayed outside the project and cannot participate in the expected project task workflow. The workaround requires a projectless launcher that creates a project task, after which the dot loses follow-up access.
Related and duplicate review
- [Windows][dot] Local task is not associated with an existing project despite matching working directory #49646 reproduces Dot-created tasks appearing outside an existing project on Windows. That overlaps with the creation/placement half of this report.
- [Desktop] Assistant-created tasks do not preserve requested Local Project destination and reasoning effort #49586 reports assistant-created tasks missing a selected local project and reasoning effort. That overlaps with placement but does not establish the Dot follow-up failure.
- Codex App cannot create visible project threads for newly initialized local directories #25818: project-scoped thread creation and visibility.
- Codex app thread-management tools not exposed despite thread creation being available #30233: inconsistent thread-management tool exposure.
The distinct failure documented here is that, after a valid project-scoped task is created and its ID returned, Dot-side read rejects it with unsupported placement format version 1 and send returns CloudThreadNotFoundError. Neither suggested duplicate reports this known-ID read/message failure. Please track that interoperability defect even if the placement behavior is consolidated elsewhere.
Observed on September 30, 2026 with a connected macOS desktop. I can provide version details and redacted task IDs if maintainers need them.
Activity
github-actions commentedon Sep 30, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
aaronjones003 commentedon Sep 30, 2026
+1, reproduced the known-ID read/message failure on a connected Windows desktop today (September 30).
The computer was reported as connected, attached, and authorized for tasks. For two existing local Codex tasks:
As a control, Dot created a separate task on that same computer, successfully read its result, and continued the same task across multiple turns. Completion notifications also worked. So local execution and follow-up work for Dot-created tasks, while access to the existing task IDs fails.
I also tested using the Dot-created task as an intermediary, but its exposed tool catalog lacked both desktop task controls and cloud_threads controls, so it couldn’t inspect or message the originals either.
xthunder0 commentedon Oct 1, 2026
+1, I’m seeing the same issue on macOS. My Mac mini is connected and authorized, but dot can’t access my existing Codex conversations even when I provide their thread IDs. Reading them returns “unsupported placement format version 1” or “version 2”, and sending a message returns CloudThreadNotFoundError.
fukaya0404 commentedon Oct 1, 2026
+1, I can reproduce the read failure for an existing local Codex conversation: “unsupported placement format version 1”.
App: ChatGPT Powered by Codex & OWL 26.928.31416 (October 1, 2026 release).
Feedback ID: 01a0f0af-0fcd-70c2-a889-7e1d9a957016
0xAISam commentedon Oct 1, 2026
Additional observation on macOS on October 1, 2026, concerning the existing-thread access failure.
Observed sequence:
CloudThreadNotFoundError/NOT_FOUND.Control: a task created by dot on the same computer was readable through that interface.
Reading another existing local conversation returned
unsupported placement format version 3. Whether that error and the not-found result share a cause is unknown.The dot's inspected tool catalog did not expose the native local-thread read/send tools, so native local continuation was not tested. Manual desktop activation, the workaround described in #33138, did not resolve the observed failure here. The exact desktop app build was not captured.
The local-access documentation describes dots controlling existing local Codex threads. Please clarify the supported route and provide an actionable diagnostic when the selected interface cannot address an existing local thread. A routing, compatibility, or access-scope explanation remains unresolved; this observation does not establish a common root cause.
alenknight commentedon Oct 1, 2026
Possible workaround for new dot-created Windows tasks
Successful in my tests with both GPT-6 Sol Light and Luna Light: direct messages worked, and file creation, read-back verification, and moving the test file to the Recycle Bin all passed. The steps below describe what worked in my setup; results elsewhere may vary.
I reproduced this on a personal account with local Windows projects, and found a partial workaround for new dot-created tasks. Existing local-thread follow-up is still broken.
What failed
unsupported placement format version 2, and send returnsCloudThreadNotFoundError. This persisted after updating the app.C:\AIas its working directory failed when I tried to send a message directly:invalid turn/start params: AbsolutePathBuf deserialized without a base path./tmp/codex-cloud-agent-######/app_servers/thread_service/workspace/C:\<your-folder>, although the Windows executor reportedC:\AI. This looks related to Dot creates Codex tasks with mixed Linux/Windows working paths, causing follow-up turns to fail #49753.What worked: step-by-step workaround
Use your own existing drive and folder. My test folder was
C:\AI; "AI" is not a required folder name.######replacing the identifier. This is a useful diagnostic check, rather than a claim that every installation will fail./tmp/.../workspace/prefix attached to a Windows drive path./) instead of backslashes (\). Do not include the/tmp/.../workspace/prefix. For example,C:\YourFolderbecomesC:/YourFolder;D:\Work\ProjectbecomesD:/Work/Project. Replace these examples with your own folder. Our successful creation call usedC:/AI. Specify the model you want as well.The important slash change is
\→/. The successful new-task request used the real drive path with forward slashes, without the Unix prefix.That sequence worked with both GPT-6 Sol Light and Luna Light. Choose a permission preset deliberately; this is not a recommendation to grant broader access than intended. I also saw the preset revert to Custom later.
Limits and Mac comparison
My working hypothesis is that Windows path handling and existing-thread routing are separate problems. These tests demonstrate a partial workaround, not a confirmed root cause.
futurenowlabs commentedon Oct 1, 2026
Additional reproduction on October 1, 2026: the same placement-format rejection occurs when dot is given a deep link to an existing Remote Control Codex thread.
Environment and scope
Observed sequence
codex://threads/<thread-id>?hostId=remote-control%3A<remote-environment-id>The result was explicitly reported as an error. Successful remote-host resolution was not independently established by this attempt.
Expected behavior and impact
An existing remote conversation that the user has authorized dot to access should be readable through a supported route. If an access, client-version, or routing requirement prevents that, the app should provide an actionable explanation or supported handoff. In this case, the fallback is to copy the relevant context manually.
This adds a remote-thread/deep-link case to the known-ID read failure described here. A common root cause is not established. My earlier #42331 concerns an explicit-host wait-route inconsistency, and #36673 concerns missing registered handlers; neither establishes the cause of this placement-format rejection.
All actual thread, remote-environment, server, and conversation identifiers and private project/conversation contents are omitted.
agbushuo commentedon Oct 1, 2026
Additional Windows reproduction on October 1, 2026, with a verified desktop package version and a working dot-created-task control.
Environment
OpenAI.Codexversion 26.928.3736.0, Store-signed.Get-AppxPackage, the package manifest, and the runningChatGPT.exepackage location. This is the app package version, not the Chromium executable version.0.159.2(separate from the desktop version).Reproduction and errors
I asked dot to keep using my existing configured development, Windows acceptance-test, and crawler conversations, and provided their exact
codex://threads/...links where available.The attempts to read existing desktop conversations returned these errors (IDs redacted):
A send attempt to the existing coordinator conversation returned:
The original conversations remain present in the desktop app. The dot and its delegated local task did not expose the desktop-native thread read/wait/send tools when their available tool catalogs were checked. This is an observed capability difference, not an established root cause.
Successful control
On the same connected computer, a task newly created by dot successfully read the local repository, performed Windows-native builds and targeted tests, accepted several follow-up turns, and returned results. This confirms local execution and dot-created-task follow-up worked in this session; it does not solve continuation of the original configured conversations.
Version caveat and requested clarification
The current local-access deployment guide lists desktop version 26.929 or higher, while the tasks documentation explicitly describes continuing existing local Codex tasks. My reproduction is on 26.928.3736.0; I have not tested 26.929 or a later build and am not claiming the problem persists there.
Please clarify whether 26.929 resolves this known-ID continuation failure, how affected Store users should obtain the supported build when no update is offered, or which supported route preserves and continues the existing conversations. An actionable version/access diagnostic would be much more useful than a placement-format error or a not-found result.
Private conversation IDs, local paths, project names, source code, and raw logs are omitted. This adds version/update-availability evidence to the existing report rather than opening a duplicate.
shieldsnapreport-maker commentedon Oct 1, 2026
Additional Windows reproduction on October 1, 2026. Reporting only sanitized diagnostic findings; no conversation contents or private files are included.
Please clarify the supported route for dot to read existing local desktop conversations, and whether the missing native tool exposure in delegated desktop tasks is expected. If 26.929+ is required, is it available to affected Windows Store users, and is there a verified fix for these exact errors in that version?
No resets, app restarts, permission changes or updates were performed for this reproduction. No claim is made that the version number alone establishes the cause.
JAMESHPF commentedon Oct 1, 2026
Additional macOS reproduction on October 1, 2026, around 13:44–13:46 UTC: dot could not read an existing local Codex conversation using the thread ID from its desktop deep link.
The read returned:
AppServerBackendRequestError: Client specified an invalid argument: post-cutover thread ID [REDACTED] has unsupported placement format version 2
After refreshing the Mac connection, the environment was confirmed connected, attached, and authorized for tasks. Retrying the read for the same thread returned the same error.
The exact desktop app build was not captured. This observation is limited to the read failure; message sending was not tested. Whether this version 2 error shares the original report's root cause is unknown. Please clarify the supported way to read an existing local conversation or the app version needed to resolve this error.
alenknight commentedon Oct 1, 2026
Hey @shieldsnapreport-maker, could you give the workaround I posted above a try on a fresh Windows task and let me know how it goes? I used the real folder path with forward slashes (like C:/YourFolder) and manually selected my intended permission preset. I see your new tasks already work, so I’m curious whether you used a similar setup. It hasn’t fixed access to existing local threads for me.
29 remaining items
ngderf commentedon Oct 6, 2026
Follow-up to my 06:22 UTC result: a fresh dot-created Mac task successfully read the same original local conversation on October 6, 2026.
This provides a reading workaround through an additional helper task while preserving the original target conversation. It did not repair the old relay. The parent dot's latest direct read was the 06:22 failure with “unsupported placement format version 1”; direct access was not retested after creating the new helper.
send_message_to_thread and wait_threads were exposed but not exercised in the new task. This does not establish end-to-end continuation, cold-resume reliability, or durable recovery. The assistant made no configuration, cache, model or process changes to achieve the fresh-task result. The old-versus-new tool-exposure comparison is also being reported in #50800. Private identifiers, paths and conversation content are omitted.
aetherxeg-source commentedon Oct 6, 2026
The newer Windows/macOS reproductions narrow the failure boundary further.
A useful distinction now appears to be:
thread existence/validity != addressability from every control surface
Across the recent reports, the same existing local conversation can remain valid and readable through native desktop/CLI routes, and a fresh dot-created helper can sometimes expose native
list_threads/read_thread/send_message_to_threadand successfully read that target. At the same time, the parent dot's directcloud_threads.read/send_messagepath still rejects or cannot find the same known thread.That makes thread corruption or a blanket local-computer connectivity failure less likely as the whole explanation. It looks more like a split among:
cloud_threads;I would make that split diagnosable rather than infer it from
NOT_FOUND/ unsupported-placement errors.A strong contract would be:
NOT_FOUNDsolely because one control surface cannot interpret its placement;A compact conformance matrix would cover:
The latest helper-task successes are valuable positive controls: they show that the target conversation can remain addressable through another authorized route while the parent route fails. That should make the routing/placement boundary easier to isolate.
jeonghakhui-art commentedon Oct 6, 2026
I am seeing the same placement problem as part of a larger continuity issue when using Dot-created Work on Windows.
The practical workflow impact is:
The unexpected cost is not only task placement; it is the migration cost after substantial work has already accumulated under Dot.
A good recovery path would be one of:
I also added a related continuity note to #51049, where the direct desktop follow-up path for Dot-created tasks is being tracked.
ngderf commentedon Oct 6, 2026
An additional positive control from my macOS case: after the successful reads reported above, the same fresh helper also successfully sent a bounded coordination message to the original local conversation, and the original conversation returned a response.
This extends the observed workaround from reading to sending and receiving a response. It does not establish that the parent dot’s direct routing is repaired, that the old helper’s missing tools have recovered, or that cold-resume reliability is resolved. No new direct-parent or old-helper retest is claimed here.
Your distinction between thread validity, parent routing, and delegated native-tool availability fits these observations, although the root cause remains unconfirmed. Private thread identifiers and conversation contents are omitted.
nicocostac commentedon Oct 6, 2026
Adding the user-provided feedback/reference ID for my existing report above:
01a0f2ba-86d9-7581-a39b-e4666f8bd0e4.Previous report: #49729 (comment)
This identifier is supplied for support correlation; its status as a telemetry feedback ID has not been independently verified.
omarpinarecords commentedon Oct 7, 2026
Additional October 7 confirmation of the existing-Local-task read problem: a connected and authorized Mac and an explicitly identified task did not prevent
cloud_threads.readfrom rejecting placement format version 2. This fresh observation concerns reading; it does not claim an independently tested send failure or a failed Local execution.I opened #51722 to document the related support-matrix/documentation gap, with official sources and links to these existing reports. Documentation describes continuation of existing Local Codex tasks, subject to permissions/connectivity; a new intermediary task is not equivalent to restoring direct access to the original task. The resolved new-Work-thread-creation incident does not by itself verify this existing-task path.
A sanitized web feedback submission was attempted at approximately 15:23 UTC on October 7. The form closed without exposing a feedback ID or retained success confirmation, so no feedback ID is claimed here. Private task IDs, local paths, logs and project information are omitted.
imyhxy commentedon Oct 9, 2026
Fix in
ngderf commentedon Oct 9, 2026
@imyhxy Thanks for the update. I’m on macOS, and Codex currently shows version 26.1007.21159 with no further update available. Is 26.1007.21434 already publicly available, or is it on a different release channel?
imyhxy commentedon Oct 9, 2026
@ngderf I'm on Ubuntu 24.04, I updated from the public channel.
nokiyliao commentedon Oct 10, 2026
Additional read-only observation on macOS, 2026-10-10 around 06:34–06:37 UTC, reported with the affected user's authorization.
The user supplied an existing Codex session's exact
codex://threads/<redacted>deep link and asked dot to explain its current activity. The computer discovery result showed the selected Mac asconnected,attached: true, andis_authorized_for_tasks: true.Observed from dot:
cloud_threads.readfailed before returning any conversation content:AppServerBackendRequestError: thread not found: <redacted>with
error_code: UNKNOWN.cloud_threads.list_threads(children_only=false)was fully paginated: 52 active entries, with no matching ID. The separately queried archived list returned 0 entries.This differs from the original report's placement-format error and from the send failure in #52222: this observation concerns an exact-ID read returning generic not-found, plus absence from the available account-wide list. We have not established a common cause. The target's local placement, project association, current execution state, and account/workspace mapping were not independently inspectable through this failed route; the supplied link alone does not prove those details.
Official documentation says an existing local Codex task can be continued on a connected computer (https://learn.chatgpt.com/docs/dots/tasks-and-memory), and the October 5–9 update describes following existing Codex threads (https://learn.chatgpt.com/docs/whats-new/dots-october-9-2026).
Please clarify the supported lookup/routing path and eligibility requirements for user-supplied existing session links, and return an actionable diagnostic if the selected thread is outside that route. Computer connectivity alone appears insufficient to explain or resolve this observed lookup failure.
Exact app/OS builds were not captured during this check. This is one observed incident, not a deterministic fresh-account reproducer or a claim of a service-wide outage. Public details intentionally omit thread/device/account identifiers, local paths, private conversations and raw logs. No sync reset, permission change, session migration, or other recovery mutation was performed.
ngderf commentedon Oct 10, 2026
Update after installing Codex macOS 26.1007.30912 (October 10 release).
A limited read-only retest at approximately October 10, 2026, 20:22 UTC / October 11, 04:22 HKT succeeded through the existing helper-mediated route: the coordinator could message the implementation task, and both task contexts completed a get_usage_limits({}) call.
This did not retest the failing direct parent-dot access/saved-project placement path, so it does not establish that #49729 is fixed. It also did not retest the old task with the missing native tool namespace in #50800.
We observed a separate telemetry discrepancy on the same connected Mac:
The null values were present in the returned response, not introduced by caller parsing. We have not established whether this is related to the connection issue, and are not treating null as an explicit permission denial. The same discrepancy was observed before the update and persisted in this retest. No settings changes, credit resets or project execution were performed during the check.
Could you clarify whether the differing field availability is expected across these task contexts, or whether it should be filed as a separate issue? Account identifiers and other private data are omitted.
flamingice commentedon Oct 12, 2026
Confirmed on October 12, 2026, with a connected, authorized Mac:
cloud_threads.readfailed for two user-created local threads (one older, one created today):AppServerBackendRequestError: Client specified an invalid argument: post-cutover thread ID [REDACTED] has unsupported placement format version 1.cloud_threads.send_messageto the older thread returnedCloudThreadNotFoundError/NOT_FOUND.Environment, collected afterward: macOS 27.2 (26B5091g), arm64; installed ChatGPT Desktop 26.1007.30912 (20156); separately installed Codex CLI 0.160.0.
Confirming the previously reported macOS helper workaround: a dot-created local helper with native thread tools read both affected threads and relayed one authorized coordination message to an idle target, which acknowledged receipt without interruption. Direct parent-dot access still failed.
yxt2050-oss commentedon Oct 12, 2026
Working route confirmed on Windows (Codex desktop 26.1007.2314.0, CLI 0.162.0-alpha.17.2): dot → existing local thread via a dot-created computer task
Parent dot context still cannot reach existing local threads directly, but a full dispatch → execute → auto read-back loop now works through a dot-created task on the connected computer.
Parent dot (still broken, server-side):
typeof tools.mcp__codex_app__list_threads / read_thread / send_message_to_threadall return"undefined", and a prefix match onmcp__codex_app__returns[].mcp__codex_apps__cloud_threads_readon an existing local thread ID fails withpost-cutover thread ID … has unsupported placement format version 1. Send returnsNOT_FOUND. This persists after reconnecting the computer (Allow access) and restarting dot.Dot-created computer task (works):
cloud_threadscreate and that computer's environmentId.mcp__codex_app__*tools, includinglist_threads,read_thread,send_message_to_threadandwait_threads.read_threadwithhostId: "local"reads the existing local thread (statusidle).send_message_to_threadwithhostId: "local"delivers a side-effect-free prompt with a unique tag. The existing thread runs a new turn: its input arrives as<codex_delegation>withsource_thread_idset to the helper task, it replies with the correct result, andtask_completefires (about 5 s).I verified the target turn independently in the local rollout JSONL (
function_call_outputfromsend_message_to_thread, namespacecodex_app, thenfinal_answerandtask_complete). The original thread's context is preserved.Note: an older dot-created "durable" task on the same machine still reports
unknown MCP server/ 0 tools, while a freshly created one has the full catalog. If your helper task lacks the tools, create a new one rather than reusing an old one.Not yet tested: persistence after a full desktop cold restart or app update.
This is a workaround, not a fix. The parent dot still lacks the native tools, and the cloud route still rejects local placement IDs.
ArTeGaS commentedon Oct 13, 2026
Another Windows reproduction on October 13. My laptop is connected and authorized for tasks. Reading and following up on Dot-created tasks works, including tasks whose commands execute on that laptop.
However, when I manually start an ordinary local Codex chat and give its thread link to my Dot, cloud_threads.read fails with:
AppServerBackendRequestError: Client specified an invalid argument: post-cutover thread ID [redacted] has unsupported placement format version 1
An older ordinary local thread on the same computer fails with the same message but placement format version 3. The IDs were copied from the actual local chats, not constructed. We have not tested sending to those unreadable threads or edited any IDs/session storage.
This distinction matters: creating a new Dot-coordinated task on the laptop does not restore access to the existing local chat, and it can expose different tools/permissions. The failure has prevented my Dot from checking and coordinating work I had to start manually.
The native local-helper read/relay reports in this discussion look promising, but we have not yet verified that workaround in my environment. Please distinguish a supported way to read/continue existing local threads from creating replacement tasks. If placement versions 1 and 3 are supposed to be supported, an explicit compatibility fix or diagnostic would help.
There is also a separate MXC browser-launcher failure in our delegated Windows tasks, reported in #53188. These are two observed failures; we do not have evidence that they share one root cause.
Update, 14:53 UTC: the read-only workaround is now verified here. An already-existing delegated executor exposed native mcp__codex_app__list_threads/read_thread. Its read_thread with hostId: local successfully read the exact ordinary local chat that the parent's cloud_threads.read could not read. No replacement task, ID edits, raw session-file access or permission changes were needed. This establishes a working native read path in this executor; it does not establish that parent routing is fixed or that native message relay has been tested.
moz9 commentedon Oct 13, 2026
Reproduced on Windows 11 on October 13, 2026.
The desktop was reported as connected, attached, and authorized for tasks. A direct call from the dot conversation to cloud_threads.send_message for an existing local Codex thread returned:
CloudThreadNotFoundError: The cloud thread was not found.
error_code: NOT_FOUND
For comparison, a helper task on the same desktop used the native send_message_to_thread tool with the same thread ID and hostId: "local". That call was accepted without an error. The requested acknowledgment was not observed, so this confirms acceptance only, not successful processing.
A separate creation test using create_thread with target: {"type": "projectless"} returned hostId: "local" and a test reply, but the resulting thread was still labelled as cloud in the UI. Therefore, hostId: "local" alone did not establish the local thread type expected by the user.
The remaining requirement is direct dot-to-existing-local-thread access, without a helper task. Is there a supported fix or an app version that addresses this route?
Thread IDs, computer names, local paths, and screenshots are intentionally omitted for privacy. The exact desktop app build was not collected for this retest.