Subagent activity exposes internal /root paths and repeats lifecycle states
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Subagent activity exposes internal /root/... paths and repeats lifecycle states
Summary
Codex's multi-agent activity UI shows internal routing paths such as
/root/task1_quality_review instead of human-readable task names. In the same
activity sequence, lifecycle rows can repeat and appear out of order, for
example showing a task as both in progress and completed.
This affects the CLI transcript and other surfaces that consume the same
subagent activity data, rather than one integration or project configuration.
Environment
- Codex CLI:
0.154.0 - Platform: Linux
- Multi-agent workflow: enabled
- No custom
[agents]display-name configuration is present.
Steps to reproduce
- Start a Codex session with multi-agent collaboration enabled.
- Ask the parent agent to delegate named tasks, for example
task1_quality_reviewandtask2_implementation. - Let one task complete while the next task starts.
- Inspect the parent activity feed or terminal transcript.
Actual behavior
The feed renders canonical internal paths:
Started `/root/task1_quality_review`
Completed `/root/task1_quality_review`
Started `/root/task2_implementation`
Completed `/root/task2_implementation`
The same run can also render duplicate waiting/completed rows or leave an
earlier prose status saying a task is still in progress after its completion
row has appeared.
Expected behavior
Display a human-readable task title, for example:
Started Task 1: Quality review
Completed Task 1: Quality review
Started Task 2: Implementation
Completed Task 2: Implementation
Each task should have one coherent lifecycle. Replayed or duplicated events
should not create duplicate rows, and terminal states must not be followed by
older non-terminal states.
Investigation
The current TUI renderer constructs activity text directly from agent_path:
codex-rs/tui/src/multi_agents.rssub_agent_activity_summary()formatsStarted \{agent_path}`andCompleted `{agent_path}``.sub_agent_activity_title()does the same for rendered history rows.
The current upstream tests explicitly snapshot /root/reviewer as the
displayed label in codex-rs/tui/src/app/agent_status_feed_tests.rs.
This confirms the result is current product behavior rather than a stale local
installation or an Orca-specific formatting problem.
Suggested direction
Keep agent_path for routing, but carry or derive a separate display title:
- Prefer the original
task_namesupplied tospawn_agent. - If no title is available, humanize the final path segment as a fallback.
- Centralize lifecycle reduction per agent path/thread so duplicate events are
ignored and terminal states cannot regress to waiting or working. - Use that display projection for the CLI, desktop activity feed, and other
app-server consumers.
Related reports
- #24225: duplicate finished-subagent notifications
- #30813: canonical
/root/...paths and inconsistent active-agent state - #43689: subagent lifecycle/state visibility is inconsistent
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in codex-rs/tui/src/multi_agents.rs, tracing sub_agent_activity_summary() and sub_agent_activity_title(), then inspect codex-rs/tui/src/app/agent_status_feed_tests.rs and its /root/reviewer snapshots. Confirm the activity projection preserves task names or humanized fallback labels, deduplicates lifecycle events, and prevents terminal states from regressing; done when the affected tests cover the expected coherent display.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 48/100