Desktop automations on Windows/WSL create automation runs but no rollout materializes, then resume fails with 'no rollout found'
What version of the Codex App are you using (From “About Codex” dialog)?
I updated Codex Desktop to the latest version available to me on Windows before filing this report, but the issue still reproduces. Inside rollout/session metadata on this machine I also see cli_version: 0.115.0-alpha.27.
What subscription do you have?
ChatGPT Plus / Pro-equivalent individual account
What platform is your computer?
Windows host with WSL workspace
What issue are you seeing?
Codex Desktop automations create automation runs in local state, but the corresponding rollout/session file never materializes. The UI then fails with:
Failed to resume taskno rollout found for thread id <thread-id>
This is not limited to one automation. I have reproduced it on at least two different automations with different prompts and different working directories:
rechka-next-watchercodex-catalog-sync
This makes it look like an app-level automation lifecycle/state bug rather than a prompt-specific issue.
What steps can reproduce the bug?
- Configure a desktop automation that runs in
execution_environment = "worktree". - Make sure the target prompt file exists and the worktree path is valid.
- Trigger the automation from Codex Desktop.
- Observe that the automation run is registered locally.
- The UI then attempts to resume the task/thread.
- Resume fails with:
Failed to resume taskno rollout found for thread id <thread-id>
What is the expected behavior?
When an automation starts:
- a valid rollout/session file should be created;
- the automation run thread id should map to a real rollout/session artifact;
- the run should either complete normally or fail with a prompt/runtime error;
- the UI should not try to resume a nonexistent rollout.
Actual behavior
The automation run is recorded in local automation state, but the rollout/session file is missing.
What I verified locally:
- New rows appear in the local automation DB under
automation_runs. - Example observed run/thread ids:
019d66a2-30e5-7241-b457-c9f45b8acc28019d66d4-03c3-7041-9ed7-9491815da5ad- The runs can remain
IN_PROGRESSor become archived, but there is still no matching rollout file. - The local
inbox_itemstable remains empty for these runs. - The corresponding rollout/session files do not appear under the local
.codex/sessions/YYYY/MM/DD/tree.
So the failure appears to happen between:
- automation run creation,
- thread id assignment,
- rollout/session materialization,
- UI resume.
Additional information
Things I already tried:
- full app restart;
- recreating the automation config;
- recreating the dedicated runtime worktree;
- cleaning stale session index entries;
- reinstalling/re-updating Codex Desktop;
- verifying that the prompt file and worktree path are valid.
None of these fixed the issue.
This looks related in symptom to other “no rollout found” / orphaned-thread reports, but my repro is specifically about Desktop automations creating automation_runs without a corresponding rollout/session artifact.
Potentially related issues:
- #16872
- #14162
- #14396
If useful, I can also provide sanitized details from the local automation state store showing that automation_runs are written while no matching rollout files are created.
11 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Follow-up after local reset:
I renamed
~/.codex/sqlite/codex-dev.dband relaunched Codex Desktop.Results:
~/.codex/sessions/...;A new automation run is inserted into
automation_runs, but no matching rollout/session file is created on disk, and the app again fails with:Failed to resume taskno rollout found for thread id ...As a temporary mitigation, I paused the affected automations locally to stop the retry loop.
So the DB reset was safe for chat history on my machine, but it did not resolve the automation-specific failure.
I get the same issue. Thead id: 019d7612-4131-7833-8988-cb4eac71a821
Draft prepared with Codex assistance; details verified by me.
I have another Windows desktop automation repro that looks like the same bug family, but with a more specific failure signature.
Environment:
26.409.61251OpenAI.Codex_26.409.7971.0_x64__2p2nqsd0c76g0cli_version: 0.119.0-alpha.28Observed behaviour:
session_metaand no turnsturnCount=0automation_runsrow remainsIN_PROGRESSeven though the desktop log says the scheduled run failedThe key desktop log error is:
Scheduled run failed automationId=hello-world errorMessage="Invalid request: AbsolutePathBuf deserialized without a base path"I reproduced this twice with a simple automation using:
prompt = "hello world"execution_environment = "local"I then repeated the test against a separate Windows-side clone at:
C:\Users\<redacted>\projects\codex-windows-testand pointed a fresh automation at:
C:/Users/<redacted>/projects/codex-windows-testThat still failed with the same
AbsolutePathBuf deserialized without a base patherror.Concrete artefacts from this repro:
2026-04-15T18:22:09Zand2026-04-15T18:28:44Z2026-04-15T18:47:31Zsession_metarecord and no user/assistant turnsThe strongest clue is that the failed Windows-path run wrote a malformed
cwdinto the rollout/session file:/mnt/c/Program Files/WindowsApps/OpenAI.Codex_26.409.7971.0_x64__2p2nqsd0c76g0/app/resources/C:/Users/<redacted>/projects/codex-windows-testSo in this repro the failure is not only “no rollout found” later on. The scheduled-run path appears to be constructing or deserialising an invalid absolute path during task creation, which leaves behind:
automation_runsrow still markedIN_PROGRESSRelated issues that seem relevant:
AbsolutePathBuf deserialized without a base patherrorcwdvalues on Windows desktopI’m seeing what looks like the same automation lifecycle bug on Windows Codex Desktop, but with a simpler local repro.
Environment
26.17.415cli_version:0.122.0-alpha.13C:\CodexAutomationSmokeCodex Desktopvscode019db1fe-6e3c-7923-a7da-81ce1eb79ce1019db1fb-10ac-77c2-8bd3-06158e1714f5Repro
```text
C:\CodexAutomationSmoke
I’m seeing a very similar failure on Windows with Codex Desktop automations in
worktreemode, with one extra detail: the run is auto-archived almost immediately and never gets a real thread/session.Environment:
26.415.4716.00.122.0-alpha.1worktreeObserved local state for a new automation created today:
Additional verification:
automation_runscontains the row above.inbox_itemshas no row for the run.threadstable has no corresponding real thread..codex/sessions/YYYY/MM/DD/.ARCHIVEDin roughly 325 ms.This looks like the same lifecycle gap described here, but in this case the user-visible symptom is “automation ran and immediately placed the output directly into archive,” while locally there appears to be no output/thread to recover.
I have a related Windows Desktop repro in #19011 that looks like the same automation lifecycle family, with one additional distinction.
In my case the rollout/session file does get created, but it is only a skeleton:
session_metathread_name_updateduser_inputtask_startedturn_contextresponse_itemSo #16994 and #19011 may be adjacent failure points in the same startup pipeline:
One workaround I previously tried was converting affected cron automations into existing-thread heartbeat automations. That avoided the new-thread first-turn failure in some cases, but it introduced a second failure mode once several automations had persisted
target_thread_idlinks: Desktop can time out onthread/resumeor fail with a mismatched-path resume error. That seems related to #19563 and #20317.So the workaround I would not recommend broadly anymore is “convert everything to heartbeat with target_thread_id.” It can trade the missing-rollout / empty-turn issue for stale target-thread resume problems.
the typical failure mode here is that automation_runs and rollout/session files are written by separate code paths. interactive sessions write the rollout when the thread opens. automation runs create the run row upfront but the rollout only materializes after the runner connects and emits its first event. WSL workspace setups are where this fails silently, since path translation between windows desktop and the WSL-side runner happens at that exact connection step. runner-side logs around when the run id was assigned vs the rollout open call usually surface the gap.
My repro is similar to #16994, but I’m seeing an even earlier failure mode on Windows + WSL: in my case the automation often never dispatches a turn at all. For cron tests I observed named thread shells with only session_meta; for heartbeat tests the target thread received no second automation-owned submission beyond my manual probe turn. So this may be the same lifecycle bug family, but failing before automation_runs -> rollout materialization -> resume.
I am seeing a closely related automation lifecycle failure on Windows Codex Desktop.
In my case, clicking Run now creates automation runs and creates associated session JSONL files, but the sessions are only skeletons and no actual turn is submitted.
Observed:
IN_PROGRESSturn_contextactive_turn_present=falseThis differs slightly from the “no rollout materializes” case because a rollout/session file does appear, but it never becomes a real executable task.
I also tried simplifying the automation prompt and model, but the same behavior occurred. This appears to fail before the agent receives the prompt, so it does not look prompt-specific.
Expected:
Run nowshould create a valid executable turn containing the automation prompt; orEnvironment:
Draft prepared with Codex assistance; findings verified locally by me.
I have a Windows-native Codex Desktop repro that appears to be the same automation lifecycle bug family as this issue, but with a tighter isolation result: on this machine, the failure is specific to the managed worktree automation handoff, not to the repo itself, not to plain Git worktree creation, and not to starting a thread from a worktree path in general.
Environment
OpenAI.Codex_26.519.5221.0_x64__2p2nqsd0c76g0app.version=0.133.0-alpha.126200, x64cronworktreeOriginal symptom
All affected automations remain
ACTIVEand continue to schedule, but their runs do not become real threads.Local DB pattern in
~/.codex/sqlite/codex-dev.db:thread_id = pending:<uuid>status = ARCHIVEDarchived_reason = autoinbox_title = NULLinbox_summary = NULLarchived_user_message = NULLarchived_assistant_message = NULLThe runs flip from created to archived within a fraction of a second.
Isolation work
I created four canary automations against the same repo:
worktree+ plain Windows repo pathworktree+\\?\Windows repo pathlocal+ plain Windows repo pathlocal+ a manually precreated worktree path under~/.codex/worktrees/...Result A: both
worktreecanaries failed in the same wayBoth of these produced only placeholder pending thread ids and were auto-archived immediately:
source_cwd = C:\GitHub\<repo>source_cwd = \\?\C:\GitHub\<repo>Example rows:
This rules out the
\\?\path prefix as the primary cause.Result B:
localautomation against the same repo path succeededA canary with:
execution_environment = localcwd = C:\GitHub\<repo>created a real automation thread and advanced the run to
PENDING_REVIEW.Example row:
Result C: manual Git worktree creation succeeded
I manually reproduced the same Git worktree creation pattern Codex appears to use, including config overrides that disable hooks/fsmonitor and LFS filters.
git worktree add --detach ... devsucceeded both:~/.codex/worktrees/...So plain Git worktree creation itself is not failing.
Result D:
localautomation against an already-created worktree path also succeededA canary with:
execution_environment = localcwd = <precreated worktree path under ~/.codex/worktrees/...>also created a real automation thread and advanced to
PENDING_REVIEW.Example row:
This rules out ?Codex cannot start a thread inside a worktree path? as the root cause.
Most likely failure boundary
Given the above, the remaining failure boundary seems to be:
worktreeautomation pathIn other words: the Windows failure on this machine is not scheduler-wide, not repo-specific, not a raw Git failure, and not a general inability to run in worktree directories. It is specifically the ?managed worktree -> start automation thread in it? path.
Extra local clue
The failing
worktreecanaries did not leave behind new managed worktree directories registered by Codex, while the manually created worktree and the successfullocal-against-worktree canary behaved normally. That suggests the failure may be occurring before the managed worktree is fully materialized or before the thread start can bind to it.Practical workaround confirmed locally
On this machine, changing the automation to
execution_environment = localis a viable workaround for at least read-only/reporting automations.I did not broadly convert all real automations to
local, because some of them may make code/project-management changes and would then operate directly against the main local repo instead of an isolated worktree.If it helps, I can provide the exact canary automation definitions and the matching local DB rows, but the key result is the isolation above:
localsucceeds, managedworktreefails, manual Git worktree add succeeds, andlocalon a precreated worktree succeeds.