What version of the Codex App are you using (From “About Codex” dialog)?
26.318.11754 (1100)
What subscription do you have?
Plus
What platform is your computer?
macOS, Apple Silicon (M3)
What issue are you seeing?
After moving some projects to an external SSD and restoring them through symlinks, Codex App stopped showing the old threads for those projects in the sidebar/history UI.
The thread data was not actually lost. The local Codex data still existed under ~/.codex, including the thread database and session index. The issue only affected projects that had been moved to the external drive.
From local inspection, this appears to be a workspace path canonicalization mismatch:
- the desktop app persisted workspace roots using the symlink path, such as
/Users/x3zvawq/workspace/...
- existing thread metadata stored
cwd using the real path, such as /Volumes/SSD/workspace/...
Because of that mismatch, the app seems to treat them as different projects and does not show the old threads for the symlink-opened workspace, even though both paths resolve to the same location.
What steps can reproduce the bug?
- Have an existing project with Codex App threads/history already created.
- Move that project to an external SSD.
- Create a symlink from the old path to the new location, for example:
- old logical path:
/Users/x3zvawq/workspace/my-project
- real path on external drive:
/Volumes/SSD/workspace/my-project
- Open the project in Codex App using the symlinked path.
- Observe that older threads for that project no longer appear in the app.
- Inspect local state and thread metadata:
- app state may still contain workspace roots under the symlink path
- thread records may store
cwd under the real path
- Rewriting the saved workspace-root paths in
~/.codex/.codex-global-state.json from the symlink path to the real path makes the missing threads show up again after restarting Codex App.
What is the expected behavior?
Codex App should treat a symlinked workspace path and its resolved real path as the same workspace when grouping, matching, or displaying project threads.
In other words, if:
- saved workspace root =
/Users/x3zvawq/workspace/my-project
- thread cwd =
/Volumes/SSD/workspace/my-project
and both resolve to the same filesystem location, the existing threads should still appear normally in the app.
Additional information
I investigated the local state and found that the thread data itself was intact:
~/.codex/state_5.sqlite
~/.codex/logs_1.sqlite
~/.codex/session_index.jsonl
A manual workaround was:
- close Codex App
- back up
~/.codex/.codex-global-state.json
- rewrite saved workspace-related paths from the symlink form to the real resolved path
- reopen Codex App
After doing that, the missing threads reappeared.
This suggests the bug is likely in desktop-side workspace path persistence/comparison rather than data loss.
Possible fix direction:
- canonicalize or resolve
realpath for workspace roots before persisting and before comparing them against thread cwd
- alternatively, compare both sides using a normalized/canonical filesystem path representation instead of raw path strings
- add a regression test covering symlink path vs resolved path for the same workspace
What version of the Codex App are you using (From “About Codex” dialog)?
26.318.11754 (1100)
What subscription do you have?
Plus
What platform is your computer?
macOS, Apple Silicon (M3)
What issue are you seeing?
After moving some projects to an external SSD and restoring them through symlinks, Codex App stopped showing the old threads for those projects in the sidebar/history UI.
The thread data was not actually lost. The local Codex data still existed under
~/.codex, including the thread database and session index. The issue only affected projects that had been moved to the external drive.From local inspection, this appears to be a workspace path canonicalization mismatch:
/Users/x3zvawq/workspace/...cwdusing the real path, such as/Volumes/SSD/workspace/...Because of that mismatch, the app seems to treat them as different projects and does not show the old threads for the symlink-opened workspace, even though both paths resolve to the same location.
What steps can reproduce the bug?
/Users/x3zvawq/workspace/my-project/Volumes/SSD/workspace/my-projectcwdunder the real path~/.codex/.codex-global-state.jsonfrom the symlink path to the real path makes the missing threads show up again after restarting Codex App.What is the expected behavior?
Codex App should treat a symlinked workspace path and its resolved real path as the same workspace when grouping, matching, or displaying project threads.
In other words, if:
/Users/x3zvawq/workspace/my-project/Volumes/SSD/workspace/my-projectand both resolve to the same filesystem location, the existing threads should still appear normally in the app.
Additional information
I investigated the local state and found that the thread data itself was intact:
~/.codex/state_5.sqlite~/.codex/logs_1.sqlite~/.codex/session_index.jsonlA manual workaround was:
~/.codex/.codex-global-state.jsonAfter doing that, the missing threads reappeared.
This suggests the bug is likely in desktop-side workspace path persistence/comparison rather than data loss.
Possible fix direction:
realpathfor workspace roots before persisting and before comparing them against threadcwd