openai / openai/codex

[Windows App] Task summary panel shows completed child pages as “Working” with timers still increasing

Open
#38,908 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug subagent windows-os
Dominant language
Rust
Stars
125k
Forks
19.5k
PR merge metrics
PR metrics pending

Description

Environment

  • App: ChatGPT/Codex Desktop 26.810.7004.0
  • Platform: Windows 11 Pro, build 26200, x64
  • Authentication: ChatGPT subscription
  • Surface: right-side task summary panel / pinned summary view

What issue are you seeing?

Completed historical child/subagent pages are shown as Working in the right-side task summary panel, and their elapsed timers continue increasing even though those children finished days or weeks earlier and no longer represent active work.

This is reproducible across multiple local projects. Opening or pinning the task summary makes old child pages appear live. The timer is therefore not a reliable indication of current execution.

Steps to reproduce

  1. Use a parent task that creates several child/subagent tasks.
  2. Let the children complete or interrupt them.
  3. Later, return to the parent or another project and open/pin the task summary panel in the right sidebar.
  4. Observe historical child pages displayed as Working.
  5. Leave the panel open and observe their elapsed timers continue counting.

Expected behavior

  • Completed, interrupted, archived, or otherwise non-live children should display a terminal/inactive state.
  • Their elapsed timers should stop.
  • The summary panel should derive current activity from live lifecycle state, not a stale persisted relationship.
  • If persisted and live state disagree, the UI should reconcile or clearly label the child as stale.

Actual behavior

Historical child pages continue to display Working with increasing timers.

A read-only inspection of state_5.sqlite found the same stale lifecycle invariant described in related reports:

thread_spawn_edges:
closed = 24
open   = 60

The 60 persisted open edges are divided across two historical projects:

Project A: 48 open edges
           48/48 child threads archived
           latest child update: 2026-07-18

Project B: 12 open edges
           latest child update: 2026-08-08

These dates and archived states do not match the summary panel's current Working labels or continuously increasing timers.

The counts were obtained read-only with:

SELECT status, COUNT(*)
FROM thread_spawn_edges
GROUP BY status;

SELECT
  t.cwd,
  COUNT(*) AS open_edges,
  SUM(CASE WHEN t.archived = 1 THEN 1 ELSE 0 END) AS archived_children,
  datetime(MAX(t.updated_at), 'unixepoch', 'localtime') AS newest_update
FROM thread_spawn_edges e
LEFT JOIN threads t ON t.id = e.child_thread_id
WHERE e.status = 'open'
GROUP BY t.cwd;

No database rows were modified.

Impact

  • Users cannot trust the summary panel to identify active work.
  • Old timers create the impression that agents are still consuming time or resources.
  • The stale state persists even when affected child threads are archived.
  • This may lead users to repeatedly attempt cleanup or avoid using subagents.

Related issues

  • #23930 — closed/completed subagent cards remain visibly stuck after no live handle remains.
  • #33700 — completed/interrupted descendants remain persisted as open in thread_spawn_edges.
  • #25341 — child threads can retain stale open spawn edges and pollute UI listings.

This report is separate because it reproduces on Windows and specifically affects the pinned/right-side task summary's Working status and continuously increasing elapsed timer.

I can provide additional sanitized read-only queries or app logs if maintainers identify the most useful lifecycle event to capture. No thread IDs, titles, prompts, repository names, or local paths are included in this public report.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Begin with the read-only state_5.sqlite queries for thread_spawn_edges, then trace how the pinned task summary derives each child's Working status and elapsed timer from persisted and archived state. Done means completed, interrupted, archived, or otherwise non-live children show a terminal or stale state and their timers stop; verify this across the reported historical projects.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust, sqlite
Domain
databases, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.