diff --git a/crates/agent_ui/src/acp/thread_view/active_thread.rs b/crates/agent_ui/src/acp/thread_view/active_thread.rs index 1e8c7d35a3cb9214f557399a34244b7f2bf665c5..264897b31887e5b19ec182be453c23d8b7e7802e 100644 --- a/crates/agent_ui/src/acp/thread_view/active_thread.rs +++ b/crates/agent_ui/src/acp/thread_view/active_thread.rs @@ -4479,6 +4479,12 @@ impl AcpThreadView { ToolCallStatus::Rejected | ToolCallStatus::Canceled | ToolCallStatus::Failed ); + let confirmation_options = match &tool_call.status { + ToolCallStatus::WaitingForConfirmation { options, .. } => Some(options), + _ => None, + }; + let needs_confirmation = confirmation_options.is_some(); + let output = terminal_data.output(); let command_finished = output.is_some(); let truncated_output = @@ -4547,7 +4553,7 @@ impl AcpThreadView { .color(Color::Muted), ), ) - .when(!command_finished, |header| { + .when(!command_finished && !needs_confirmation, |header| { header .gap_1p5() .child( @@ -4725,6 +4731,14 @@ impl AcpThreadView { })), ) }) + .when_some(confirmation_options, |this, options| { + this.child(self.render_permission_buttons( + options, + entry_ix, + tool_call.id.clone(), + cx, + )) + }) .into_any() }