Repository navigation
cmux NEXT agent chat: a Chief's message shows the Chief's name and avatar (#27914) - #27935
Merged
Merged
Conversation
…atar (#27914) A Chief's turn that messages a GUI agent chat was signed with its turn session's name (optchat-<home>-<n>), and the chat drew a robot: the turn session is hidden from the chat list, so no harness or avatar was found. - optchat-chief tags each turn session with the Chief's participant id (cmux.chief.participant) and its own name (mux.label, MUX_CHIEF_TITLE). - acpmux signs a session_message from a Chief's turn with that label and stamps fromChief (prompt_provenance::session_message_from). - The agent page carries fromChief on the message and asks the app for chief.face {chief}; the app answers the name and avatar Home and the sidebar show for that Chief (HomeService.agentPageFace). The line and its From: line draw them; Open chat no longer offers the turn's own session. Fixes #27914 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bugbot needs on-demand usage enabledBugbot 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. |
austinywang
temporarily deployed
to
ci-routing-agent
October 30, 2026 04:00 — with
GitHub Actions
Inactive
|
Found 7 test failures on Blacksmith runners: Failures
|
…#27914) Review: a Chief messages an agent chat by agents_chat_send, which the cmux daemon's pump delivers as an agent_message from acp:<turn>, not by an in-session acpmux send. acpmux now stamps fromChief and the Chief's name on either kind from a Chief's turn session, by its exact id (prompt_provenance::stamp_chief), and the page reads fromChief on both. Also: chief.face refuses a bare agent_; an empty answer is not kept for the page; the name is the one the Chief's tile, header and tab show (chiefName(of:), a rename being saved included). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
austinywang
temporarily deployed
to
ci-routing-agent
October 30, 2026 04:12 — with
GitHub Actions
Inactive
austinywang
temporarily deployed
to
ci-routing-agent
October 30, 2026 04:23 — with
GitHub Actions
Inactive
Contributor
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: |
austinywang
temporarily deployed
to
sentry-dsyms
October 30, 2026 04:46 — with
GitHub Actions
Inactive
austinywang
had a problem deploying
to
artifacts
October 30, 2026 04:57 — with
GitHub Actions
Failure
austinywang
added a commit
that referenced
this pull request
Oct 30, 2026
…'s turn speaks as the Chief (#27914) Review follow-ups on #27935: - The app watches what chief.face reads (renames being saved, the Chief records, each Chief's own avatar) and tells every agent page when it changes (chiefFacesChanged); the page asks again for each Chief it drew, so a rename or a new avatar shows on lines already on screen. - acpmux stamps fromChief only for a session that is a Chief's turn (cmux.chief set and cmux.chief.role=turn), not for any session that carries a participant tag (a compactor, another agent). - chief.face takes the Chief's name from its own conversation, passing over a group whose one Chief it is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lawrencecchen
added a commit
that referenced
this pull request
Oct 30, 2026
Contributor
|
Shipped in:
|
This was referenced Oct 30, 2026
teamleaderleo
added a commit
that referenced
this pull request
Oct 30, 2026
…rates (WIP) PR CI never ran cmux-tui.yml, so the panic ratchet only ran on base dispatches and #27935 landed two acpmux indexing_slicing hits that turned lint (linux) red. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-2e7cd658706e930369b8
This was referenced Oct 30, 2026
teamleaderleo
added a commit
that referenced
this pull request
Oct 30, 2026
#27935 gave a Chief turn session a fifth tag, cmux.chief.participant (the Chief's participant id, which acpmux stamps as fromChief). The harness test still counted 4 tags, so it fails on feat-cmux-next. It now counts 5 and checks the participant tag is the Chief's id. Agent-Session: https://cmux.com/deeplink/agent?id=aid-c11d09c9f41988fc1d93 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo
added a commit
that referenced
this pull request
Oct 30, 2026
* acpmux: restart tool previews cut strings without slicing (4 string_slice hits from #26984) The Rust panic ratchet is red on feat-cmux-next: acpmux string_slice 98 > baseline 94. The four new hits are in hub/restart_resume.rs, added by 84705bd (#26984): input_prefix and masked_scan cut at a char boundary with `[..end]`, mask_input_assignments with `[..assignment.end()]`, and safe_tool_text with `[..at]`. The two char-boundary cuts share one `char_prefix` helper that reads with `str::get`; the regex-end and rfind cuts use `get` too. Every index was already a char boundary, so behaviour is unchanged; the unreachable None arms keep the redacting side ("[secret]" alone, or an empty prefix). A new test cuts multibyte text at each spot. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-d9e7e9f7fb2b87a57d5f * ci(cmux-tui): run the Rust panic ratchet on PRs that touch cmux-tui crates (WIP) PR CI never ran cmux-tui.yml, so the panic ratchet only ran on base dispatches and #27935 landed two acpmux indexing_slicing hits that turned lint (linux) red. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-2e7cd658706e930369b8 * ci(cmux-tui): trigger ratchet when its baseline changes Agent-Session: https://cmux.com/deeplink/agent?id=aid-2e7cd658706e930369b8 * ci: rebaseline tracked Rust lint counts from Linux Agent-Session: https://cmux.com/deeplink/agent?id=aid-2e7cd658706e930369b8 * ci(cmux-tui): run ratchet for baseline-only changes Agent-Session: https://cmux.com/deeplink/agent?id=aid-2e7cd658706e930369b8 * ci(cmux-tui): record current Linux arithmetic count Agent-Session: https://cmux.com/deeplink/agent?id=aid-2e7cd658706e930369b8 * ci(cmux-tui): preserve baseline formatting Agent-Session: https://cmux.com/deeplink/agent?id=aid-2e7cd658706e930369b8 * ci(cmux-tui): record current Linux TUI counts Agent-Session: https://cmux.com/deeplink/agent?id=aid-2e7cd658706e930369b8 * ci(cmux-tui): baseline existing ratchet hits at rollout tip Agent-Session: https://cmux.com/deeplink/agent?id=aid-2e7cd658706e930369b8 * ci(cmux-tui): align baseline metadata and core count with measurement Agent-Session: https://cmux.com/deeplink/agent?id=aid-2e7cd658706e930369b8 --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
Base red after this PR: its What's New highlight had no tryIt action or docs link, so scripts/whats-new/test_digest.py (release-notary) failed. Fix: #28441. |
austinywang
added a commit
that referenced
this pull request
Oct 30, 2026
…28458) test_digest.py requires every highlight to have a tryIt action or docs link. chief-name-in-agent-chats.md (#27935) and shell-agent-identity.md (#26627) landed without one, turning workflow-guard-tests / release-notary red on feat-cmux-next and on every PR that runs it. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
lawrencecchen
added a commit
that referenced
this pull request
Oct 31, 2026
…e red) (#28114) chief-name-in-agent-chats.md (#27935) and shell-agent-identity.md (#26627) had no action, deeplink or docs link, so scripts/whats-new/test_digest.py (test_the_repository_highlights_validate) failed in nightly-guards / release-notary on every feat-cmux-next PR. Both are agent-chat changes, so the action opens a new agent chat, the same action the other agent-chat highlights use.
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Fixes #27914
What
When a Chief sends a message into a GUI agent chat, the line and the opened message's
From:line now show that Chief's name and avatar, the same ones Home and the sidebar show. Before, they showed the Chief turn's internal session name (optchat-b902d10e-2991) and a robot icon.Why it happened
A Chief runs each turn as an acpmux session named
optchat-<home id>-<n>. When that turn sends another chat a message, acpmux signs it as asession_messageusing the sender session's name. The receiving page could not find that session in its chat list, because Chief sessions are hidden, so it had no harness or avatar to draw and fell back toBot. Nothing on the session said which Chief it belonged to.Change
acpmux::turn_tags): each turn session is now tagged with the Chief's participant id (cmux.chief.participant) and the Chief's own name (mux.label, fromMUX_CHIEF_TITLE, falling back to "Chief"). Approval cards already readmux.label, so they now name the Chief too.prompt_provenance::session_message_from): asession_messagefrom a Chief's turn is signed with that label and getsfromChief(the participant id). Every other sender is unchanged.incomingMessage.ts,chiefFace.ts,IncomingMessageCard.tsx): the message carrieschief. The line asks the appchief.face {chief}and draws the returned name and picture (or text avatar). It no longer offers Open chat on the Chief's hidden turn session.chief.facerequest,HomeService.agentPageFace,AgentAvatars.chiefFace): returns the Chief's name from the Home participants and Chief records, and its face fromchiefFaces, falling back to its character picture (the default Chief's sidebar picture foragent_mux). A rename shows up the next time the page asks.Changelog
Summary by cubic
Fixes the agent chat so a Chief's messages show the Chief's name and avatar instead of an internal session name (
optchat-…) and a robot icon.MUX_CHIEF_TITLE, falling back to "Chief").acpmux send(session_message) or byagents_chat_send(agent_messagevia the daemon's pump) — with that name andfromChief; other senders are unchanged.chief.facerequest and draws the returned name and avatar on the message line and its From: line. An empty or failed answer is not kept, so a later line asks again.Written for commit b88da66. Summary will update on new commits.