From 821b7c80a6f1c7c36dd59ea892f28f8053d91b74 Mon Sep 17 00:00:00 2001 From: SidQin-cyber Date: Fri, 27 Feb 2026 23:19:18 +0800 Subject: [PATCH] fix(browser): avoid extension profile startup deadlock in browser start browser start for driver=extension required websocket tab attachment during ensureBrowserAvailable, which can deadlock startup because tabs can only attach after relay startup succeeds. For extension profiles, only require relay HTTP reachability in startup and leave tab attachment checks to ensureTabAvailable when a concrete tab action is requested. Closes #28701 --- src/browser/server-context.ts | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/browser/server-context.ts b/src/browser/server-context.ts index 7d405c8bfa6..32c53d7874d 100644 --- a/src/browser/server-context.ts +++ b/src/browser/server-context.ts @@ -291,22 +291,15 @@ function createProfileContext( if (isExtension) { if (!httpReachable) { await ensureChromeExtensionRelayServer({ cdpUrl: profile.cdpUrl }); - if (await isHttpReachable(1200)) { - // continue: we still need the extension to connect for CDP websocket. - } else { + if (!(await isHttpReachable(1200))) { throw new Error( `Chrome extension relay for profile "${profile.name}" is not reachable at ${profile.cdpUrl}.`, ); } } - - if (await isReachable(600)) { - return; - } - // Relay server is up, but no attached tab yet. Prompt user to attach. - throw new Error( - `Chrome extension relay is running, but no tab is connected. Click the OpenClaw Chrome extension icon on a tab to attach it (profile "${profile.name}").`, - ); + // Browser startup should only ensure relay availability. + // Tab attachment is checked when a tab is actually required. + return; } if (!httpReachable) {