[feat]: forward ignoreDefaultArgs to chrome-launcher - #2127
Merged
seanmcguire12 merged 4 commits intoMay 15, 2026
Conversation
# why When running Stagehand locally, chrome-launcher adds its own set of default flags (e.g. `--disable-extensions`). There's currently no way for consumers to selectively remove these flags — `localBrowserLaunchOptions.chromeFlags` can only *add* flags, not remove chrome-launcher's built-in defaults. This is needed when users want to run Chrome with extensions enabled, or need to remove other chrome-launcher defaults for their use case. # what changed - Added `ignoreDefaultArgs` option to `LaunchLocalOptions` in `local.ts` - Forwarded `localBrowserLaunchOptions.ignoreDefaultArgs` from `v3.ts` through to `launchLocalChrome()` - When `true`: drops all chrome-launcher defaults (only Stagehand's own flags and user-supplied `chromeFlags` are used) - When `string[]`: selectively removes only the listed flags from chrome-launcher defaults, keeping the rest This mirrors the behavior of Playwright's [`ignoreDefaultArgs`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-ignore-default-args) option. # test plan - Verified locally that setting `ignoreDefaultArgs: ["--disable-extensions"]` successfully removes the flag from the launched Chrome instance (confirmed via `chrome://version/`) - Verified that other chrome-launcher defaults are preserved when using the array form - Verified that `ignoreDefaultArgs: true` drops all chrome-launcher defaults <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds `ignoreDefaultArgs` to local Chrome launch and forwards it to `chrome-launcher` so users can drop all or selected default flags while keeping Stagehand and user flags. - **New Features** - Added `ignoreDefaultArgs` to `LaunchLocalOptions` and wired it through V3 to `launchLocalChrome()`, mapping to `chrome-launcher`’s `ignoreDefaultFlags`. - `true` drops all `chrome-launcher` defaults; `string[]` removes only exact-matched defaults and re-adds the rest from `Launcher.defaultFlags()`, preserving Stagehand defaults and user `chromeFlags`. <sup>Written for commit 1426616. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by: Caleb Barnes <CalebBarnes@users.noreply.github.com> Co-authored-by: Mastra Code (anthropic/claude-opus-4-6) <noreply@mastra.ai>
🦋 Changeset detectedLatest commit: e04da99 The changes in this PR will be included in the next version bump. This PR includes changesets to release 4 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Contributor
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Contributor
There was a problem hiding this comment.
No issues found across 5 files
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Architecture diagram
sequenceDiagram
participant User as Consumer Code
participant V3 as V3 Class
participant Local as launchLocalChrome()
participant ChromeL as chrome-launcher
participant Chrome as Chrome Browser
Note over User,Chrome: New: ignoreDefaultArgs forwarding flow
User->>V3: new Stagehand({ localBrowserLaunchOptions: { ignoreDefaultArgs } })
V3->>V3: Store localBrowserLaunchOptions
User->>V3: stagehand.init()
V3->>V3: Read localBrowserLaunchOptions
alt ignoreDefaultArgs is true
V3->>Local: launchLocalChrome({ ignoreDefaultArgs: true })
Local->>Local: Set ignoreDefaultFlags = true
Local->>ChromeL: launch({ ignoreDefaultFlags: true })
ChromeL->>Chrome: Start with NO default flags
else ignoreDefaultArgs is string[]
V3->>Local: launchLocalChrome({ ignoreDefaultArgs: ["--disable-extensions"] })
Local->>Local: Set ignoreDefaultFlags = true
Local->>Local: Get Launcher.defaultFlags()
Local->>Local: Filter out excluded flags
Local->>Local: Prepend kept defaults to chromeFlags
Local->>ChromeL: launch({ chromeFlags, ignoreDefaultFlags: true })
ChromeL->>Chrome: Start with filtered defaults + Stagehand flags
else ignoreDefaultArgs is false/undefined
V3->>Local: launchLocalChrome({ ignoreDefaultArgs: undefined })
Local->>ChromeL: launch({ ignoreDefaultFlags: false })
ChromeL->>Chrome: Start with ALL default flags
end
Chrome-->>ChromeL: Browser instance
ChromeL-->>Local: LaunchedChrome
Local-->>V3: Chrome instance with WS endpoint
V3-->>User: Stagehand initialized
Contributor
There was a problem hiding this comment.
1 issue found across 3 files (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="packages/core/lib/v3/launch/local.ts">
<violation number="1" location="packages/core/lib/v3/launch/local.ts:32">
P1: `ignoreDefaultArgs` currently strips Stagehand default flags, but it should only affect chrome-launcher defaults. This can silently remove required Stagehand launch flags when `ignoreDefaultArgs` is set.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review, or fix all with cubic.
Re-trigger cubic
miguelg719
approved these changes
May 15, 2026
miguelg719
approved these changes
May 15, 2026
This was referenced May 15, 2026
Merged
This was referenced May 23, 2026
seanmcguire12
pushed a commit
that referenced
this pull request
Jun 3, 2026
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @browserbasehq/stagehand@3.5.0 ### Minor Changes - [#2149](#2149) [`6e75725`](6e75725) Thanks [@miguelg719](https://github.com/miguelg719)! - Added a `screenshot` option to `extract()` that sends the current viewport screenshot with the a11y tree for extraction. - [#2127](#2127) [`78bcde8`](78bcde8) Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - Add `ignoreDefaultArgs` option to selectively remove chrome-launcher's built-in default flags (e.g. `--disable-extensions`) when running locally - [#2160](#2160) [`49575d6`](49575d6) Thanks [@monadoid](https://github.com/monadoid)! - Forward constructor and request model configuration when initializing API-backed sessions. - [#2171](#2171) [`dc1445d`](dc1445d) Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - add native clipboard API ### Patch Changes - [#2146](#2146) [`3a53ed4`](3a53ed4) Thanks [@shriyatheunicorn](https://github.com/shriyatheunicorn)! - Pass local browser launch options through when attaching over CDP so explicit viewport settings are respected. - [#2107](#2107) [`8fc16d2`](8fc16d2) Thanks [@miguelg719](https://github.com/miguelg719)! - Fix Anthropic CUA `triple_click` action mapping. - [#2118](#2118) [`3e95a87`](3e95a87) Thanks [@monadoid](https://github.com/monadoid)! - Add Vertex auth parameters to the core and server API schemas. - [#2126](#2126) [`ebbdcd3`](ebbdcd3) Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - fix(core): import ToolSet from ai public export - [#2120](#2120) [`12703a6`](12703a6) Thanks [@miguelg719](https://github.com/miguelg719)! - Fix structuredOutputMode for newer Anthropic models - [#2170](#2170) [`1db5f1c`](1db5f1c) Thanks [@Kylejeong2](https://github.com/Kylejeong2)! - Add Claude Opus 4.8 to the supported CUA model whitelist. - [#2116](#2116) [`cb586a1`](cb586a1) Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - include "[selected]" or "[checked]" state in snapshot - [#2129](#2129) [`765861c`](765861c) Thanks [@miguelg719](https://github.com/miguelg719)! - Add a backend-selectable v3 evaluator facade while preserving the legacy evaluator path. - [#2157](#2157) [`2cd60a3`](2cd60a3) Thanks [@miguelg719](https://github.com/miguelg719)! - Add verifier trajectory, rubric, and evaluation-result types with normalized public naming. - [#2131](#2131) [`e102a89`](e102a89) Thanks [@miguelg719](https://github.com/miguelg719)! - Capture verifier trajectory evidence from agent evidence callbacks for offline scoring. ## @browserbasehq/browse-cli@0.6.1 ### Patch Changes - Updated dependencies \[[`3a53ed4`](3a53ed4), [`6e75725`](6e75725), [`8fc16d2`](8fc16d2), [`78bcde8`](78bcde8), [`3e95a87`](3e95a87), [`ebbdcd3`](ebbdcd3), [`12703a6`](12703a6), [`1db5f1c`](1db5f1c), [`cb586a1`](cb586a1), [`765861c`](765861c), [`2cd60a3`](2cd60a3), [`e102a89`](e102a89), [`49575d6`](49575d6), [`dc1445d`](dc1445d)]: - @browserbasehq/stagehand@3.5.0 ## @browserbasehq/stagehand-server-v3@3.7.0 ### Minor Changes - [#2160](#2160) [`49575d6`](49575d6) Thanks [@monadoid](https://github.com/monadoid)! - Forward constructor and request model configuration when initializing API-backed sessions. ### Patch Changes - [#2118](#2118) [`3e95a87`](3e95a87) Thanks [@monadoid](https://github.com/monadoid)! - Add Vertex auth parameters to the core and server API schemas. - [#2167](#2167) [`ce21468`](ce21468) Thanks [@monadoid](https://github.com/monadoid)! - Add SEA binary --version build metadata output. - Updated dependencies \[[`3a53ed4`](3a53ed4), [`6e75725`](6e75725), [`8fc16d2`](8fc16d2), [`78bcde8`](78bcde8), [`3e95a87`](3e95a87), [`ebbdcd3`](ebbdcd3), [`12703a6`](12703a6), [`1db5f1c`](1db5f1c), [`cb586a1`](cb586a1), [`765861c`](765861c), [`2cd60a3`](2cd60a3), [`e102a89`](e102a89), [`49575d6`](49575d6), [`dc1445d`](dc1445d)]: - @browserbasehq/stagehand@3.5.0 ## @browserbasehq/stagehand-evals@2.0.2 ### Patch Changes - Updated dependencies \[[`3a53ed4`](3a53ed4), [`6e75725`](6e75725), [`8fc16d2`](8fc16d2), [`78bcde8`](78bcde8), [`3e95a87`](3e95a87), [`ebbdcd3`](ebbdcd3), [`12703a6`](12703a6), [`1db5f1c`](1db5f1c), [`cb586a1`](cb586a1), [`765861c`](765861c), [`2cd60a3`](2cd60a3), [`e102a89`](e102a89), [`49575d6`](49575d6), [`dc1445d`](dc1445d)]: - @browserbasehq/stagehand@3.5.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
3 tasks
felipeofdev-ai
pushed a commit
to felipeofdev-ai/stagehand
that referenced
this pull request
Aug 4, 2026
) thanks @CalebBarnes for the contribution! (original PR: browserbase#2074) # why When running Stagehand locally, chrome-launcher adds its own set of default flags (e.g. `--disable-extensions`). There's currently no way for consumers to selectively remove these flags — `localBrowserLaunchOptions.chromeFlags` can only *add* flags, not remove chrome-launcher's built-in defaults. This is needed when users want to run Chrome with extensions enabled, or need to remove other chrome-launcher defaults for their use case. # what changed - Added `ignoreDefaultArgs` option to `LaunchLocalOptions` in `local.ts` - Forwarded `localBrowserLaunchOptions.ignoreDefaultArgs` from `v3.ts` through to `launchLocalChrome()` - When `true`: drops all chrome-launcher defaults (only Stagehand's own flags and user-supplied `chromeFlags` are used) - When `string[]`: selectively removes only the listed flags from chrome-launcher defaults, keeping the rest This mirrors the behavior of Playwright's [`ignoreDefaultArgs`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-ignore-default-args) option. # test plan - Verified locally that setting `ignoreDefaultArgs: ["--disable-extensions"]` successfully removes the flag from the launched Chrome instance (confirmed via `chrome://version/`) - Verified that other chrome-launcher defaults are preserved when using the array form - Verified that `ignoreDefaultArgs: true` drops all chrome-launcher defaults <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds `ignoreDefaultArgs` to local Chrome launch so you can drop all or selected default flags from `chrome-launcher` with exact-match control (including Stagehand defaults), while keeping your own `args`. - **New Features** - Added `ignoreDefaultArgs` to `LaunchLocalOptions` and moved flag assembly into `launchLocalChrome()`, forwarding to `chrome-launcher` via `ignoreDefaultFlags`. - `true` drops all `chrome-launcher` defaults; `string[]` removes only exact-matched defaults and re-adds the rest from `Launcher.defaultFlags()`. Stagehand defaults and user `args` stay unless explicitly listed. <sup>Written for commit e04da99. Summary will update on new commits. <a href="https://cubic.dev/pr/browserbase/stagehand/pull/2127?utm_source=github">Review in cubic</a></sup> <!-- End of auto-generated description by cubic. --> --------- ---------
felipeofdev-ai
pushed a commit
to felipeofdev-ai/stagehand
that referenced
this pull request
Aug 4, 2026
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @browserbasehq/stagehand@3.5.0 ### Minor Changes - [browserbase#2149](browserbase#2149) [`6e75725`](browserbase@6e75725) Thanks [@miguelg719](https://github.com/miguelg719)! - Added a `screenshot` option to `extract()` that sends the current viewport screenshot with the a11y tree for extraction. - [browserbase#2127](browserbase#2127) [`78bcde8`](browserbase@78bcde8) Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - Add `ignoreDefaultArgs` option to selectively remove chrome-launcher's built-in default flags (e.g. `--disable-extensions`) when running locally - [browserbase#2160](browserbase#2160) [`49575d6`](browserbase@49575d6) Thanks [@monadoid](https://github.com/monadoid)! - Forward constructor and request model configuration when initializing API-backed sessions. - [browserbase#2171](browserbase#2171) [`dc1445d`](browserbase@dc1445d) Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - add native clipboard API ### Patch Changes - [browserbase#2146](browserbase#2146) [`3a53ed4`](browserbase@3a53ed4) Thanks [@shriyatheunicorn](https://github.com/shriyatheunicorn)! - Pass local browser launch options through when attaching over CDP so explicit viewport settings are respected. - [browserbase#2107](browserbase#2107) [`8fc16d2`](browserbase@8fc16d2) Thanks [@miguelg719](https://github.com/miguelg719)! - Fix Anthropic CUA `triple_click` action mapping. - [browserbase#2118](browserbase#2118) [`3e95a87`](browserbase@3e95a87) Thanks [@monadoid](https://github.com/monadoid)! - Add Vertex auth parameters to the core and server API schemas. - [browserbase#2126](browserbase#2126) [`ebbdcd3`](browserbase@ebbdcd3) Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - fix(core): import ToolSet from ai public export - [browserbase#2120](browserbase#2120) [`12703a6`](browserbase@12703a6) Thanks [@miguelg719](https://github.com/miguelg719)! - Fix structuredOutputMode for newer Anthropic models - [browserbase#2170](browserbase#2170) [`1db5f1c`](browserbase@1db5f1c) Thanks [@Kylejeong2](https://github.com/Kylejeong2)! - Add Claude Opus 4.8 to the supported CUA model whitelist. - [browserbase#2116](browserbase#2116) [`cb586a1`](browserbase@cb586a1) Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - include "[selected]" or "[checked]" state in snapshot - [browserbase#2129](browserbase#2129) [`765861c`](browserbase@765861c) Thanks [@miguelg719](https://github.com/miguelg719)! - Add a backend-selectable v3 evaluator facade while preserving the legacy evaluator path. - [browserbase#2157](browserbase#2157) [`2cd60a3`](browserbase@2cd60a3) Thanks [@miguelg719](https://github.com/miguelg719)! - Add verifier trajectory, rubric, and evaluation-result types with normalized public naming. - [browserbase#2131](browserbase#2131) [`e102a89`](browserbase@e102a89) Thanks [@miguelg719](https://github.com/miguelg719)! - Capture verifier trajectory evidence from agent evidence callbacks for offline scoring. ## @browserbasehq/browse-cli@0.6.1 ### Patch Changes - Updated dependencies \[[`3a53ed4`](browserbase@3a53ed4), [`6e75725`](browserbase@6e75725), [`8fc16d2`](browserbase@8fc16d2), [`78bcde8`](browserbase@78bcde8), [`3e95a87`](browserbase@3e95a87), [`ebbdcd3`](browserbase@ebbdcd3), [`12703a6`](browserbase@12703a6), [`1db5f1c`](browserbase@1db5f1c), [`cb586a1`](browserbase@cb586a1), [`765861c`](browserbase@765861c), [`2cd60a3`](browserbase@2cd60a3), [`e102a89`](browserbase@e102a89), [`49575d6`](browserbase@49575d6), [`dc1445d`](browserbase@dc1445d)]: - @browserbasehq/stagehand@3.5.0 ## @browserbasehq/stagehand-server-v3@3.7.0 ### Minor Changes - [browserbase#2160](browserbase#2160) [`49575d6`](browserbase@49575d6) Thanks [@monadoid](https://github.com/monadoid)! - Forward constructor and request model configuration when initializing API-backed sessions. ### Patch Changes - [browserbase#2118](browserbase#2118) [`3e95a87`](browserbase@3e95a87) Thanks [@monadoid](https://github.com/monadoid)! - Add Vertex auth parameters to the core and server API schemas. - [browserbase#2167](browserbase#2167) [`ce21468`](browserbase@ce21468) Thanks [@monadoid](https://github.com/monadoid)! - Add SEA binary --version build metadata output. - Updated dependencies \[[`3a53ed4`](browserbase@3a53ed4), [`6e75725`](browserbase@6e75725), [`8fc16d2`](browserbase@8fc16d2), [`78bcde8`](browserbase@78bcde8), [`3e95a87`](browserbase@3e95a87), [`ebbdcd3`](browserbase@ebbdcd3), [`12703a6`](browserbase@12703a6), [`1db5f1c`](browserbase@1db5f1c), [`cb586a1`](browserbase@cb586a1), [`765861c`](browserbase@765861c), [`2cd60a3`](browserbase@2cd60a3), [`e102a89`](browserbase@e102a89), [`49575d6`](browserbase@49575d6), [`dc1445d`](browserbase@dc1445d)]: - @browserbasehq/stagehand@3.5.0 ## @browserbasehq/stagehand-evals@2.0.2 ### Patch Changes - Updated dependencies \[[`3a53ed4`](browserbase@3a53ed4), [`6e75725`](browserbase@6e75725), [`8fc16d2`](browserbase@8fc16d2), [`78bcde8`](browserbase@78bcde8), [`3e95a87`](browserbase@3e95a87), [`ebbdcd3`](browserbase@ebbdcd3), [`12703a6`](browserbase@12703a6), [`1db5f1c`](browserbase@1db5f1c), [`cb586a1`](browserbase@cb586a1), [`765861c`](browserbase@765861c), [`2cd60a3`](browserbase@2cd60a3), [`e102a89`](browserbase@e102a89), [`49575d6`](browserbase@49575d6), [`dc1445d`](browserbase@dc1445d)]: - @browserbasehq/stagehand@3.5.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
thanks @CalebBarnes for the contribution! (original PR: #2074)
why
When running Stagehand locally, chrome-launcher adds its own set of default flags (e.g.
--disable-extensions). There's currently no way for consumers to selectively remove these flags —localBrowserLaunchOptions.chromeFlagscan only add flags, not remove chrome-launcher's built-in defaults.This is needed when users want to run Chrome with extensions enabled, or need to remove other chrome-launcher defaults for their use case.
what changed
ignoreDefaultArgsoption toLaunchLocalOptionsinlocal.tslocalBrowserLaunchOptions.ignoreDefaultArgsfromv3.tsthrough tolaunchLocalChrome()true: drops all chrome-launcher defaults (only Stagehand's own flags and user-suppliedchromeFlagsare used)string[]: selectively removes only the listed flags from chrome-launcher defaults, keeping the restThis mirrors the behavior of Playwright's
ignoreDefaultArgsoption.test plan
ignoreDefaultArgs: ["--disable-extensions"]successfully removes the flag from the launched Chrome instance (confirmed viachrome://version/)ignoreDefaultArgs: truedrops all chrome-launcher defaultsSummary by cubic
Adds
ignoreDefaultArgsto local Chrome launch so you can drop all or selected default flags fromchrome-launcherwith exact-match control (including Stagehand defaults), while keeping your ownargs.ignoreDefaultArgstoLaunchLocalOptionsand moved flag assembly intolaunchLocalChrome(), forwarding tochrome-launcherviaignoreDefaultFlags.truedrops allchrome-launcherdefaults;string[]removes only exact-matched defaults and re-adds the rest fromLauncher.defaultFlags(). Stagehand defaults and userargsstay unless explicitly listed.Written for commit e04da99. Summary will update on new commits. Review in cubic