---
schema_version: 1
route: /t/browse.md
tool: "browse"
---

# sincecutoff.com /t/browse — Browse CLI (Stagehand)

- name: Browse CLI (Stagehand)
- kind: cli
- children: none
- homepage: <https://www.stagehand.dev/>

Changes to the tools coding agents drive, since a model's training cutoff, each linked to its first-party source. Check installed versions and limitations before acting; a cutoff date does not establish what a model knows.
Original editorial content: [Apache 2.0](https://sincecutoff.com/v1/data-license.txt), by [0xPatrick](https://0xpatrick.dev). Preserve applicable license and [NOTICE](https://sincecutoff.com/notice.txt) attribution when redistributing. Third-party source text and examples retain their own rights. [License scope and attribution](https://sincecutoff.com/v1/license.json).
To stay current, read the changes feed: [`/v1/changes.md?tool=browse`](https://sincecutoff.com/v1/changes.md?tool=browse) (or `.json`), adding `since=YYYY-MM-DD` for your training cutoff. Entries for registered children are included; the registry itself is `/v1/tools.json`. How to page and save your place: [llms.txt](https://sincecutoff.com/llms.txt).

### browse cloud search adds --provider and --mode flags (2026-10-14)
- slug: browse-cloud-search-adds-provider-and-mode-flags-6f145ab03528
- score: 0.98

How to use it:

When searching the web with a chosen provider or mode, run `browse cloud search` with a query and the relevant flags. Provider and mode selection requires the Search API upgrade, which the versioned source says was not yet deployed.

Examples:

```
browse cloud search "<query>" --provider parallel --mode fast
```

```
browse cloud search "<query>" --provider parallel --mode advanced
```

```
browse cloud search "<query>" --provider exa
```

- why_it_matters: Search the cloud while specifying a provider or search mode.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#0112>, <https://github.com/browserbase/stagehand/blob/e48dc5b2d2f0a0a2ed23226cacc562243e2cc888/packages/cli/src/commands/cloud/search.ts>
- gotchas: "Version: 0.11.2"; "query (required): Search query."; "--provider: Search provider: `parallel` or `exa`. Omit to use the API default."; "--mode: Search tier: `fast` or `advanced` (Parallel only). Omit to use the provider's default tier. The docs do not state whether mode and provider are mutually exclusive."; "Prerequisite: Provider and mode selection requires the Search API upgrade; the versioned source says it was unavailable until that upgrade was deployed."

### functions init scaffolds a Stagehand project (2026-09-30)
- slug: functions-init-scaffolds-a-stagehand-project-206e956b2490
- score: 0.96

How to use it:

To scaffold a Stagehand project, run `browse functions init <project-name>`; the release note says the initializer installs `@browserbasehq/stagehand`, installs its Zod version, and writes a Stagehand starter function.

Examples:

```
browse functions init <project-name>
```

- why_it_matters: Initialize a Stagehand project from the CLI.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#0111>, <https://github.com/browserbase/skills/blob/main/skills/functions/SKILL.md>
- gotchas: "Version: 0.11.1"; "<project-name>: Project name; the current official skill shows it as the command argument but does not document a default."; "Prerequisite: Install the `browse` CLI; the official skill specifies Node.js 18+ and pnpm or npm."; "Docs conflict: The current official Functions skill documents `browse functions init <name>` and shows a Playwright `playwright-core` starter. The release note for 0.11.1 says the initializer installs Stagehand and writes a Stagehand starter. The current documentation may describe a different version; it does not establish 0.11.1 behavior."

### browse functions secrets attach links a project secret by ID (2026-09-23)
- slug: browse-functions-secrets-attach-links-a-project-secret-by-id-3d81448726e6
- score: 0.90

How to use it:

When an existing project secret needs to be available to a published function, run `browse functions secrets attach` with the function ID and secret ID.

Examples:

```
browse functions secrets attach <functionId> <secretId>
```

- why_it_matters: Attach an existing project secret to a function that needs it.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#0110>, <https://github.com/browserbase/sdk-functions-node>
- gotchas: "Version: 0.11.0"; "<functionId> (required): ID of the function to attach the secret to; the docs say to use the ID from `builtFunctions[].id` in the publish output."; "<secretId> (required): ID of the existing secret to attach. The docs show the argument but do not further define it."; "Prerequisite: The project secret must already exist; the README shows creating it with `browse cloud secrets create BROWSERBASE_API_KEY --env BROWSERBASE_API_KEY`."; "Prerequisite: Publish the function first; the README describes attaching the secret to the published function and identifies its ID in the publish output."; "The project secret must already exist; attachment is by function ID."

### browse functions secrets detach removes an attachment while retaining the secret (2026-09-23)
- slug: browse-functions-secrets-detach-removes-an-attachment-while-retaining-the-secret-b845b33d34fb
- score: 0.98

How to use it:

When a function secret attachment should be removed while preserving the project secret, run `browse functions secrets detach`; the official docs found do not specify its arguments.

- why_it_matters: Remove a secret attachment from a function while keeping the project secret available.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#0110>
- gotchas: "Version: 0.11.0"; "Detaching removes the attachment; it does not delete the project secret."

### browse open remote sessions accepts --verified and --proxies (2026-07-02)
- slug: browse-open-remote-sessions-accepts-verified-and-proxies-75f430a4af32
- score: 0.98

How to use it:

When opening a remote Browserbase session with verification or proxies, run `browse open <url> --remote --verified --proxies`; `--verified` requires a Browserbase Scale plan. Keep those settings the same when reopening the session, and use `browse status` or `browse doctor` to inspect session details.

Examples:

```
browse open <url> --remote --verified --proxies
```

- why_it_matters: Open a URL in a remote Browserbase session configured for verification or proxies.
- before: Create a remote session separately, then attach with `--cdp`.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#092>, <https://github.com/browserbase/stagehand/blob/browse@0.9.2/packages/cli/CHANGELOG.md>
- gotchas: "Version: 0.9.2"; "<url> (required): URL to open."; "--remote (required): Selects the remote session mode; `--verified` and `--proxies` are valid only with this flag."; "--verified: Enables Browserbase Verified; requires a Scale plan. Must be used with `--remote`."; "--proxies: Enables Browserbase proxies. Must be used with `--remote`."; "Prerequisite: A Browserbase Scale plan is required for `--verified`."; "`--verified` and `--proxies` are valid only with `--remote` and are never implied."; "`--verified` requires a Browserbase Scale plan."; "The verified/proxies settings are sticky for the session lifetime; requesting different settings on reopen fails with the usual stop-and-reopen error."

### browse screenshot saves a file by default (2026-06-25)
- slug: browse-screenshot-saves-a-file-by-default-e6cf5c406139
- score: 0.97

How to use it:

When capturing a page screenshot with the v0.9.0 `browse` CLI, run `browse screenshot` to save it in the current directory; pass `--base64` to retain the legacy base64 JSON stdout output. The official docs found do not document this changed CLI behavior, so usage and flag details are not_found.

- why_it_matters: Capture a screenshot while debugging or reviewing a page with the browse CLI.
- before: Bare `browse screenshot` invocations printed `{ "base64": "..." }` to stdout. Scripts that parsed that output can pass `--base64` to retain the contract.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#090>
- gotchas: "Version: 0.9.0"; "`--base64` is mutually exclusive with `--path`."; "Bare invocations save in the current directory, using a collision counter instead of overwriting."

### browse managed local sessions accept Chrome launch argument flags (2026-06-17)
- slug: browse-managed-local-sessions-accept-chrome-launch-argument-flags-96d412732017
- score: 0.90

How to use it:

When using a managed local browser session, pass Chrome launch arguments with `--chrome-arg <flag>`, remove selected defaults with `--ignore-default-chrome-arg <flag>`, or disable Chrome defaults with `--no-default-chrome-args`.

Examples:

```
browse open <url> --local --chrome-arg <flag>
```

```
browse open <url> --local --ignore-default-chrome-arg <flag>
```

```
browse open <url> --local --no-default-chrome-args
```

- why_it_matters: When configuring a managed local browser session, control which Chrome launch arguments browse uses.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#085>, <https://github.com/browserbase/stagehand/blob/9971a7b3d8ecca255b4548cfb9128657c053cca7/packages/cli/src/commands/open.ts>, <https://github.com/browserbase/stagehand/blob/9971a7b3d8ecca255b4548cfb9128657c053cca7/packages/cli/CHANGELOG.md#085>
- gotchas: "Version: 0.8.5"; "<url> (required): URL to open."; "--local: Select a local browser session; required for this task."; "--chrome-arg <flag>: Repeatable; appends a Chrome launch argument on top of defaults."; "--ignore-default-chrome-arg <flag>: Repeatable; removes a selected default Chrome launch argument."; "--no-default-chrome-args: Launches without Chrome defaults."; "The flags apply to managed local browser sessions."; "`--chrome-arg <flag>` appends arguments on top of Chrome's defaults."; "`--ignore-default-chrome-arg <flag>` drops specific default arguments."; "`--no-default-chrome-args` launches without any of Chrome's defaults."

### browse cloud fetch supports raw and schema-based JSON output formats (2026-05-21)
- slug: browse-cloud-fetch-supports-raw-and-schema-based-json-output-formats-99949b623261
- score: 0.93

How to use it:

When fetching a page for a coding workflow, run `browse cloud fetch <url>` for Markdown, or choose `--format raw` or `--format json --schema <schema>` for other output formats.

Examples:

```
browse cloud fetch <url>
```

```
browse cloud fetch <url> --format raw
```

```
browse cloud fetch <url> --format json --schema <schema>
```

- why_it_matters: Fetch content through the Browse CLI in a format suitable for processing in a coding workflow.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#080>, <https://app.unpkg.com/browse%400.8.3/files/README.md>, <https://app.unpkg.com/browse%400.9.2/files/skills/browse/SKILL.md>
- gotchas: "Version: 0.8.0"; "<url> (required): Page URL to fetch."; "--format raw: Return the original response body."; "--format json: Use structured JSON extraction; pair with `--schema <schema>`."; "--schema <schema>: Schema for structured extraction; documented with `--format json`."; "Prerequisite: Install the CLI with `npm install -g browse`."; "Prerequisite: Cloud API commands require `BROWSERBASE_API_KEY`."; "Docs conflict: The parameter and format details were found in browse 0.9.2 documentation, newer than the card's 0.8.0 version; 0.8.3 README only confirms the command and Markdown default."

### browse skills list and find discover the Browse.sh catalog (2026-05-17)
- slug: browse-skills-list-and-find-discover-the-browse-sh-catalog-478c1a32d2ff
- score: 0.95

How to use it:

When you need to discover skills in the Browse.sh catalog, use `browse skills list` to list them or `browse skills find` to search. The version 0.7.0 release note confirms both commands; official docs do not provide their arguments or options.

- why_it_matters: Find or list skills available in the Browse.sh catalog while working on a repository.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#070>
- gotchas: "Version: 0.7.0"

### browse driver daemon adds open, status, and stop commands (2026-05-15)
- slug: browse-driver-daemon-adds-open-status-and-stop-commands-3c15201f03d7
- score: 0.94

How to use it:

If you need to open or manage the browse driver daemon, use its top-level `open`, `status`, and `stop` commands. The official documentation for browse 0.6.0 did not surface, so the runnable command forms and their parameters could not be verified.

- why_it_matters: Open and manage a browser driver daemon for repository browser work.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#060>
- gotchas: "Version: 0.6.0"; "This is described as the initial daemon foundation."

### browse skills add installs site-specific skills (2026-05-15)
- slug: browse-skills-add-installs-site-specific-skills-63431b1f02cf
- score: 0.92

How to use it:

When repository work involves a site-specific skill, run `browse skills add <domain>/<task>` to install it. The 0.6.0 release note documents the command but not its arguments; the invocation is not confirmed in docs at that version.

- why_it_matters: Install a site-specific skill for repository work involving that site.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#060>
- gotchas: "Version: 0.6.0"

### browse skills install installs the bundled CLI skill (2026-05-15)
- slug: browse-skills-install-installs-the-bundled-cli-skill-656badaf09e3
- score: 0.93

How to use it:

When using Browse in a repository workflow, run `browse skills install` to install the bundled Browse CLI skill.

Examples:

```
browse skills install
```

- why_it_matters: Install the bundled Browse CLI skill when using Browse in a repository workflow.
- sources: <https://github.com/browserbase/stagehand/blob/main/packages/cli/CHANGELOG.md#060>, <https://github.com/browserbase/stagehand/releases>, <https://github.com/team2027/browserbase-skills/blob/main/skills/browserbase-cli/SKILL.md>
- gotchas: "Version: 0.6.0"; "Prerequisite: The Browse CLI must be installed; the official Browserbase CLI skill documents installation with `npm install -g browse`."; "The installed skill is the bundled Browse CLI skill."

### browse cdp attaches to a CDP target and streams events (2026-04-27)
- slug: browse-cdp-attaches-to-a-cdp-target-and-streams-events-83b0009f7b44
- score: 0.93

How to use it:

When debugging a repository’s browser workflow, run `browse cdp <url|port>` to attach to a CDP target and stream DevTools protocol events as NDJSON; use `--domain` to filter events or `--pretty` for human-readable output. [Browse CLI 0.6.0 changelog](https://github.com/browserbase/stagehand/blob/@browserbasehq/browse-cli@0.6.0/packages/cli/CHANGELOG.md)

Examples:

```
browse cdp <url|port>
```

```
browse cdp <port> --domain <domain> --pretty
```

```
browse cdp <port> | jq '.method'
```

- why_it_matters: Inspect DevTools protocol events from a CDP target while debugging a repository's browser workflow.
- sources: <https://github.com/browserbase/stagehand/blob/@browserbasehq/browse-cli@0.6.0/packages/cli/CHANGELOG.md#060>, <https://github.com/browserbase/stagehand/blob/@browserbasehq/browse-cli@0.6.0/packages/cli/CHANGELOG.md>, <https://github.com/browserbase/skills/blob/main/skills/browser/REFERENCE.md>
- gotchas: "Version: @browserbasehq/browse-cli@0.6.0"; "<url|port> (required): CDP target WebSocket URL or port to attach to."; "--domain <domains...>: Select CDP domains to enable; repeatable. The current reference lists Network, Console, Runtime, Log, and Page as defaults."; "--pretty: Use human-readable output instead of JSON; current reference says it is auto-enabled for a TTY."; "Docs conflict: The only detailed command reference found is on the current skills main branch, which may describe behavior newer than version 0.6.0; it does not establish that defaults or TTY behavior apply to 0.6.0."

### browse upload sends files to file input elements (2026-04-27)
- slug: browse-upload-sends-files-to-file-input-elements-528f584bdd0c
- score: 0.98

How to use it:

When the target is an `<input type="file">`, run `browse upload` with its selector and one or more file paths. It supports local and remote Browserbase sessions.

Examples:

```
browse upload "#fileUpload" ./document.pdf
```

```
browse upload "#files" ./a.png ./b.png
```

- why_it_matters: Upload one or more files to a file input in a local or remote Browserbase session.
- sources: <https://github.com/browserbase/stagehand/blob/@browserbasehq/browse-cli@0.6.0/packages/cli/CHANGELOG.md#060>, <https://github.com/browserbase/skills/blob/main/skills/browser/REFERENCE.md>
- gotchas: "Version: @browserbasehq/browse-cli@0.6.0"; "<selector> (required): Selects the `<input type=\"file\">` element; may be a selector or a ref from `browse snapshot`."; "<files...> (required): One or more file paths to upload."; "Prerequisite: An active browser session with the target file input. Local mode is the default when `BROWSERBASE_API_KEY` is unset; remote mode uses Browserbase when it is set."; "Prerequisite: Remote mode requires `BROWSERBASE_API_KEY`."; "Works with local and remote Browserbase sessions."

### browse env local defaults to an isolated browser; --auto-connect attaches to Chrome (2026-04-01)
- slug: browse-env-local-defaults-to-an-isolated-browser-auto-connect-attaches-to-chrome-5fb8f89b2dd7
- score: 0.94

How to use it:

For an isolated local browser session, run `browse env local`. To use an existing debuggable Chrome, pass `--auto-connect`, or specify a CDP port or URL explicitly.

Examples:

```
browse env local
```

```
browse env local --auto-connect
```

```
browse env local <port|url>
```

- why_it_matters: Run a local browser session for repository development, using an existing debuggable Chrome when needed.
- before: Use `browse env local` to attach to an existing debuggable Chrome.
- sources: <https://github.com/browserbase/stagehand/blob/@browserbasehq/browse-cli@0.6.0/packages/cli/CHANGELOG.md#050>
- gotchas: "Version: 0.5.0"; "--auto-connect: Opt-in path for attaching to an existing debuggable Chrome."; "<port|url>: Explicit CDP attach target: a port or URL."; "`--auto-connect` attaches to an existing debuggable Chrome."; "Explicit CDP attach remains available via `browse env local <port|url>`."

### browse get markdown converts page content to Markdown (2026-03-31)
- slug: browse-get-markdown-converts-page-content-to-markdown-d175cba54486
- score: 0.95

How to use it:

When reviewing a page’s content during repository work, run `browse get markdown` to convert the body to Markdown, or pass a selector to convert a specific element.

Examples:

```
browse get markdown
```

```
browse get markdown "<selector>"
```

- why_it_matters: Convert a page or selected page element to Markdown when reviewing its content during repository work.
- sources: <https://github.com/browserbase/stagehand/blob/@browserbasehq/browse-cli@0.6.0/packages/cli/CHANGELOG.md#042>, <https://github.com/browserbase/skills/blob/main/skills/browser/REFERENCE.md>, <https://github.com/browserbase/stagehand/blob/@browserbasehq/browse-cli@0.6.0/packages/cli/CHANGELOG.md>
- gotchas: "Version: 0.4.2"; "selector: Selects a specific element; if omitted, the command uses the page body."; "The selector is optional; body content is the default."

### browse env local auto-discovers debuggable Chrome instances (2026-03-31)
- slug: browse-env-local-auto-discovers-debuggable-chrome-instances-c5dd707934e0
- score: 0.97

How to use it:

When automating in an existing Chrome instance with remote debugging enabled, run `browse env local` to auto-discover and attach; use `--isolated` to launch an isolated browser, a positional CDP target to select a target, or `--ws <port>` with a bare port number. If no debuggable Chrome is found, it falls back to an isolated launch.

- why_it_matters: Run local browser automation against an existing Chrome instance with remote debugging enabled.
- before: Run `browse env local`, which always launches an isolated browser.
- sources: <https://github.com/browserbase/stagehand/blob/@browserbasehq/browse-cli@0.6.0/packages/cli/CHANGELOG.md#040>
- gotchas: "Version: 0.4.0"; "Auto-discovery attaches only to Chrome instances with remote debugging enabled."; "When no debuggable Chrome is found, the command falls back to an isolated launch."

### browse CLI initial release (2026-03-18)
- slug: browse-cli-initial-release-d992ca4ba08b
- score: 0.93

How to use it:

When implementing or debugging repository code requires browser interaction, install and use the `browse` CLI to navigate, inspect, act, and verify page state. The official workflow documents snapshot refs and browser commands for these steps.

Examples:

```
browse open <url>
browse snapshot -c
browse click <ref>
browse type "<text>"
browse screenshot ./page.png
browse stop
```

```
browse open <url>
browse snapshot -c
browse fill <selector-or-ref> "<value>"
browse click <ref>
browse snapshot -c
browse stop
```

- why_it_matters: Automate browser interactions while implementing or debugging repository code.
- sources: <https://github.com/browserbase/stagehand/blob/@browserbasehq/browse-cli@0.6.0/packages/cli/CHANGELOG.md#020>, <https://github.com/browserbase/stagehand/blob/e38c13b7526b140b693152ef1ffda88a74e9c425/packages/cli/README.md>
- gotchas: "Version: 0.2.0"; "open <url> (required): Navigate to a URL; first command auto-starts the browser daemon."; "snapshot -c / --compact: Print the accessibility tree with element refs in compact form."; "click <ref> (required): Click an element by its snapshot ref, such as `@0-5`."; "type <text> (required): Type text; optional `-d` delay and `--mistakes` flags are documented."; "fill <selector> <value> (required): Fill a form field; optional `--no-press-enter` disables pressing Enter."; "screenshot [path]: Capture a screenshot; optional `-f|--full-page` and `-t png|jpeg`."; "stop (required): Stop the browser daemon."; "Prerequisite: Install with `npm install -g @browserbasehq/browse-cli`. Chrome/Chromium must be installed on the system."
