feat(acp): allow host policy to decide permission requests - #4066
feat(acp): allow host policy to decide permission requests#4066Silentpartnercoding wants to merge 1 commit into
Conversation
|
@BradGroux I implemented the narrow permission-decision callback experiment you outlined and kept the guarantee limited to cooperative |
Signed-off-by: James <james@Jamess-MBP-2.lan>
a08cf54 to
e9159e4
Compare
|
Quick relevance check now that Buzz’s ACP surface has continued moving: #4066 is still mergeable against current Since this PR opened, #4155 and its DCO-clean replacement #4333 have added a broader Guardian proposal that also changes The distinction I see is that #4333 derives an allow/reject choice from Buzz’s fixed permission modes, while #4066 exposes a generic asynchronous host-policy callback, preserves the agent’s exact offered option IDs and kinds, and handles timeout, cancellation, policy errors, and invalid selections explicitly. One boundary I would appreciate maintainer direction on: #4066 currently fails closed when no callback is installed, changing the historical automatic Is the generic injectable seam still useful alongside #4333, or would you prefer that this PR be revised or closed in favor of the Guardian implementation? |
Follow-up to the permission-boundary analysis in #2931.
Buzz’s generic ACP client currently selects
allow_oncewhenever that option is offered. This change adds an injectable asynchronous permission-decision callback so the host can choose among the exact options supplied by the agent.The callback receives the permission request and offered options. A policy decision may select only an option that was actually offered. If the policy is unavailable, times out, is cancelled, returns an error, or selects an invalid option, the client fails closed through an offered rejection option.
The focused tests cover:
Trust boundary
This governs cooperative operations that cross
session/request_permission. It does not provide general filesystem, subprocess, network, MCP, runtime, or operating-system containment. Runtimes that perform work without issuing a permission request remain outside this policy boundary.Verification
cargo test -p buzz-acpcargo build -p buzz-acpcargo fmt --checkcargo clippy -p buzz-acp --all-targets -- -D warningsgit diff --check