Repository navigation
agent pane, cmux-tui: a question answered for a chat on another machine reaches that machine's acpmux with its answers - #23999
teamleaderleo wants to merge 6 commits into
Conversation
… the person's proof (red) agent-session-permission refuses an `answers` field (deny_unknown_fields), so a question answered in the Mac pane for a chat on another machine can never reach that machine's acpmux with its answers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d41-f5e8-7631-b4aa-a544e3ef96a8&host=cosmic-gray
…ne reaches that machine's acpmux with its answers
RemoteAcpmuxWire dropped a question's `answers` and sent a bare allow, and
cmux-tui's agent-session-permission refused an `answers` field, so an answer
to a question for a chat on huge-blue never reached that machine's acpmux as
an answer: it was refused there ("approve this on the Mac app"), whatever
proof the pane made. The wire now forwards the answers (objects only), the
attach client sends them, and the session daemon passes them to acpmux
unchanged beside the proof (`agent-session-permission-answers-v1`, at most
64 KiB). An older daemon gets no answers: the app refuses the answer rather
than send a bare allow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d41-f5e8-7631-b4aa-a544e3ef96a8&host=cosmic-gray
…y export, and send a question's answers re-encoded compact (review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d41-f5e8-7631-b4aa-a544e3ef96a8&host=cosmic-gray
|
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)
red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on a62351d to compare; do not merge until green; see lane-rules |
|
Found 8 test failures on Blacksmith runners: Failures
|
|
Owned by nx-chat on big-red · took over from session 01a15d41 |
|
|
|
Bead |
|
Review (codex xhigh via acpmux, correctness first): SHIP at 7b4c4e1 Codex (gpt-6.1-sol, xhigh) on the full diff 783c206..7b4c4e1: no correctness findings. The JSON splice is well formed and can't inject fields. The capability is listed everywhere it's needed. Plain allows are unchanged. The remote relay still refuses agent-session verbs. Every client conformer is updated. A Claude subagent review also returned SHIP at this head, after its two findings were fixed: the capability export file, and compact re-encoding of the answers. Fleet evidence:
|
…proof-covers-answers
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. |
|
Review (codex xhigh via acpmux, correctness first): SHIP at de2b69a Codex (gpt-6.1-sol, xhigh, on cmux16) reviewed this head against the newer base aca5900 that was brought in: no correctness findings in any of the six areas it checked (the splice, where the capability is listed, plain allows unchanged, the relay deny, the tests and conformers, and how the change combines with the base). Evidence at this head:
|
|
|
|
|
|
|
|
|
|
Orphaned: no activity for 14 h, and no lane holds a lease on it. Adopted by the orphan sweep: merged |
|
|
|
|
|
Stale (13d, conflicts); rebuild fresh from feat-cmux-next if still wanted |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
What broke
In the Mac app, answering a question (an AskUserQuestion-style prompt that has
answers) for a chat whose agent runs on another machine (huge-blue) always failed with "approve this on the Mac app: … accepted only from the cmux app". Plain allows to the same chats worked.Part of the cause is the transport.
RemoteAcpmuxWiredropped the answers and sent a bare allow. cmux-tui'sagent-session-permissionalso refused ananswersfield (deny_unknown_fields). So that machine's acpmux never received the answer at all, whatever proof the pane made.The fix
This PR only fixes the transport. The decision proof that covers the answers, the pane signing them, and the page's ticket for a question are #23869 (a separate lane's PR). This PR does not touch
hub/person.rsor the person-proof protocol. Both PRs are needed for the answer to count on huge-blue.RemoteAcpmuxWireforwardsanswers(an object; anything else is refused at the wire).AgentSessionRemoteClient/AgentTabRemoteClient/AgentSessionAttachClientcarryanswers. The attach client re-encodes them compact and puts them in the request.agent-session-permissiontakesanswers(an object of at most 64 KiB) and passes it to acpmux unchanged beside the proof; acpmux still decides. New capabilityagent-session-permission-answers-v1, advertised withagent-session-attach-v1. If the remote daemon is older and lacks it, the app refuses the answer (agent_session.answers_unsupported) instead of sending a bare allow.cmux-tui/spec/commands.md) andplans/cmux-next/daemon-capabilities.jsonupdated.Tests
a_question_answer_carries_its_answers_to_acpmux_unchanged(cmux-tui-coreagent_session_attach_tests.rs): the capability is advertised, non-object answers are a bad request, and an object goes to acpmux with the proof. Red on the test commit c242d6c, green at head (fleet results below).RemoteAcpmuxWireAnswersTests: the wire refuses non-object answers and forwards an object with the nonce and proof.Fleet evidence:
cmux-tui-rust-check.sh test agent_session, step 1b84acceba92214740cde9ba): 94 passed, includinga_question_answer_carries_its_answers_to_acpmux_unchanged. RED run on the test commit c242d6c: pending, reported in a comment.package-test-lane.sh suiteRemoteAcpmuxWireAnswersTests, RemoteAcpmuxObserverTests, AgentPaneRelayedAllowTests, RemoteChildSessionsTests; step 712fcf758ed41d8b4d4c9ed4): all 4 suites passed. Re-run at the head 7b4c4e1 with DaemonCapabilityExportTests added (step ab63efb8018dee32f007b634): all 5 suites passed.cmux-ci compile-check --appfails the same way at the base 783c206 (job 0ba18ab3) and at this head:product 'CmuxSentryReporting' required by ... 'CmuxNextCrashReporting' not found in package 'CmuxSentryTelemetry'. That is a base red, not caused by this PR.No capture: no UI changes. This only changes how a question's answers travel from the pane to another machine's daemon.
Observed / Not run
Observed: the fleet runs above. Not run: a live answer to a huge-blue chat (it needs #23869 too).
Changelog
Fixed: answering an agent's question in a chat on another machine no longer fails with "approve this on the Mac app" (with #23869).
Agent session: cosmic-gray
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Fixes answering a question for a chat on another machine, which always failed with "approve this on the Mac app" because
answersnever reached that machine's acpmux: the wire dropped them and sent a bare allow, and cmux-tui'sagent-session-permissionrefused the field.answers(a JSON object, max 64 KiB) now flows through the wire, the attach client, andagent-session-permissionto acpmux unchanged; non-object answers are refused at the wire.agent-session-permission-answers-v1capability gates the field and is advertised withagent-session-attach-v1; against an older daemon the app refuses the answer (agent_session.answers_unsupported) instead of sending a bare allow.Written for commit 379a990. Summary will update on new commits.