Skip to content

Agent chat: list each tool call under Worked for, and name MCP calls in words - #22658

Merged
teamleaderleo merged 8 commits into
feat-cmux-nextfrom
leo/transcript-density
Oct 21, 2026
Merged

teamleaderleo merged 8 commits into
feat-cmux-nextfrom
leo/transcript-density

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

The cmux NEXT agent chat hid most of a turn's work. When you opened a finished turn's Worked for, the run between two assistant messages was still one line, "Used a tool, read a file, ran commands >". Each "Ran N commands" group was closed too, so seeing any command took two or three clicks. MCP calls showed their raw ids in the running line, for example "··· mcp__cmux-subsessions__start_session 18s".

Change

  • An opened Worked for lists each group and call on its own line, the way the Codex and Claude Code desktop apps do. The "Used tools, …" run fold now applies only when the Debug toggle codexToolRuns is on (foldRun, turns.ts codexRuns).
  • Like the Codex app, command, read and search groups list their calls flush under the line, without the tree guide. Each command row reads "Ran " (the localized tools.ranCommand) after the terminal glyph.
  • Command, read and search groups are open by default and show their last 5 calls. Earlier calls sit behind "+K more" (ToolGroupRow.tsx GROUP_TAIL), and Find opens that hidden part when it matches there. Edit groups stay closed because each one opens to a full diff. Your own open/close choices are still remembered per session.
  • Default change (the defaults guard will ask for a call owner): the Debug tunable agentPane.debug.codexToolRuns now defaults to off (AgentPaneTunables.swift). The app sent true, so in nightly a running turn still folded each finished run into "Used tools, ran commands" and showed only the newest call of the run in progress, which is the behavior Leo flagged. The toggle stays available for comparison.
  • A running turn shows its groups open as calls arrive, under "··· Working for …". A finished turn still collapses under "Worked for Xm Ys" with its divider. Neither of those changed.
  • MCP calls are described in words:
    • Finished rows: start, launch and spawn tools read "Started session sidebar-drag-bugs" (new tools.mcp.start). Unknown verbs read "Called · ".
    • The running line, the activity line, ToolRow and the permission card no longer show mcp__server__tool. They show "cmux-subsessions · start session sidebar-drag-bugs" or "cmux · list workspaces" (mcpPlainName, mcpTitleName).
    • The raw id stays available as the row's tooltip and as the first line of the opened call (.cv-mcp-call__name).

Not in this PR: the Codex-style bordered sub-step cards, the background-agent status card and the pin footer action. The cmux-subsessions cards are being built by the subsession-visibility lane on top of this PR, as a new ToolGroup type, and fall back to these labels.

Screenshots (gallery agent-pane.transcript, before = feat-cmux-next 633c661, after = this branch)

Reference: the Codex desktop app's run (public screenshot from openai/codex#37213; that report's rows lost their command text, but the structure is what we match). It shows a "Ran commands ⌄" line, then one row per call: the terminal glyph and "Ran …", flush under the line. After this PR ours lists a group the same way. Each row reads "Ran " with the command in mono, and the exit status and time sit at the right edge.

Codex desktop: Ran commands group with one Ran command row per call

Finished turn, Worked for opened (dense-ended-run)

Before After
before after

Running turn (dense-live-run)

Before After
before after

Verification

  • New webviews/test/transcript-density.test.tsx (4 tests) and the updated TurnRows.test.tsx pass. Commit 1 adds the tests and commit 2 adds the fix.
  • bun test over the transcript, agent-pane, thread and acpmux suites: 23 failures, the same 23 test names fail on base when files share a run. None are new.
  • tsc --noEmit is clean. vp fmt was applied. The gallery tests (43) pass.
  • Localization: two new keys, tools.more and tools.mcp.start, in all 21 locales of acpmux/Localizable.xcstrings. Non-English values are marked needs_review.

Agent session: cosmic-gray

🤖 Generated with Claude Code

teamleaderleo and others added 2 commits October 20, 2026 16:46
… tool ids

An opened Worked for no longer folds a run under 'Used tools, ran commands'. Command, read and
search groups open by default with their last 5 calls and '+K more'. Edits stay closed. The
running line, activity line and permission card name an MCP call by server and action
instead of mcp__server__tool; the raw id stays in the tooltip and the opened call.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 8d57711: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr22658 -f ref=leo/transcript-density -f platform=macos -f backend_mode=local

Unclear: web / react-apps-check failed: no known signature; failed step: Check webview test shards. This PR merged before its CI finished: fix forward on main.

CI failed on 8d57711950 (run 39526533438 attempt 1): 1 code, 1 unknown.
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped.

Job Verdict Why
web / react-apps-check (1) code a web test failed
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Failures:

  • seen on other PRs agent-pane-background-tasks.test.ts clicking a background task's end opens its terminal beside the chat: failed (job)
Matched log lines
web / react-apps-check (1): (fail) clicking a background task's end opens its terminal beside the chat [1058.05ms]

Not re-run automatically: web / react-apps-check (1), web / react-apps-check are not machine failures.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

red: web / Web status; base red: the same failure on the base df88ff8; does not block
red: web / react-apps-check; base red: the same failure on the base df88ff8; does not block
red: web / react-apps-check (1); base red: the same failure on the base df88ff8; does not block

CI fast guards failed on 643f1b35c7 (https://github.com/manaflow-ai/cmux/actions/runs/39524589064). It does not block the merge; a red guard merged into main breaks it for every open PR.
The log named no failed step; see the run.

Agents: python3 scripts/ci/guard_attribution.py fix applies the mechanical fixes locally.

Tour of 8d57711950 (run): no media. The tour job failed before the tour ran (build or setup); the run log has the output. Both apps run cmux-tui from 6d5a23f (tree 31bf86578b93): the merge base's own tree c7a23e61816b was not published yet.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-42n1w created for this PR by the cmux coordinator.

@teamleaderleo

teamleaderleo commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Visual preview of 643f1b3: in the maintainers' private review feed.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next guards / defaults-snapshot is red on 20 of 20 fresh feat-cmux-next PR heads in the last 2:00:00, so it is most likely a base red, not this PR's. The base-reds lane has it; a base merge picks up the fix once it lands.

teamleaderleo and others added 2 commits October 20, 2026 16:56
…>' with its glyph

Command, read and search groups list flush under their line (no tree guide). Each command row
gets the terminal glyph and the localized 'Ran {command}' around the mono command. Edits keep
the guide.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray
…off)

The app sent codexToolRuns=true, so a running turn still folded each run that text followed into
'Used tools, ran commands' and showed only the newest call of the run in flight. Turn the Debug
tunable off by default; it stays available to compare the folded look.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray
@blacksmith-sh

This comment has been minimized.

teamleaderleo and others added 2 commits October 20, 2026 17:17
test/tooltip-rules: an element whose text shows carries no title (Leo 2026-10-13).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray
@teamleaderleo teamleaderleo added the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Oct 21, 2026
@blacksmith-sh

blacksmith-sh Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Found 10 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmpvvofv34k/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpw6j17yjc/summary-missing.json (live):/summary-missing.json (live): View Logs
test/agent-pane-background-tasks.test.ts/agent-pane-background-tasks.test View Logs
test/agent-pane-background-tasks.test.ts/agent-pane-background-tasks.test View Logs
test/menu-focus.test.ts/menu-focus.test View Logs
test/menu-focus.test.ts/menu-focus.test View Logs
test/secret-card.test.ts/secret-card.test View Logs
test/secret-card.test.ts/secret-card.test View Logs
test/ui-a11y.test.ts/ui-a11y.test View Logs
test/ui-a11y.test.ts/ui-a11y.test View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@cursor

cursor Bot commented Oct 21, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot uses usage-based billing for this team and requires on-demand usage to be enabled.

A team admin can enable on-demand usage in the Cursor dashboard.

@teamleaderleo
teamleaderleo merged commit 95bdfe2 into feat-cmux-next Oct 21, 2026
@teamleaderleo
teamleaderleo deleted the leo/transcript-density branch October 21, 2026 01:18
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…rst file; adopted tool-calls test follows #22658 (#23011)

* test(webviews): adopted tool calls follow #22658's open groups; a two-file patch row names both (red)

#22658 stopped folding an ended turn's run under one summary line, so the test no longer clicks
"Edited files, ran commands" or the already open commands group. With no diff, the patch-only
edit keeps its own row, and that row must not name only its first file. Red on base: it reads
"Edit CHANGELOG.md" for an edit of CHANGELOG.md and Cargo.toml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92c6bdcb7b4d&host=huge-blue

* fix(webviews): an edit of several files keeps its own title instead of naming the first file

A lone edit with no diff keeps its own row (#22658 lists each call under Worked for). toolLabel
put the action before the edit's first path, so a patch of CHANGELOG.md and Cargo.toml read
"Edit CHANGELOG.md". An edit naming more than one path now keeps the harness's title, "Edit 2
files"; an edit of one file still reads "Edit <its path>".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92c6bdcb7b4d&host=huge-blue

* test(webviews): a bare verb title over several files still names the first file (red)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92c6bdcb7b4d&host=huge-blue

* fix(webviews): only a title that says more than its verb replaces the first file's name

Review of #23011: a bare "Edit" or "patch" title over two files lost its file name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92c6bdcb7b4d&host=huge-blue

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…eading cd (#22994)

* test(agent-pane): message cards say how far they got; shell rows drop the leading cd (red)

From #20456 (cx-bwbfv), ported onto today's rows. On base a delivered message
hides its receipt behind Show more, a sending one has no status line, and a
shell row reads "Ran cd ~/wt/lanes/x && ...".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c31-89b3-7d62-8e8c-b116a23ae693&host=cosmic-gray

* fix(agent-pane): message cards say how far they got; shell rows drop the leading cd

Ported from #20456 (cx-bwbfv, Leo 2026-10-13 transcript row design) onto
today's rows, which #22658 and #22761 since rebuilt.

- A message to another agent shows one status line with a glyph: Sending…,
  Sent, or "Delivered to <recipient>" read from the send's receipt, whose id
  is never shown. The receipt no longer hides behind Show more; anything else
  the send printed shows when the card is opened.
- A shell call's leading `cd <folder> &&` is setup: the row and a group's
  command lines read without it, the opened Shell block names the folder by its
  last part (the full prefix in its tooltip), and Find counts the command as
  the rows draw it. A cd that names no folder (.., ~, -) keeps its prefix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c31-89b3-7d62-8e8c-b116a23ae693&host=cosmic-gray

* gallery(agent-pane): agent messages with their delivery status, and a shell call's folder

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c31-89b3-7d62-8e8c-b116a23ae693&host=cosmic-gray

* fix(agent-pane): a shell row hides only a plain cd folder, never code it ran

Review of #22994: a cd whose folder holds $(…), backticks or $VAR, a ; step,
or a command that is only cd steps keeps its whole text. The folder chip is
skipped by Find, and the message receipt is cut at its own line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c31-89b3-7d62-8e8c-b116a23ae693&host=cosmic-gray

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant