Repository navigation
Agent chat: an approved permission ask reads on its tool row; Bypass permissions' own approvals draw nothing - #33408
Conversation
…permissions' own approvals draw nothing Leo, 2026-11-02, on a loose 'Approved: cd /tmp; for i in 1 2 3; do gh issue create ... (Bypass permissions)' line: "but what's going on with these?" Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for Yours to fix: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: web / Web status; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules Shipped in:
|
The live and resync cases of agent-pane-permission-receipt checked the Approved mark while the call still ran, when the live line draws it; they now finish the call first. Fixes the red #33408 left. Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Fix-forward of the review finding on #33408: an MCP call renders through McpCallRows, which never drew tool.approved, so its approval vanished once the receipt line went. Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…29938's live line (#33614) * base red: the spacing table finds the live line across its lead span (#33241) #33241 draws the live line's verb in its own span ("Sending" | " message to …"), so no single text node holds "Sending message to" and step-to-live / live-to-step measured nothing. The test now finds the live line by its row's text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-2f629b93d5a20c58e6f8 * base red: the codex live line test reads the live line's column class (#33157) #33157 gives the live line `cv-worked--live` (its words on the status rows' text column), so its quiet box renders "cv-worked cv-worked--live is-quiet". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-2f629b93d5a20c58e6f8 * base red: the working-counts tray lists its subagents newest first (#33364) #33364 orders the open running tray newest first: Tester (spawned after Reviewer) now leads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-2f629b93d5a20c58e6f8 * base red: the live permission tests move the turn past the approved call (#33408, #33439) In a running turn with nothing after it, the latest finished call is lifted onto the live line (turns.ts liftedStep, #29938), so its row and its Approved mark are not drawn. #33439 pushed only the call's completion; the tests now push the reply's first words after it, the state the passing resync test already reaches. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-2f629b93d5a20c58e6f8 --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Leo, on a loose transcript line in the NEXT nightly,
Approved: cd /tmp; for i in 1 2 3; do gh issue create --repo manaflow-ai/cmux --title "$( [ $i = 1 ] && echo 'Cloud start-session: (Bypass permissions): "but what's going on with these?"Cause
acpmux logs
permission_autowithfullAccesswhenever a chat in Bypass permissions (Claude Code) or Full access (Codex) approves an ask on its own, including Claude Code's own guards (#25214). The pane (direct.tsrecordFullAccess) drew every one of those as apermissionRecordrow: "Approved: {title} ({mode})". The title is Claude Code's permission title, which is the raw command cut to a length, so the line showed half a command with the mode glued onto it. Ask-mode approvals (recordPermission) drew the same kind of loose line ("Allowed: …").Change
ApprovedMark.tsx,tool.approved). It no longer draws a receipt line. The mark stays on the call as its result streams in.tools.approved, with its translations taken from the existingheader.prReview.approved.Gallery:
agent-pane.approved-tool-row(ask-mode-approved,run-one-approved,bypass-nothing).Spec: leo-workspace
design/chat-transcript.md("Permission approvals"), updated alongside.Tests
test/agent-pane-permission-receipt.test.tsis rewritten to match: approved asks show no receipt line and markcall-test; bypass, full-access and policy approvals show nothing; mode-switch approvals, live and replayed, mark the call once; a resync marks it once and keeps the reply whole.pane-englishpass on the fleet. The browser test runs in CI.🤖 Generated with Claude Code
Agent session: agent session