cmux NEXT: keep Bash agent commands in shell rows
Running reach review-router 'codex exec …' in Bash currently replaces the command row with a Codex card and infers its model and host from the command. Bash now keeps its normal command row, including its raw command and output. Only an explicit acpmux child-session record can supply a session card's identity; structured subagent tools retain their existing behavior.
Leo, 2026-10-27: "we don't want to have that sort of thing going on"
Takes back #25043: command syntax and stdout must not establish harness or session identity. The explicit child-session path from #25062 remains supported, with identity metadata taken only from the session record.
Validation: cd webviews && bun test test/shell-agent-identity.test.ts fails all six cases at regression commit c65b829f88eddf7f98df737258404a58b102de36 and passes all six at 4d7bb4943641e44792ba5f0460369c6de1144345. The focused fold, parser and transcript replay suite passes 40 tests. Web checks (including lint, formatting and type checking), the pre-push gate and changed-file gallery coverage pass.
Observed / Not run
Observed the production transcript replay retain the execute tool and its output for direct commands, reach and command arrays, with Codex-looking output unable to create a session. Structured subagent metadata and recorded acpmux child sessions still create cards. The unscoped gallery coverage test reports existing coverage gaps; the six checks scoped to this PR pass.
Hosted Chromium capture 40590006683 passed: eight real gallery PNGs cover running/completed states in light/dark at regression commit c65b829f88eddf7f98df737258404a58b102de36 and fixed head 4d7bb4943641e44792ba5f0460369c6de1144345. All frames mounted, reported the exact commit, passed SHA256 transfer verification, and were visually inspected. Originals passed the publication helper's OCR privacy check. Native builds, native app dogfood and a live review-router session were not run.
Reference: cmux-design-references/apps/claude/live/transcript-tool-rows-and-task-list.png and apps/codex/live/transcript-expanded-command-activity.png for shell rows; apps/claude/live/transcript-linked-session-card.png for a tracked session card. The new gallery story places an ordinary Bash call beside a real recorded child session.
Gallery: agent-pane.shell-agent-identity/running, agent-pane.shell-agent-identity/completed
Changelog
Fixed: Bash commands that run another agent keep their normal command rows instead of gaining inferred agent cards.
| State | Before | After |
|---|---|---|
| Running · dark | ![]() | ![]() |
| Completed · dark | ![]() | ![]() |
| Running · light | ![]() | ![]() |
| Completed · light | ![]() | ![]() |
Agent session: agent session







