Codex Desktop 26.810.7004.0 shows subagent child threads as top-level sidebar conversations after update

Open 💬 5 comments Opened Aug 15, 2026 by dpz-0724
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

Summary

I am also experiencing a serious sidebar/history regression on Codex Desktop for Windows after a recent update. The Recent list is now filled with duplicated task titles and many Untitled session entries that appear to be subagent child threads shown as normal top-level conversations.

Environment

  • Codex Desktop: 26.810.7004.0
  • Platform: Windows
  • Account: ChatGPT Pro
  • The problem started after a recent Codex Desktop update.

Observed behavior

  • Subagent child threads appear as independent entries in the main Recent list.
  • Multiple entries can have the same or nearly identical task titles.
  • The list is increasingly dominated by automated child tasks instead of user-created conversations.
  • It is difficult to identify and reopen the actual parent task or the conversation I was working on.

Local diagnostics and suspected root cause

The underlying conversation data is still present and the local databases pass integrity checks, so this does not appear to be data loss. Local inspection shows that the sidebar/indexing layer is incorrectly treating subagent threads as visible top-level conversations:

  • The core state database contains threads whose source is marked as subagent.
  • The visible local thread catalog includes 210 active subagent threads.
  • The catalog contains 338 visible entries in total.
  • This suggests that the recent-conversation synchronization or session-classification logic is no longer filtering subagent child threads out of the top-level sidebar, or is failing to recognize their subagent metadata during the catalog rebuild.

The exact commit that introduced the regression is not yet known, but the behavior appears to be caused by an update-related regression in the sidebar/index synchronization path rather than by corrupted or deleted conversation data.

Impact

This has a significant impact on daily work. The Recent list is no longer a reliable way to find active tasks or resume previous work. I spend time searching through duplicate and irrelevant child-thread entries, real parent conversations become difficult to locate, and it is easy to open the wrong session. For multi-step work, this breaks conversation continuity and makes the desktop app substantially harder to use.

Expected behavior

Subagent child threads should either:

  • be hidden from the main Recent list by default;
  • be grouped under their parent task; or
  • be clearly marked and excluded from the top-level recent-conversation limit.

This appears related to #34090 and #25341.

View original on GitHub ↗

5 Comments

github-actions[bot] contributor · 12 days ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #37761

Powered by Codex Action

Aley3567 · 12 days ago

Confirmed on macOS as well with ChatGPT/Codex Desktop 26.810.52044 (6662). A bounded archive experiment provides a strong feedback signal that the top-level sidebar is indexing internal subagent threads.

Evidence

I classified local sessions only when persisted metadata satisfied:

session_meta.payload.source.subagent != null

Before remediation there were:

  • 793 active internal subagent sessions;
  • 14 already archived subagent sessions.

Archiving one child through the app's supported thread-archive API changed the counts to 792/15. The child disappeared from the top-level list, while its parent thread remained readable and still contained the child activity record.

Archiving the remaining 792 internal subagent sessions produced:

  • 0 active internal subagent sessions;
  • 807 archived subagent sessions;
  • no failures;
  • parent threads still readable;
  • UUID titles and repeated parent-task titles gone from the normal task list.

No rollout was deleted. This demonstrates that the underlying data is valid and that visibility/classification—not corruption—is the relevant seam. Archiving is only a user-level workaround; the product should not require or automatically perform it.

Suggested fix

Make top-level visibility a derived policy at the thread-catalog/sidebar selector:

function isInternalSubagent(thread: Thread): boolean {
  const source = thread.source;
  return Boolean(
    source &&
    typeof source === "object" &&
    (source.subagent != null || source.subAgent != null)
  );
}

const topLevelThreads = threads.filter(
  thread => !isInternalSubagent(thread)
);

Important behavior:

  1. Exclude only internal spawn-agent children from top-level Recent/project/search limits.
  2. Do not archive or delete them; keep them accessible from the parent task's activity/subagent UI.
  3. Group nested children using persisted lineage such as parent_thread_id / parentThreadId.
  4. If a child is shown in a dedicated subagent view, use its nickname/path plus parent title instead of falling back to the raw UUID.
  5. Normalize both persisted lowercase source.subagent and any legacy camel-case source.subAgent at the compatibility boundary.
  6. Rebuild the derived sidebar index after upgrades; durable rollout/session data should remain the source of truth.

Regression tests should cover a normal user thread, user-created fork, depth-1 and depth-2 internal subagents, legacy metadata casing, missing title, and a parent that remains visible while its children are excluded from the top-level list.

shleder · 11 days ago

Since your diagnostics already point to valid durable data plus a classification/indexing mismatch, this is a useful codex-rescue==0.1.0a4 field case. It will not change sidebar visibility or archive child threads, but a read-only doctor pass on one representative parent/child rollout can tell us whether the persisted transcript itself is structurally healthy and how the subagent/source metadata is classified.

codex-rescue doctor --json "/path/to/a-representative-rollout.jsonl"

A sanitized summary of status, findings, and aggregate counts is sufficient. Please do not post raw rollouts/SQLite, prompts, tool input/output, thread IDs, repository data, credentials, usernames, or private paths.

ralphevac · 9 days ago

Environment

  • Platform: macOS
  • App: unified ChatGPT / Codex Desktop
  • Version: 26.814.41407 (build 6720)
  • Affected surface: project sidebar, not only the global Recent list

Observed behavior

After a recent Desktop update, previously archived subagent child sessions started appearing as independent top-level conversations inside a local project sidebar.

The affected entries include:

  • raw UUIDs used as visible titles;
  • approval-wrapper text such as The following is the Codex agent history...;
  • child-task prompt fragments that are not meaningful standalone conversations.

This is particularly confusing because the actual parent tasks are still archived correctly. The child-session files are also still stored in the local archived-session area, so this does not appear to be data loss or an accidental unarchive operation.

Local diagnostic evidence

I inspected the local thread catalog and found that the incorrectly displayed rows are marked as thread_source = subagent, while their source paths point to archived session files. In the affected project, 77 archived subagent records are still treated as displayable catalog candidates; there are 80 such archived child records in the local catalog overall.

This suggests that the regression is broader than active child threads being shown in Recent: the project/sidebar indexing path is also failing to apply archive filtering when rebuilding or rendering subagent records.

Expected behavior

Archived subagent child sessions should not appear as top-level project conversations. They should either:

  1. remain hidden by default;
  2. be grouped beneath their parent task; or
  3. be exposed only through an explicit diagnostic/history view.

At minimum, the sidebar should filter both subagent origin and archived status before applying its top-level recent/project conversation limit.

greyano12syp-a11y · 4 days ago

Follow-up from Windows Desktop 26.818.5229.0 (Microsoft Store/MSIX).

The opposite classification now occurs after the recent update: Guardian child threads are no longer top-level Recent entries, which avoids the duplicate/sidebar-clutter problem described here. However, existing child history becomes difficult to discover from normal history without a documented parent-level route.

Sanitized read-only diagnostics:

  • state_5.sqlite contained 108 local thread rows and passed integrity checks.
  • 42 ordinary CLI/VS Code user threads were present in the local desktop catalog.
  • 45 Guardian child rows (thread_source=subagent; source identifies Guardian) were intentionally absent from that catalog; their rollout files still existed.
  • 18 additional absent rows were archived user threads, and 3 were one-off exec-origin sessions.
  • This is not evidence of transcript deletion or provider loss.

Please keep Guardian children excluded from top-level Recents, but provide a stable, documented way to inspect historical child work from its parent task (or an explicit historical-subagents view). That preserves the clutter fix without making prior agent work appear to disappear after an update.