Repository navigation
[macOS][Desktop][multi-host] Sidebar grouping resets and archived tasks resurrect after restart #41214
Description
What version of the Codex App are you using?
- Unified ChatGPT/Codex Desktop for macOS:
26.820.60940 - Bundle build:
7119 - Subscription: paid ChatGPT subscription (exact tier omitted)
What platform and connection topology are you using?
- macOS
26.5.2 (25F84), Apple silicon - Three macOS development hosts connected to one Desktop client
- Tasks are available through the local host plus SSH-discovered and Remote Control projections
- All supported connection paths are enabled simultaneously
This multi-host topology may be important. The failure is most visible when the sidebar must reconcile tasks from several physical hosts and more than one projection type.
What issue are you seeing?
The Codex Desktop left sidebar does not preserve or deterministically reconstruct its task-list state across a full quit/restart or an app update.
The Recents task view supports:
- grouping by Project;
- grouping by Connection;
- one combined list; and
- ordering such as Priority or Latest Updated.
My preferred configuration is group by Project and Latest Updated. That configuration and the resulting task organization are reliable only within the current app session.
After quitting and restarting Codex—or after an app update—the sidebar can rehydrate into a different and internally inconsistent state:
- Tasks that were grouped under their projects move into Recents as apparently projectless items.
- Only a subset may be misplaced; which tasks move is non-deterministic.
- Group by Connection is also inconsistent: task placement does not reliably correspond to the physical host or connection projection, and the resulting buckets can appear arbitrary.
- Tasks that were archived, or deleted/removed through the available UI, can reappear in the active sidebar after restart.
- Re-archiving a resurrected task removes it from the current active list, but opening Archived tasks can still show an empty list.
- A later restart can resurrect tasks again, requiring the same manual cleanup.
The result is that active, archived, project-grouped, projectless, and connection-grouped views appear to be reading or hydrating from different state owners.
Steps to reproduce
The exact subset of affected tasks varies, but the overall failure is repeatable.
- Connect Codex Desktop to several existing development hosts through all available connection methods, including SSH discovery and Remote Control.
- Have multiple tasks across several saved projects and hosts.
- In the sidebar, select:
- Group by Project
- Latest Updated
- Confirm that tasks appear under the intended projects.
- Archive several obsolete tasks. If deletion/removal is available for a task, remove one as well.
- Confirm that those tasks disappear from the active list.
- Fully quit Codex Desktop.
- Relaunch the app, or install an update and relaunch.
- Inspect the sidebar:
- some formerly project-grouped tasks may now appear under Recents;
- Group by Connection may place tasks inconsistently;
- archived or removed tasks may have reappeared as active.
- Archive a resurrected task again.
- Open the Archived tasks view.
- Observe that the active row disappears, but the Archived view may be empty.
- Restart again and observe that stale tasks may reappear.
Expected behavior
- The selected grouping and sorting preferences survive restart and app updates.
- A task has one canonical identity even when it has local, SSH-discovered, or Remote Control projections.
- Project grouping is derived from one durable, authoritative project assignment.
- Connection grouping consistently represents the task's actual physical host and selected projection.
- Archive and deletion tombstones are durable and take precedence over stale catalog or remote projection data.
- An archived task appears in Archived tasks and remains absent from active lists after restart.
- A deleted task never reappears.
- Startup hydration converges to the same result every time for unchanged underlying state.
Actual impact
Impact: high.
This is not cosmetic. The sidebar is the primary navigation and continuity surface for long-running Codex work. Restarting the app can destroy carefully curated project organization, make dead work look active again, and make archive/delete actions impossible to trust. With many projects and tasks across three hosts, manually reclassifying and re-archiving items after every restart is expensive and error-prone.
The inconsistent empty Archived view also prevents users from determining whether an archive action persisted or only changed the current renderer state.
Possible root-cause family
This is an inference from the visible behavior, not a confirmed diagnosis.
Startup/update hydration may be merging several catalogs or projections without one authoritative precedence order:
- saved Desktop project assignments;
- task-list/project projections;
- local and remote host catalogs;
- SSH-discovered and Remote Control projections;
- active task rows;
- archive/delete tombstones; and
- persisted sidebar grouping preferences.
A stale projection may be able to recreate an active row after a newer archive/delete state, while the Archived view reads a different or incomplete catalog. Project and connection grouping may likewise consume inconsistent identifiers.
Related reports, but not duplicates
- Codex Desktop ignores thread.projectId created through its own App Server and places task in Recents #40935 — Desktop ignores an App Server
projectIdand places a remote task in Recents. - [macOS] Project worktree task initially has projectId=null and recovers only after Desktop restart #39764 — a project-scoped task temporarily reports
projectId: nulland changes after restart. - [Windows][Desktop] task list returns projectId=null for a valid directly bound local-project task #37021 — task-list
projectIddisagrees with an existing direct project assignment. - Codex Desktop sidebar shows no Projects or Recent tasks after update #35088 — sidebar project/task catalog does not populate after update.
- Could not archive conversation #39161 — archive teardown can fail to persist, but that report is Windows-specific and does not cover resurrection plus an empty Archived view.
- Codex Desktop: add project management for registering projects and moving threads between projects #25498 — requests supported project reassignment, but this report concerns loss of already-established organization and lifecycle state.
This report combines behavior not covered by any one of those issues: persistent view-mode loss, project and connection misgrouping, and archive/delete resurrection in a three-host SSH/Remote Control topology.
Privacy
Task IDs, project names, sidebar titles, account identifiers, absolute paths, and private task contents are intentionally omitted. Sanitized task/host coordinates or logs can be provided privately if maintainers identify the relevant diagnostic surface.
Activity
github-actions commentedon Aug 27, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
usafancyei commentedon Aug 29, 2026
I can reproduce the archived-task resurrection/hydration problem on a single-host, local-only setup, so this does not appear to require SSH or Remote Control projections.
Environment:
Observed evidence:
This appears to extend #41214 beyond the reported multi-host topology and overlaps with the stale active-route/hydration behavior in #25769.
A client-side fix likely needs to:
No task IDs, project names, absolute paths, account identifiers, or private task contents are included here.
mrwillystudio commentedon Aug 30, 2026
Confirmed on Windows Desktop with local Git worktrees. After the worktree paths became unavailable, two stale worktree tasks remained under the project sidebar. Git worktree metadata was removed and both tasks were archived through the app API, but they still appeared after a full Desktop restart. The sidebar actions were unavailable, so the stale rows could not be removed or archived from the UI. Only the current task should remain.
Turtle-Hwan commentedon Aug 31, 2026
Cross-platform confirmation: this is reproducible on both the current macOS and Windows Desktop releases, particularly with SSH-connected tasks.
Environment
26.825.51511(build7377)0.151.0-alpha.7.2Darwin 25.5.0 arm64Hostnames, network addresses, usernames, project names, task titles, and task IDs have been intentionally omitted.
Cross-platform observed behavior
The same lifecycle failure occurs on both Windows and macOS Desktop:
session <redacted-session-id> is archived.For an inspected reproduction, the owner-host state was internally consistent:
archived=1;archived_sessionslocation;This indicates that the archive mutation itself succeeds. The failure is in Desktop lifecycle invalidation, sidebar reconciliation, or route hydration.
User impact
This is recurring frequently enough to make normal sidebar use and task cleanup frustrating. Tasks that were deliberately archived keep coming back into the active list, so the sidebar is repeatedly cluttered with work that should no longer require attention.
There is also no reliable visual way to distinguish a real active task from one of these stale archived entries. I have to click each stale entry, wait for the
session is archivederror, and let it disappear individually. The same cleanup may need to be repeated after reconnecting or restarting the app.As a result, archive cannot currently be trusted as a durable organization action. It adds repeated manual cleanup, interrupts navigation between actual active tasks, and makes it difficult to know whether a task genuinely returned or the sidebar is showing stale state.
Related issue chain
This appears to connect the following reports into one end-to-end failure:
session is archived#25769: selecting the stale row attempts to resume an archived threadThe observed sequence is:
archive succeeds on owner host->Desktop misses lifecycle invalidation->stale sidebar/history entry remains or is rehydrated->Desktop calls thread/resume->owner host correctly returns thread_archivedBecause the same behavior occurs on both current Windows and macOS releases, this is unlikely to be limited to one OS-specific storage implementation. It more likely affects shared Desktop sidebar/reconciliation logic or the cross-host lifecycle event path.
A robust client-side fix likely needs to:
thread/resumereturnsthread_archived.No raw logs or state files are attached because they may contain sensitive paths, task contents, or identifiers.
hanjie-chen commentedon Sep 5, 2026
Additional confirmation on Windows Desktop with an SSH-connected Linux ARM64 host, plus a narrow recovery that removed the stale persistent catalog entry.
Environment: Microsoft Store package OpenAI.Codex 26.901.4073.0 (unified ChatGPT/Codex Desktop). One affected SSH task was inspected on 2026-09-05.
Observed evidence:
Recovery experiment:
Backed up the Desktop catalog database and the exact affected row.
Used the built-in Codex app task tool to set archived=true again for that exact task and SSH host. No unarchive step or direct database edit was performed.
Verified that the stale local_thread_catalog row count changed from 1 to 0.
Verified that the owner-host archived flag, original archive timestamp, and archived rollout remained intact. Desktop database quick_check returned ok.
After the recovery, the user restarted the Desktop app and reported that the previously archived task no longer reappeared in the sidebar.
The recovery therefore held across one user-verified restart for this affected task. Repeated restarts and other tasks have not been tested, so this is evidence for a working recovery in this case rather than a permanent product fix.
This appears to match the SSH archive/resume lifecycle described above and adds evidence that reapplying archive through the Desktop app can repair the persistent catalog entry even when owner-host archive state was already correct. Startup reconciliation and the thread_archived error path should converge to that same durable removal without requiring manual re-archiving.
No task IDs, hostnames, project names, screenshots, private paths, raw logs, or conversation content are included.
Xarth-Mai commentedon Sep 11, 2026
Additional Linux reproduction of the external-archive/sidebar resurrection behavior, matching the sequence described in earlier comments.
Environment: Linux desktop; installed ChatGPT/Codex package metadata reports version
26.903.71938(prod, ChatGPT branding). Observed on 2026-09-12.My recurring workflow and observed behavior:
Step 4 is particularly misleading: the temporary disappearance looks like successful reconciliation, but it does not survive restart. This is a user-observed reproduction; I have not captured an owner-host database snapshot or protocol trace for this archive scenario, so I cannot confirm which persistence or synchronization layer is responsible.
Expected: once the desktop learns that a task is archived, that state should consistently exclude it from the active sidebar after restart, without another archive action. Please include external CLI/SSH archiving followed by open, dismissal, and restart in regression coverage.
I am also reporting the separate deleted-ChatGPT-chat case in #42236; similar symptoms do not establish a shared root cause.
Nuriko93 commentedon Sep 23, 2026
Title: Remote SSH archived tasks reappear in Desktop sidebar after every restart
Environment
Issue
Archived Remote SSH tasks repeatedly reappear in the active Desktop sidebar after restarting the ChatGPT/Codex app.
The archive state on the remote host is correct. In Codex CLI, only the actually active task is shown. The remote SQLite state also marks the affected threads as archived.
However, after restarting the Desktop app, multiple archived Remote SSH tasks appear again in the normal project/sidebar list as if they were active.
If I click one of these resurrected tasks, the app itself displays:
“This task is archived — Unarchive this task to open it.”
After opening/clicking the task, it disappears from the active sidebar again without me unarchiving it.
After the next app restart, the same archived tasks reappear again.
Steps to reproduce
Expected behavior
Archived Remote SSH tasks should remain absent from the active sidebar across restarts and updates.
Actual behavior
The Desktop sidebar appears to rehydrate stale Remote SSH task entries on startup without respecting the canonical archived state.
Additional evidence
This strongly suggests a Desktop sidebar / Remote SSH hydration bug rather than a problem with the remote archive state.
This appears related to: