From 039fc1e04c0ab71d1406005b2c91866517424858 Mon Sep 17 00:00:00 2001 From: JayMishra-github Date: Mon, 16 Feb 2026 10:17:34 -0800 Subject: [PATCH] feat(browser): add extraArgs config for custom Chrome launch arguments Adds a `browser.extraArgs` config option (string array) that is appended to Chrome's launch arguments. This enables users to add stealth flags, window size overrides, custom user-agent strings, or other Chrome flags without patching the source code. Example config: browser.extraArgs: ["--window-size=1920,1080", "--disable-infobars"] Co-Authored-By: Claude Opus 4.6 --- src/browser/chrome.ts | 5 +++++ src/browser/config.ts | 6 ++++++ src/config/types.browser.ts | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/src/browser/chrome.ts b/src/browser/chrome.ts index 3d944aa35df..b6e99576ae0 100644 --- a/src/browser/chrome.ts +++ b/src/browser/chrome.ts @@ -217,6 +217,11 @@ export async function launchOpenClawChrome( // Stealth: hide navigator.webdriver from automation detection (#80) args.push("--disable-blink-features=AutomationControlled"); + // Append user-configured extra arguments (e.g., stealth flags, window size) + if (resolved.extraArgs.length > 0) { + args.push(...resolved.extraArgs); + } + // Always open a blank tab to ensure a target exists. args.push("about:blank"); diff --git a/src/browser/config.ts b/src/browser/config.ts index 52a8bfd3bc3..ffb4a85bd83 100644 --- a/src/browser/config.ts +++ b/src/browser/config.ts @@ -31,6 +31,7 @@ export type ResolvedBrowserConfig = { attachOnly: boolean; defaultProfile: string; profiles: Record; + extraArgs: string[]; }; export type ResolvedBrowserProfile = { @@ -196,6 +197,10 @@ export function resolveBrowserConfig( ? DEFAULT_BROWSER_DEFAULT_PROFILE_NAME : DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME); + const extraArgs = Array.isArray(cfg?.extraArgs) + ? cfg.extraArgs.filter((a): a is string => typeof a === "string" && a.trim().length > 0) + : []; + return { enabled, evaluateEnabled, @@ -212,6 +217,7 @@ export function resolveBrowserConfig( attachOnly, defaultProfile, profiles, + extraArgs, }; } diff --git a/src/config/types.browser.ts b/src/config/types.browser.ts index 764c16aea17..18567d74586 100644 --- a/src/config/types.browser.ts +++ b/src/config/types.browser.ts @@ -38,4 +38,10 @@ export type BrowserConfig = { profiles?: Record; /** Default snapshot options (applied by the browser tool/CLI when unset). */ snapshotDefaults?: BrowserSnapshotDefaults; + /** + * Additional Chrome launch arguments. + * Useful for stealth flags, window size overrides, or custom user-agent strings. + * Example: ["--window-size=1920,1080", "--disable-infobars"] + */ + extraArgs?: string[]; };