Make Codex CLI sessions available in Codex desktop history
What feature would you like to see?
Make local Codex CLI sessions available as first-class threads in Codex desktop history, or provide an explicit “Import Codex CLI history” action.
Current behavior
Codex desktop onboarding successfully imported Claude Code history into the app. Native Codex CLI sessions are stored locally and resumable from the CLI, but they do not appear to be surfaced in Codex desktop history the same way.
Verified locally:
codex resume --allcan see prior Codex CLI sessions.- Resuming a specific CLI session by ID works.
- The resumed session loaded the prior transcript and accepted a new prompt.
- Codex desktop history does not appear to show those Codex-native CLI sessions as first-class desktop threads.
Expected behavior
Codex desktop should index and display local Codex CLI sessions automatically, or offer an explicit import flow for Codex CLI history.
Why this matters
CLI and desktop are part of the same Codex product and account experience. Users expect Codex-native sessions to move between terminal and desktop more seamlessly than imported third-party sessions. This would make it easier to continue work across the CLI and desktop app without manually finding session IDs.
Environment
- Codex CLI: 0.128.0
- Platform: macOS
- Auth mode: ChatGPT login
15 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
And found this juxtaposition pretty interesting today!
Seems backward. Geared toward switchers instead of an OpenAI existing user expanding my usage from CLI to desktop app.
+1 to this. The broader need is Codex-native session continuity across the main entry points: CLI, Desktop, and VS Code/IDE extension, web/cloud sessions
Sessions should be portable artifacts with stable resume IDs/deep links that work across surfaces. Moving between terminal, Desktop, IDE, optionally web should feel like changing views on the same Codex work, not starting from separate silos, unless the user explicitly chooses isolation
Disclosure: I used Codex to help research and draft this comment. I personally reviewed the linked evidence and approved the comment before posting.
Adding a source-backed framing here rather than opening another issue, because this looks like one symptom of a broader Codex-native thread-continuity contract.
My read: this should not require one physical global thread store. It should be one logical continuity contract across multiple physical authorities:
What I verified:
thread/list,thread/read,thread/resume,thread/fork, andthread/turns/list: https://developers.openai.com/codex/app-server#threadsrollout_path,source,cwd, timestamps, title, archive state, etc., while rollout JSONL files carry the full persisted session log:thread/listalready supports cursor pagination plussourceKinds,cwd, archived, provider, sort, and search filters:Related reports suggest this is not one narrow UI bug, but recurring drift between stored thread state and visible history/resume surfaces:
Proposed product/architecture direction:
thread/listplusthread/read/thread/turns/listas the canonical local history contract for rich clients.continuedFrom,delegatedTo,forkedFrom, andhome = local | cloud, rather than trying to make local and cloud share one mutable store.If this matches the intended direction, I can help next with a focused repro matrix across CLI/Desktop/IDE using
thread/listevidence and current versions, or with an invited narrow patch/tests/docs around the local app-server contract. Happy to move this to a separate design issue if #21079 is too narrow.The only issue is the fact that those of us running heaving agentic workflows do not need to see 100s of threads created by tools such as symphony for instance
yes please! i see my threads in /resume in cli but dont see the threads in codex app and it would be really useful to automatically have them opened in codex app even to they were started in cli
I patch codex plugin via codex cli after each codex plugin update: #15368
Adding a related workflow/use case that makes this feel like more than a history nicety: it creates an orchestration blind spot between the terminal CLI and the macOS app.
A common flow is:
codexfrom a terminal while already inside some project directory.Expected behavior: when the macOS app opens, it should discover/index local Codex CLI sessions by their working directory and surface them in the appropriate project view. Ideally this should include both resumable historical CLI sessions and currently active/running CLI sessions, with clear source/status metadata such as
CLI,running,idle, orresumable.Why this matters: for users who switch between terminal Codex and the macOS app, the app is naturally the orchestrator/dashboard for ongoing Codex work. If CLI-started sessions are invisible there, it is easy to lose track of active work, duplicate effort, or assume nothing is running for a project when a CLI session already exists.
A good implementation could still avoid overwhelming users with every generated/tool-created session by adding filters or source grouping. The important part is that native Codex CLI sessions should not be silently missing from the desktop app's view of local projects and sessions.
Adding a related workflow request that feels like the missing explicit bridge between the CLI/TUI and Desktop app.
Current state:
codex resume <SESSION_ID>works well from the CLI.Requested behavior:
Example shell command shape:
This should also be available as a slash command from inside the CLI/TUI, not only as a shell command.
Example slash command shape:
Useful behavior:
Expected result: Codex Desktop opens directly to that resumable thread, rather than requiring the user to find it manually in the sidebar/history filters.
The app should have a small explicit action such as:
This would let users paste a known
SESSION_IDfrom/status,codex resume, logs, or~/.codex/sessions, then have the app resolve it and open it if valid.When the session belongs to a local cwd, worktree, or remote project, the app should show what it is about to bind to:
If there is ambiguity, the app should ask where to attach/open the thread instead of silently hiding it or creating a new project/thread.
Why this matters:
For CLI-heavy users, the Desktop app naturally becomes the dashboard for ongoing Codex work. A session ID is already the precise handle for resuming in the CLI, so there should be an equivalent “open this exact Codex work in the app” path. This would also make remote/project session continuity less dependent on sidebar filters, cwd heuristics, or manual discovery.
This issue matches a real workflow gap I hit today.
I created a local Codex project folder, added it to Codex Desktop as an existing project, and expected active Codex/OpenClaw CLI/app-server work against that folder to appear as threads under the Desktop project. From the user side, the mental model was: “Blessed is the project room, so all Codex runs for Blessed should be visible there.”
Instead, the work was happening successfully on disk and in local Codex session/app-server history, but it was not visible as project threads in the Desktop sidebar. That made the agentic coding process feel opaque: files changed, builds ran, screenshots existed, but the human operator lost the live thread/context.
The core product need is not just “import old CLI history.” It is continuity between Codex surfaces:
This matters because Codex Desktop’s biggest UX unlock is making agent work legible, spatial, and reviewable. When runs disappear into CLI/session stores, the user loses confidence and context even if the agent completed the task correctly.
A good version of this might be:
Happy to provide local details if useful.
Codex CLI sessions are available in the Codex desktop app. However, you need to add the corresponding project in Codex desktop app if you want them to appear there. The app does not display sessions for projects that you have not previously added or have removed.
Thanks, that makes sense — appreciate the clarification.
I think what we’re running into may be a slightly different case around agentic / orchestrated coding sessions.
In this workflow, the user-facing project is added in Codex Desktop as
/Users/amz/projects/blessed, but the long-running agent session was originally launched from an OpenClaw workspace root:/Users/amz/.openclaw/workspaceFrom there, the agent did substantial work inside the Blessed project by running commands with
/Users/amz/projects/blessedas the working directory: creating files, editing Swift code, generating the Xcode project, building, testing, launching the simulator, and saving screenshots/artifacts.The user-facing symptom is: in Codex Desktop, under the added Blessed project, it says there are no chats, even though a long agentic coding session just created and modified that project.
So from the human’s perspective, this was clearly “the Blessed project session.” But Desktop appears to index/group the session by the original session
cwd, rather than the project where the work actually happened.That makes sense technically, but it means agentic sessions can become invisible from the project where the user expects to find them. In orchestrated workflows, the agent may be born in a home/workspace directory, then operate across one or more real project roots.
What we were hoping for is some way for Codex Desktop to understand or expose that relationship, for example:
Does that match how sessions are currently indexed? Happy to share local details if useful.
Yes, all clients (desktop app, IDE extension, TUI) assume that the thread's original
cwdindicates which project it is part of. And to clarify, indexing occurs within the core harness, not in the app.Are you able to change your workflow such that the main OpenClaw orchestrator agent switches to the target project directory before creating the project thread?
Yes, we can adjust our workflow so project-specific OpenClaw/Codex threads are created with the target project directory as the initial
cwd. That should solve the immediate Blessed-style case.I think the remaining gap is for orchestrator-born sessions that may start in a home/workspace context and then intentionally operate inside one or more project roots. For those, it would be useful if the core harness exposed an explicit way to declare or attach a project root for indexing, rather than relying only on original
cwd.So the current behavior makes sense technically, and we can work with it. A harness-level project association API or metadata field would help reduce ambiguity for orchestrated workflows and make cross-surface continuity easier to reason about.
I met it today, how it works? I'm not an expert, so I could not even try to fix it.