From 52291e64a7f194b035d83d65334004759038f7fc Mon Sep 17 00:00:00 2001 From: Lifei Zhou Date: Sun, 28 Jun 2026 19:54:51 +1000 Subject: [PATCH] feat (acp+): Use ACP permission manager for tool permissions (#10066) --- crates/goose/src/acp/server/tools.rs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/crates/goose/src/acp/server/tools.rs b/crates/goose/src/acp/server/tools.rs index 654a2b36a..87a7cf30d 100644 --- a/crates/goose/src/acp/server/tools.rs +++ b/crates/goose/src/acp/server/tools.rs @@ -13,9 +13,7 @@ impl GooseAcpAgent { let session_id = &req.session_id; let agent = self.get_session_agent(&req.session_id).await?; let goose_mode = agent.goose_mode().await; - // Read from the global static manager so REST-based confirmToolAction approvals - // (which update PermissionManager::instance()) are reflected here immediately. - let permission_manager = crate::config::PermissionManager::instance(); + let permission_manager = self.permission_manager(); let mut tools: Vec = agent .list_tools(session_id, req.extension_name) @@ -124,17 +122,14 @@ impl GooseAcpAgent { &self, req: SetToolPermissionsRequest, ) -> Result { - let acp_permission_manager = self.permission_manager(); - // Also update the global static manager used by HTTP agents when USE_ACP_CHAT is false. - let global_permission_manager = crate::config::PermissionManager::instance(); + let permission_manager = self.permission_manager(); for entry in &req.tool_permissions { let level = match entry.permission { ToolPermissionLevel::AlwaysAllow => PermissionLevel::AlwaysAllow, ToolPermissionLevel::AskBefore => PermissionLevel::AskBefore, ToolPermissionLevel::NeverAllow => PermissionLevel::NeverAllow, }; - acp_permission_manager.update_user_permission(&entry.tool_name, level.clone()); - global_permission_manager.update_user_permission(&entry.tool_name, level); + permission_manager.update_user_permission(&entry.tool_name, level); } Ok(SetToolPermissionsResponse {}) }