Preflight auth for codex-acp

Richard Feldman created

Change summary

crates/agent_ui/src/acp/thread_view.rs | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Detailed changes

crates/agent_ui/src/acp/thread_view.rs 🔗

@@ -577,6 +577,31 @@ impl AcpThreadView {
 
                         AgentDiff::set_active_thread(&workspace, thread.clone(), window, cx);
 
+                        // Proactively surface Authentication Required if the agent advertises auth methods.
+                        if let Some(acp_conn) = thread
+                            .read(cx)
+                            .connection()
+                            .clone()
+                            .downcast::<agent_servers::AcpConnection>()
+                        {
+                            let methods = acp_conn.auth_methods();
+                            if !methods.is_empty() {
+                                // Immediately transition to auth-required UI, but defer to avoid re-entrant update.
+                                let err = AuthRequired {
+                                    description: None,
+                                    provider_id: None,
+                                };
+                                let this_weak = cx.weak_entity();
+                                let agent = agent.clone();
+                                let connection = thread.read(cx).connection().clone();
+                                window.defer(cx, move |window, cx| {
+                                    Self::handle_auth_required(
+                                        this_weak, err, agent, connection, window, cx,
+                                    );
+                                });
+                            }
+                        }
+
                         this.model_selector = thread
                             .read(cx)
                             .connection()