.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
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
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 popupspage.snapshot() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1589page.waitForSelector() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1605mask param in page.screenshot() only applied to first node by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1612act, observe for elementId by @miguelg719 in https://github.com/browserbase/stagehand/pull/1614<dialog> elements by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1624addInitScript on popup pages by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1642Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.5.1...stagehand-server/v3.6.0
page.snapshot() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1589page.waitForSelector() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1605mask param in page.screenshot() only applied to first node by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1612act, observe for elementId by @miguelg719 in https://github.com/browserbase/stagehand/pull/1614<dialog> elements by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1624addInitScript on popup pages by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1642Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.5.1...stagehand-server/v3.6.0
page.snapshot() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1589page.waitForSelector() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1605mask param in page.screenshot() only applied to first node by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1612act, observe for elementId by @miguelg719 in https://github.com/browserbase/stagehand/pull/1614<dialog> elements by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1624addInitScript on popup pages by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1642Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.5.1...stagehand-server/v3.6.0
page.snapshot() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1589page.waitForSelector() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1605mask param in page.screenshot() only applied to first node by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1612act, observe for elementId by @miguelg719 in https://github.com/browserbase/stagehand/pull/1614<dialog> elements by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1624addInitScript on popup pages by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1642Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.5.1...stagehand-server/v3.6.0
page.snapshot() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1589page.waitForSelector() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1605mask param in page.screenshot() only applied to first node by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1612act, observe for elementId by @miguelg719 in https://github.com/browserbase/stagehand/pull/1614<dialog> elements by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1624addInitScript on popup pages by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1642Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.5.1...stagehand-server/v3.6.0
page.snapshot() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1589page.waitForSelector() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1605mask param in page.screenshot() only applied to first node by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1612act, observe for elementId by @miguelg719 in https://github.com/browserbase/stagehand/pull/1614<dialog> elements by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1624addInitScript on popup pages by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1642Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.5.1...stagehand-server/v3.6.0
page.snapshot() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1589page.waitForSelector() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1605mask param in page.screenshot() only applied to first node by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1612act, observe for elementId by @miguelg719 in https://github.com/browserbase/stagehand/pull/1614<dialog> elements by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1624addInitScript on popup pages by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1642Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.5.1...stagehand-server/v3.6.0
page.snapshot() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1589page.waitForSelector() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1605mask param in page.screenshot() only applied to first node by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1612act, observe for elementId by @miguelg719 in https://github.com/browserbase/stagehand/pull/1614<dialog> elements by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1624addInitScript on popup pages by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1642Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.5.1...stagehand-server/v3.6.0
page.snapshot() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1589page.waitForSelector() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1605mask param in page.screenshot() only applied to first node by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1612act, observe for elementId by @miguelg719 in https://github.com/browserbase/stagehand/pull/1614<dialog> elements by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1624addInitScript on popup pages by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1642Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.5.1...stagehand-server/v3.6.0
Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/stagehand@3.0.8...stagehand-server/v3.5.1
Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/stagehand@3.0.8...stagehand-server/v3.5.1
#1514 40ce5cc Thanks @tkattkat! - Rename the close tool in agent to "done"
#1574 5506f41 Thanks @tkattkat! - fix(server): pass cdpUrl to localBrowserLaunchOptions when launchOptions absent
#1521 84c05ca Thanks @seanmcguire12! - fix: get agent cache working in API mode
#1551 1ef8901 Thanks @miguelg719! - move extract handler response log to after URL injection
#1495 72ac775 Thanks @tkattkat! - export tool function & type to simplify defining custom tools
#1481 3d5af07 Thanks @tkattkat! - add waitForTimeout to page
#1423 40e1d80 Thanks @miguelg719! - Improve benchmark handling and add metadata
#1588 56c0d24 Thanks @seanmcguire12! - add SnapshotOptions to page.snapshot()
#1483 16d72fb Thanks @tkattkat! - Optimize screenshot handling in agent hybrid mode
#1498 088c4cc Thanks @seanmcguire12! - fix: replaying cached actions (for agent & act) now uses the originally defined model, (instead of default model) when action fails and rerunning inference is needed
#1575 4276f4a Thanks @seanmcguire12! - expose port param in localBrowserLaunchOptions
#1544 6005786 Thanks @tkattkat! - Recommend hybrid mode over DOM mode in agent, which is now considered legacy
#1505 6fbf5fc Thanks @tkattkat! - Add structured output to agent result + ensure close tool is always called
#1511 704cf18 Thanks @shrey150! - Fix ControlOrMeta keypress event
#1480 091296e Thanks @tkattkat! - Update agent to only calculate xpath when caching is enabled
#1509 e56c6eb Thanks @seanmcguire12! - add support for page.waitForSelector()
#1478 2cb78d0 Thanks @tkattkat! - update agent message handling
#1518 5dad639 Thanks @seanmcguire12! - add page.snapshot() for capturing a stringified DOM snapshot of the page, including an xpath map & url map
#1576 b7c2571 Thanks @tkattkat! - utilize waitForSelector when running agent cache
#1560 4c69117 Thanks @tkattkat! - Update coordinate handling in cua and hybrid
Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.3.0...stagehand-server/v3.4.0
page.waitForSelector() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1509page.snapshot() by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1518Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/stagehand@3.0.7...stagehand-server/v3.3.0
Full Changelog: https://github.com/browserbase/stagehand/compare/stagehand-server/v3.1.3...stagehand-server/v3.2.0
#1461 0f3991e Thanks @tkattkat! - Move hybrid mode out of experimental
#1433 e0e22e0 Thanks @tkattkat! - Put hybrid mode behind experimental
#1456 f261051 Thanks @shrey150! - Invoke page.hover for agent move action
#1473 e021674 Thanks @shrey150! - Add safety confirmation support for OpenAI + Google CUA
#1399 6a5496f Thanks @tkattkat! - Ensure cua agent is killed when stagehand.close is called
#1436 fea1700 Thanks @miguelg719! - Fix auto-load key for act/extract/observe parametrized models on api
#1439 5b288d9 Thanks @tkattkat! - Remove base64 from agent actions array ( still present in messages object )
#1408 e822f5a Thanks @seanmcguire12! - allow for act() cache hit when variable values change
#1472 638efc7 Thanks @seanmcguire12! - fix: agent cache not refreshed on action failure
#1424 a890f16 Thanks @seanmcguire12! - fix: "Error: -32000 Failed to convert response to JSON: CBOR: stack limit exceeded"
#1418 934f492 Thanks @miguelg719! - Cleanup handlers and bus listeners on close
#1430 bd2db92 Thanks @shrey150! - Fix CUA model coordinate translation
#1465 51e0170 Thanks @miguelg719! - Add media resolution high provider option to gemini 3 hybrid agent
#1431 05f5580 Thanks @tkattkat! - Update the cache handling for agent
#1432 f56a9c2 Thanks @tkattkat! - Deprecate cua: true in favor of mode: "cua"
#1406 b40ae11 Thanks @tkattkat! - Add support for hovering with coordinates ( page.hover )
#1412 cd01f29 Thanks @seanmcguire12! - fix: load GOOGLE_API_KEY from .env
#1462 a734fca Thanks @shrey150! - fix: correctly pass userDataDir to chrome launcher
#1466 b342acf Thanks @seanmcguire12! - move playwright to optional dependencies
#1440 2987cd1 Thanks @tkattkat! - [Feature] support excluding tools from agent
#1455 dfab1d5 Thanks @seanmcguire12! - update aisdk client to better enforce structured output with deepseek models
#1428 4d71162 Thanks @tkattkat! - Add "hybrid" mode to stagehand agent
GOOGLE_API_KEY from env by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1412act reference with preferred model name formatting by @ziruihao in https://github.com/browserbase/stagehand/pull/1409snapshot.ts by @seanmcguire12 in https://github.com/browserbase/stagehand/pull/1427Full Changelog: https://github.com/browserbase/stagehand/compare/@browserbasehq/stagehand@3.0.6...stagehand-server/v3.1.3
#1388 605ed6b Thanks @miguelg719! - Fix multiple click event dispatches on CDP and Anthropic CUA handling (double clicks)
#1400 34e7e5b Thanks @seanmcguire12! - don't write base64 encoded screenshots to disk when caching agent actions
#1345 943d2d7 Thanks @tkattkat! - Add support for aborting / stopping an agent run & continuing an agent run using messages from prior runs
#1334 0e95cd2 Thanks @tkattkat! - Add support for google vertex provider
#1410 d4237e4 Thanks @seanmcguire12! - fix: include extract in stagehand.history()
#1315 86975e7 Thanks @tkattkat! - Add streaming support to agent through stream:true in the agent config
#1304 d5e119b Thanks @miguelg719! - Add support for Microsoft's Fara-7B
#1346 4e051b2 Thanks @seanmcguire12! - fix: don't attach to targets twice
#1327 6b5a3c9 Thanks @miguelg719! - Informed error parsing from api
#1335 bb85ad9 Thanks @seanmcguire12! - add support for page.addInitScript()
#1331 88d28cc Thanks @seanmcguire12! - fix: page.evaluate() now works with scripts injected via context.addInitScript()
#1316 45bcef0 Thanks @tkattkat! - Add support for callbacks in stagehand agent
#1374 6aa9d45 Thanks @miguelg719! - Fix key action mapping in Anthropic CUA
#1330 d382084 Thanks @seanmcguire12! - fix: make act, extract, and observe respect user defined timeout param
#1358 2b56600 Thanks @tkattkat! - Add support for 4.5 opus in cua agent
b7bc0b6 Thanks @seanmcguire12! - deprecate drawOverlay parameter in observe#1389 575226f Thanks @seanmcguire12! - Retry DOM.getDocument on max depth exceeded with exponential backoff
#1386 dbffb75 Thanks @seanmcguire12! - Remove deprecated internal usage of page.evaluate