Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server-v3/v3.6.7...stagehand-server-v3/v3.6.8
ignoreSelectors to observe() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/2096Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server-v3/v3.6.6...stagehand-server-v3/v3.6.7
Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server-v3/v3.6.5...stagehand-server-v3/v3.6.6
ignoreSelectors to extract() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/2084Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server-v3/v3.6.4...stagehand-server-v3/v3.6.5
Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.6.0...stagehand-server-v3/v3.6.4
666baf1 Thanks @shrey150! - Add global flags for commonly used Browserbase session parameters (--proxies, --advanced-stealth, --solve-captchas, --region, --keep-alive, --session-timeout, --block-ads). These flags configure the Browserbase session in remote mode.#1905 a4ca430 Thanks @derekmeegan! - Add browse cdp <url|port> command to attach to any CDP target and stream DevTools protocol events as NDJSON. Supports --domain filtering, --pretty mode for human-readable output, and clean piping to files or jq.
#1906 34598b9 Thanks @derekmeegan! - Add browse upload <selector> <files...> command for uploading files to <input type="file"> elements. Supports single and multiple file uploads, works with both local and remote Browserbase sessions.
#2056 e87f167 Thanks @derekmeegan! - browse cdp now also calls Page.setLifecycleEventsEnabled whenever the Page domain is enabled, so consumers receive Page.lifecycleEvent notifications (init, commit, DOMContentLoaded, load, firstPaint, firstContentfulPaint, networkAlmostIdle, networkIdle, etc.) in addition to Page.frameNavigated. --pretty mode formats lifecycle events with the milestone name. No effect on consumers that pass --domain without Page.
#2049 ed4db53 Thanks @shrey150! - Use the exact DevToolsActivePort websocket path for local auto-connect and bare-port CDP attach to avoid extra remote debugging probes before the real browser connection.
Managing model providers adds friction to every Stagehand setup. Model Gateway removes that layer by handling routing, retries, and billing at market price with no markup. Pass your Browserbase API key and pick a model—switch between OpenAI, Anthropic, and Gemini with a one-line change. No new accounts, reworked setup, or extra friction needed.
.model_json_schema() by @miguelg719 in https://github.com/browserbase/stagehand/pull/1873method arg to /click route stub by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1884/scroll route stub by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1875/elementInfo route stub by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1877timeout -> timeoutMs by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1901browse get markdown command by @derekmeegan in https://github.com/browserbase/stagehand/pull/1907Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server-v3/v3.6.2...stagehand-server-v3/v3.6.3
Browserbase and Prime Intellect partnered to make browser agent training more accessible. BrowserEnv, a reinforcement learning environment built on Browserbase's infrastructure, is now available at browserenv.com, providing scalable browser environments and live website access for training.
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1842toolTimeout arg to more tools by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1843useSearch & toolTimeout to stainless types by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1854Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/browse-cli@0.2.0...stagehand-server-v3/v3.6.2
#1779 2f43ffa Thanks @shrey150! - feat: add cdpHeaders option to localBrowserLaunchOptions for passing custom HTTP headers when connecting to an existing browser via CDP URL
#1834 63ee247 Thanks @tkattkat! - Update stagehand agents search tool
#1774 521a10e Thanks @seanmcguire12! - add new page.setExtraHTTPHeaders() method
#1759 505e8c6 Thanks @shrey150! - Add bedrock to the provider enum in model configuration schemas and regenerate OpenAPI spec.
#1814 7dc35f5 Thanks @tkattkat! - Change usage of openai provider in agent to default to store:false
#1846 335cf47 Thanks @aq17! - Fix streaming finished event being silently dropped. The final SSE event containing the result payload (success status, message, actions, usage, and messages) was previously discarded instead of being yielded to the caller.
#1764 6ba0a1d Thanks @shrey150! - Expose headers in GoogleVertexProviderSettings so model configs can pass custom provider headers (for example X-Goog-Priority) without TypeScript errors.
#1847 4ff3bb8 Thanks @miguelg719! - Enable FlowLogger on BROWSERBASE_FLOW_LOGS=1
#1752 c27054b Thanks @derekmeegan! - fix: pause Browserbase agents while captcha solving is active and improve CUA recovery after the solve completes
#1800 2abf5b9 Thanks @shrey150! - Make projectId optional for Browserbase sessions — only BROWSERBASE_API_KEY is required
#1766 7817fcc Thanks @tkattkat! - Add configurable timeout to tools in agent
#1749 7390508 Thanks @pirate! - When connecting to a browser session that has zero open tabs, Stagehand now automatically creates an initial about:blank tab so the connection can continue.
#1761 611f43a Thanks @seanmcguire12! - fix issue where handlePossibleNavigation was producing unnecessary error logs on clicks that trigger page close
#1817 2402a3c Thanks @tkattkat! - Add support for passing custom headers in clientOptions
Browserbase Search, powered by Exa, enables agents to search the web with a single API call. Send a plain-text query and get back URLs your agent needs to act on next. Results return URL, title, and description (up to 25 results). Each plan includes 1,000 free searches.
Free users can now use up to 3 browsers concurrently, increased from the previous limit of 1 browser.
The Browserbase MCP server was migrated to Browserbase-managed infrastructure to improve reliability and simplify updates. MCP is now served from Browserbase-managed endpoints with improved stability for longer-running sessions. No action required for existing users.
Introducing the Fetch API for Browserbase. Provide a URL and receive the page content without requiring a browser session. Fast, cheap (~$1 per 1,000 pages), and designed for agents that need to read the web efficiently.
handlePossibleNavigation() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1761context.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1762page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1774cdpHeaders option for custom CDP connection headers by @shrey150 in https://github.com/browserbase/stagehand/pull/1779packages/stagehand/server into separate server-v3 and server-v4 dirs by @pirate in https://github.com/browserbase/stagehand/pull/1796Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.6.1...stagehand-server-v3/v3.6.1
handlePossibleNavigation() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1761context.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1762page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1774cdpHeaders option for custom CDP connection headers by @shrey150 in https://github.com/browserbase/stagehand/pull/1779packages/stagehand/server into separate server-v3 and server-v4 dirs by @pirate in https://github.com/browserbase/stagehand/pull/1796Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.6.1...stagehand-server-v3/v3.6.1
handlePossibleNavigation() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1761context.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1762page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1774cdpHeaders option for custom CDP connection headers by @shrey150 in https://github.com/browserbase/stagehand/pull/1779packages/stagehand/server into separate server-v3 and server-v4 dirs by @pirate in https://github.com/browserbase/stagehand/pull/1796Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.6.1...stagehand-server-v3/v3.6.1
handlePossibleNavigation() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1761context.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1762page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1774cdpHeaders option for custom CDP connection headers by @shrey150 in https://github.com/browserbase/stagehand/pull/1779packages/stagehand/server into separate server-v3 and server-v4 dirs by @pirate in https://github.com/browserbase/stagehand/pull/1796Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.6.1...stagehand-server-v3/v3.6.1
handlePossibleNavigation() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1761context.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1762page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1774cdpHeaders option for custom CDP connection headers by @shrey150 in https://github.com/browserbase/stagehand/pull/1779packages/stagehand/server into separate server-v3 and server-v4 dirs by @pirate in https://github.com/browserbase/stagehand/pull/1796Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.6.1...stagehand-server-v3/v3.6.1
handlePossibleNavigation() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1761context.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1762page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1774cdpHeaders option for custom CDP connection headers by @shrey150 in https://github.com/browserbase/stagehand/pull/1779packages/stagehand/server into separate server-v3 and server-v4 dirs by @pirate in https://github.com/browserbase/stagehand/pull/1796Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.6.1...stagehand-server-v3/v3.6.1
handlePossibleNavigation() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1761context.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1762page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1774cdpHeaders option for custom CDP connection headers by @shrey150 in https://github.com/browserbase/stagehand/pull/1779packages/stagehand/server into separate server-v3 and server-v4 dirs by @pirate in https://github.com/browserbase/stagehand/pull/1796Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.6.1...stagehand-server-v3/v3.6.1
handlePossibleNavigation() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1761context.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1762page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1774cdpHeaders option for custom CDP connection headers by @shrey150 in https://github.com/browserbase/stagehand/pull/1779packages/stagehand/server into separate server-v3 and server-v4 dirs by @pirate in https://github.com/browserbase/stagehand/pull/1796Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.6.1...stagehand-server-v3/v3.6.1
handlePossibleNavigation() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1761context.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1762page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1774cdpHeaders option for custom CDP connection headers by @shrey150 in https://github.com/browserbase/stagehand/pull/1779packages/stagehand/server into separate server-v3 and server-v4 dirs by @pirate in https://github.com/browserbase/stagehand/pull/1796Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.6.1...stagehand-server-v3/v3.6.1
handlePossibleNavigation() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1761context.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1762page.setExtraHTTPHeaders() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1774cdpHeaders option for custom CDP connection headers by @shrey150 in https://github.com/browserbase/stagehand/pull/1779packages/stagehand/server into separate server-v3 and server-v4 dirs by @pirate in https://github.com/browserbase/stagehand/pull/1796Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.6.1...stagehand-server-v3/v3.6.1
keepAlive docs by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1747Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/stagehand@3.1.0...stagehand-server/v3.6.1
keepAlive docs by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1747Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/stagehand@3.1.0...stagehand-server/v3.6.1
keepAlive docs by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1747Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/stagehand@3.1.0...stagehand-server/v3.6.1
keepAlive docs by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1747Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/stagehand@3.1.0...stagehand-server/v3.6.1
keepAlive docs by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1747Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/stagehand@3.1.0...stagehand-server/v3.6.1
keepAlive docs by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1747Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/stagehand@3.1.0...stagehand-server/v3.6.1
#1681 e3db9aa Thanks @tkattkat! - Add cookie management APIs: context.addCookies(), context.clearCookies(), & context.cookies()
#1672 b65756e Thanks @seanmcguire12! - add boolean keepAlive parameter to allow for configuring whether the browser should be closed when stagehand.close() is called.
#1708 176d420 Thanks @seanmcguire12! - add context.setExtraHTTPHeaders()
#1611 8a3c066 Thanks @monadoid! - Using mode enum instead of old cua boolean in openapi spec
#1632 afbd08b Thanks @pirate! - Remove automatic .env loading via dotenv.
If your app relies on .env files, install dotenv and load it explicitly in your code:
import dotenv from "dotenv";
dotenv.config({ path: ".env" });
#1683 7584f3e Thanks @seanmcguire12! - fix: include shadow DOM in .count() & .nth() & support xpath predicates
#1644 1e1c9c1 Thanks @monadoid! - Fix unhandled CDP detaches by returning the original sendCDP promise
#1729 6bef890 Thanks @shrey150! - fix: support Claude 4.6 (Opus and Sonnet) in CUA mode by using the correct computer_20251124 tool version and computer-use-2025-11-24 beta header
#1647 ffd4b33 Thanks @tkattkat! - Fix [Agent] - Address bug causing issues with continuing a conversation from past messages in dom mode
#1614 677bff5 Thanks @miguelg719! - Enforce <number>-<number> regex validation on act/observe for elementId
#1580 65ff464 Thanks @tkattkat! - Add unified variables support across act and agent with a single VariableValue type
#1666 101bcf2 Thanks @Kylejeong2! - add support for codex models
#1728 0a94301 Thanks @seanmcguire12! - handle potential race condition on .close() when using the Stagehand API
#1664 b27c04d Thanks @seanmcguire12! - fixes issue with context.addInitScript() where scripts were not being applied to out of process iframes (OOPIFs), and popup pages with same process iframes (SPIFs)
#1624 0e8d569 Thanks @seanmcguire12! - fix issue where screenshot masks were not being applied to dialog elements
#1596 ff0f979 Thanks @tkattkat! - Update usage/metrics handling in agent
#1631 2d89d2b Thanks @miguelg719! - Add right and middle click support to act and observe
#1697 aac9a19 Thanks @shrey150! - fix: support <frame> elements in XPath frame boundary detection so act() works on legacy <frameset> pages
#1692 06de50f Thanks @shrey150! - fix: skip piercer injection for chrome-extension:// and other non-HTML targets
#1613 aa4d981 Thanks @miguelg719! - SupportedUnderstudyAction Enum validation for 'method' on act/observe inference
#1652 18b1e3b Thanks @miguelg719! - Add support for gemini 3 flash and pro in hybrid/cua agent
#1706 957d82b Thanks @chrisreadsf! - Add GLM to prompt-based JSON fallback for models without native structured output support
#1633 22e371a Thanks @tkattkat! - Add warning when incorrect models are used with agents hybrid mode
#1673 d29b91f Thanks @miguelg719! - Add multi-region support for Stagehand API with region-specific endpoints
#1695 7b4f817 Thanks @tkattkat! - Fix: zod bug when pinning zod to v3 and using structured output in agent
#1609 3f9ca4d Thanks @miguelg719! - Add SupportedUnderstudyActions to observe system prompt
#1581 49ead1e Thanks @sameelarif! - Server-side caching is now available.
When running env: "BROWSERBASE", Stagehand automatically caches act(), extract(), and observe() results server-side — repeated calls with the same inputs return instantly without consuming LLM tokens.
Caching is enabled by default and can be disabled via serverCache: false on the Stagehand instance or per individual call. Check out the browserbase blog for more details.
#1642 3673369 Thanks @seanmcguire12! - fix issue where scripts added via context.addInitScripts() were not being injected into new pages that were opened via popups (eg, clicking a link that opens a new page) and/or calling context.newPage(url)
#1735 c465e87 Thanks @monadoid! - Supports request header authentication with connectToMCPServer
#1705 ae533e4 Thanks @seanmcguire12! - include error cause in UnderstudyCommandException
#1636 ea33052 Thanks @miguelg719! - Include executionModel on the AgentConfigSchema
#1679 5764ede Thanks @shrey150! - fix issue where locator.count() was not working with xpaths that have attribute predicates
#1646 f09b184 Thanks @miguelg719! - Add user-agent to CDP connections
#1637 a7d29de Thanks @miguelg719! - Improve error and warning message for legacy model format
#1685 d334399 Thanks @tkattkat! - Bump ai sdk & google provider version
#1662 44416da Thanks @seanmcguire12! - fix issue where locator.fill() was not working on elements that require direct value setting
#1612 bdd8b4e Thanks @seanmcguire12! - fix issue where screenshot mask was only being applied to the first element that the locator resolved to. masks now apply to all matching elements.
df76207 Thanks @seanmcguire12! - handle target closed errors on rapidly opening/closing popups