Windows Desktop remote SSH task resume sends empty path after reconnect

Open 💬 0 comments Opened Jul 16, 2026 by 4Liberty

Windows Desktop remote SSH resume sends an empty path after reconnect

Environment

  • Windows Codex Desktop: Microsoft Store build 26.707.9981.0
  • Bundled Windows app-server: 0.144.2
  • Remote macOS app-server: 0.144.5
  • Transport: Codex Desktop's supported SSH connection and official project/task operations

The Microsoft Store reported no newer signed build on 2026-07-17.

Symptom

A completed remote SSH task opens during its creation session. After a normal
Windows Codex restart or app-server reconnect, selecting that task can emit the
same toast more than once:

Failed to resume task
Invalid request: AbsolutePathBuf deserialized without a base path

Official thread/read still succeeds and returns the intact history, the remote
host, and an absolute macOS working directory. Project enrollment also remains
healthy.

Reproduction

  1. Enroll a macOS project through Codex Desktop's supported SSH connection.
  2. Create a task through the official project/task operations and let it finish.
  3. Normally close and reopen Windows Codex, or reconnect its app-server.
  4. Select the completed remote task.
  5. Observe the resume warning even though official thread/read succeeds.

Sanitized logs show this sequence:

maybe_resume_started previousResumeState=needs_resume
thread/read errorCode=null
thread/resume errorCode=-32600
Invalid request: AbsolutePathBuf deserialized without a base path

Packaged renderer evidence

The signed renderer creates or reloads the remote conversation with
rolloutPath: "". Its metadata read updates the store with the path returned by
thread/read, but the subsequent resume request is built from the stale local
conversation object and effectively sends:

path: localConversation?.rolloutPath ?? null

Because an empty string is not null, the request carries path: "". The
app-server's optional AbsolutePathBuf field correctly rejects that empty path.
The expected client behavior is to omit/null a blank path or use the path from
the successful thread/read result.

Impact and current mitigation

The task transcript is not corrupt. An official read-only same-owner follow-up
can load the task for the current app-server session, but the failure returns
after a later reconnect. Replacement tasks can acquire the same state.

There is no supported permanent local repair in the affected signed build. Do
not patch the ASAR, edit private Codex state, invent a rollout path, rerun project
enrollment, or use a raw transport. Use official read_thread as the
authoritative result path and describe the follow-up only as session-scoped.

Permanent acceptance requires a newer signed OpenAI build. Create and complete
a fresh remote Mac task, normally restart Windows Codex with no active task, and
confirm that selecting the completed task produces no resume warning.

Related official sources

View original on GitHub ↗