Windows Desktop: cannot resume running thread due to C:\ path vs \\?\C:\ path mismatch

Open 💬 4 comments Opened May 21, 2026 by niujiaxu

What version of the Codex App are you using (From “About Codex” dialog)?

26.506.3741.0

What subscription do you have?

plus

What platform is your computer?

Windows x64

What issue are you seeing?

Codex Desktop on Windows fails to resume a previous running thread due to path normalization mismatch.

Error:
cannot resume running thread 019e2aa5-a9f9-7b91-98bb-dbb708cf9bf7 with stale path:
requested C:\Users\Administrator\.codex\sessions\2026\05\15\rollout-2026-05-15T15-59-20-019e2aa5-a9f9-7b91-98bb-dbb708cf9bf7.jsonl,
active \\?\C:\Users\Administrator\.codex\sessions\2026\05\15\rollout-2026-05-15T15-59-20-019e2aa5-a9f9-7b91-98bb-dbb708cf9bf7.jsonl

Both paths refer to the same file on Windows. It looks like Codex compares the raw path strings instead of normalizing Windows extended-length paths.
The session file still exists and is readable, but the app refuses to resume the thread.
Codex version shown in process path: 26.506.3741.0.

What steps can reproduce the bug?

// Run on Windows with Node.js.
// Replace the file path with any existing file on disk.

const fs = require("fs");

const normalPath =
"C:\\Users\\Administrator\\.codex\\sessions\\2026\\05\\15\\rollout-2026-05-15T15-59-20-019e2aa5-a9f9-7b91-98bb-dbb708cf9bf7.jsonl";

const extendedPath =
"\\\\?\\C:\\Users\\Administrator\\.codex\\sessions\\2026\\05\\15\\rollout-2026-05-15T15-59-20-019e2aa5-a9f9-7b91-98bb-dbb708cf9bf7.jsonl";

console.log("Normal exists:", fs.existsSync(normalPath));
console.log("Extended exists:", fs.existsSync(extendedPath));

console.log("Raw string equality:", normalPath === extendedPath);

const normalStat = fs.statSync(normalPath);
const extendedStat = fs.statSync(extendedPath);

console.log("Same size:", normalStat.size === extendedStat.size);
console.log("Same mtime:", normalStat.mtimeMs === extendedStat.mtimeMs);

// A resume check that compares raw path strings would incorrectly fail here.
if (normalPath !== extendedPath) {
throw new Error(
stale path: requested \${normalPath}\, active \${extendedPath}\``
);
}

What is the expected behavior?

Codex should normalize Windows paths before comparing rollout/session paths. For example, C:\... and \\?\C:\... should be treated as equivalent when they refer to the same file.
Actual behavior
Codex rejects resuming the thread with a stale path error, even though the session .jsonl file still exists and is readable.

Additional information

The user cannot reopen the previous conversation from the sidebar. The only workaround is to manually inspect the .jsonl file and continue in a new conversation, losing the normal resumed-thread experience.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗