Changelog
v0.21.0
March 2026
New Commands
batch-- Execute multiple commands in a single invocation. Pipe a JSON array of string arrays to stdin and receive results sequentially. Supports--bailto stop on first error and--jsonfor structured output.
echo '[["open","example.com"],["snapshot"]]' | agent-browser batch --jsonnetwork har start/stop-- Capture and export network traffic in HAR 1.2 format.
agent-browser network har start
# ... interact with the page ...
agent-browser network har stop ./trace.harNew Features
- iframe support -- CLI interactions and snapshots now traverse into iframe content, enabling automation of cross-frame pages.
--idle-timeoutflag -- Automatically shut down the daemon after a period of inactivity. Accepts human-friendly formats such as10s,3m,1h, or raw milliseconds. Also available asAGENT_BROWSER_IDLE_TIMEOUT_MS.- Cursor-interactive elements in snapshots -- Cursor-interactive elements are now embedded directly into the snapshot tree for richer context.
- Brave Browser auto-connect -- Auto-discovery of Brave Browser for CDP connections on macOS, Linux, and Windows.
- linux-musl (Alpine) builds -- Pre-built binaries for linux-musl targeting both x64 and arm64, enabling native support for Alpine Linux and other musl-based distributions.
- WebSocket fallback for CDP discovery -- When HTTP-based CDP endpoint discovery fails, the CLI now falls back to a WebSocket connection automatically.
Improvements
--full/-frefactored to command-level flag -- Moved from a global flag to a per-command flag for clearer scoping.- Enhanced Chrome launch -- Added
--user-data-dirsupport and configurable launch timeout for more reliable browser startup. Chrome now retries launching up to 3 times on transient startup failures. - Consecutive
--auto-connectcommands -- Multiple consecutive auto-connect commands no longer require a full browser relaunch; external connections are correctly identified and reused. - Batched CDP calls --
snapshot -Candscreenshot --annotatenow batch CDP calls instead of issuing sequential round-trips per element, preventing timeouts on high-latency WSS connections.
Bug Fixes
- Fixed remote CDP (WSS) snapshot and screenshot hangs by removing WebSocket message/frame size limits
- Fixed Material Design
check/uncheckfalling back to JS.click()for overlay-based controls - Fixed punctuation characters being dropped in the
typecommand - Fixed WebSocket streaming by keeping the StreamServer instance alive
- Filtered internal Chrome targets (
chrome://,devtools://) from auto-connect discovery - Fixed
snapshot --selectorscoping to the matched element's subtree - Fixed network idle detection returning prematurely for cached pages
- Fixed daemon panic on broken stderr pipe during Chrome launch
- Fixed broadcast channel lag being treated as stream closure
- Fixed daemon liveness detection for PID namespace isolation (e.g.
unshare) - Fixed Ubuntu dependency install accidentally removing system packages
v0.20.0
March 2026
Full Native Rust
agent-browser is now 100% native Rust. The Node.js/Playwright daemon has been completely removed -- no Node.js runtime or Playwright dependency is required to run the daemon. The Rust native daemon is now the only implementation.
| Metric | Node.js | Rust | |
|---|---|---|---|
| Cold start | 1002ms | 617ms | 1.6x faster |
| Daemon memory | 143 MB | 8 MB | 18x less |
| Install size | 710 MB | 7 MB | 99x smaller |
npm install -g agent-browser # 7 MB install
agent-browser install # download Chrome
agent-browser open example.com
agent-browser snapshotImprovements
- Benchmarks -- Added benchmark suite for comparing native vs Node.js daemon performance across cold start, warm start, memory, and install size.
- Chromium installer hardened -- Fixed zip path traversal vulnerability in Chrome for Testing installer.
Bug Fixes
- Fixed
--headed falseflag not being respected in CLI - Fixed "not found" error pattern in
to_ai_friendly_errorincorrectly catching non-element errors - Fixed storage local key lookup parsing and text output
- Fixed Lightpanda engine launch with release binaries
- Hardened Lightpanda startup timeouts
v0.19.0
March 2026
New Features
- Browserless.io provider -- Added browserless.io as a browser provider, supported in both Node.js and native daemon paths. Connect to remote Browserless instances using the
--provider browserlessflag orAGENT_BROWSER_PROVIDER=browserlessenvironment variable.
export BROWSERLESS_API_KEY="your-api-key"
agent-browser --provider browserless open example.com
agent-browser --provider browserless screenshot ./page.pngclipboardcommand -- Read from and write to the browser clipboard. Supportsread,write,copy(simulates Ctrl+C), andpaste(simulates Ctrl+V) operations.
agent-browser clipboard read
agent-browser clipboard write "Hello, World!"
agent-browser clipboard copy
agent-browser clipboard paste- Screenshot output configuration -- New global flags for persistent screenshot settings:
--screenshot-dir,--screenshot-quality, and--screenshot-format. Also available as environment variablesAGENT_BROWSER_SCREENSHOT_DIR,AGENT_BROWSER_SCREENSHOT_QUALITY, andAGENT_BROWSER_SCREENSHOT_FORMAT.
agent-browser screenshot --screenshot-dir ./shots
agent-browser screenshot --screenshot-format jpeg --screenshot-quality 80Bug Fixes
- Fixed
wait --textnot working in native daemon path - Fixed
BrowserManager.navigate()and package entry point - Fixed extensions not being loaded from
config.json - Fixed scroll on page load
- Fixed HTML retrieval by using
browser.getLocator()for selector operations
v0.18.0
March 2026
New Features
inspectcommand -- Opens Chrome DevTools for the active page by launching a local proxy server that forwards the DevTools frontend to the browser's CDP WebSocket. Agent commands continue to work while DevTools is open.
agent-browser open example.com
agent-browser inspect # opens DevTools in your browser
agent-browser click "Submit" # commands still work while DevTools is openget cdp-urlsubcommand -- Retrieve the Chrome DevTools Protocol WebSocket URL for the active page, useful for connecting external debugging tools.
agent-browser get cdp-url- Screenshot annotate -- The
--annotateflag overlays numbered labels on interactive elements in screenshots.
Improvements
- KERNEL_API_KEY now optional -- External credential injection no longer requires
KERNEL_API_KEYto be set, making it easier to use Kernel with pre-configured environments. - Browserbase simplified -- Removed the
BROWSERBASE_PROJECT_IDrequirement, reducing setup friction for Browserbase users.
Bug Fixes
- Fixed Browserbase API using incorrect endpoint to release sessions
- Fixed CDP connect paths using hardcoded 10s timeout instead of the configurable default timeout
- Fixed lone Unicode surrogates causing errors by sanitizing with
toWellFormed() - Fixed CDP connection failure on IPv6-first systems
- Fixed recordings not inheriting the current viewport settings
v0.17.1
March 2026
Improvements
- Viewport scale factor -- Added support for device scale factor (retina display) in the viewport command via an optional
scaleparameter. - Webview target support -- Added webview target type support for better Electron application compatibility. The pages list now includes target type information.
v0.17.0
March 2026
New Features
- Lightpanda browser engine support -- Added
--engine <name>flag to select the browser engine (chromeby default, orlightpanda), implying--nativemode. Configurable viaAGENT_BROWSER_ENGINEenvironment variable.
agent-browser --engine lightpanda open example.com- Dialog dismiss command -- Added support for
dismisssubcommand in dialog command parsing.
Improvements
- Daemon startup error reporting -- Daemon startup errors are now surfaced directly instead of showing an opaque timeout message.
- CDP port discovery -- Replaced hand-rolled HTTP client with
reqwestfor more reliable CDP port discovery. - Chrome extensions -- Extensions now load correctly by forcing headed mode when extensions are present.
- Google Translate bar suppression -- Suppressed the Google Translate bar in native headless mode to avoid interference.
- Auth cookie persistence -- Auth cookies are now persisted on browser close in native mode.
Bug Fixes
- Fixed native auth login failing due to incompatible encryption format.
Performance
- Added benchmarks to the CLI codebase.
v0.16.0
March 2026
New Features
- Native Rust daemon (experimental). A pure Rust daemon that communicates with Chrome directly via the Chrome DevTools Protocol (CDP), eliminating Node.js and Playwright dependencies entirely. Enable with
--native,AGENT_BROWSER_NATIVE=1, or"native": truein your config file. Supports 150+ commands with full parity to the default Node.js daemon.
# Via flag
agent-browser --native open example.com
# Via environment variable
export AGENT_BROWSER_NATIVE=1
agent-browser open example.comOr add to agent-browser.json:
{"native": true}Architecture
| Default (Node.js) | Native (--native) | |
|---|---|---|
| Runtime | Node.js + Playwright | Pure Rust binary |
| Protocol | Playwright protocol | Direct CDP / WebDriver |
| Install size | Larger (Node.js + npm deps) | Smaller (single binary) |
| Browser support | Chromium, Firefox, WebKit | Chromium, Safari (via WebDriver) |
| Stability | Stable | Experimental |
What's Supported
All core commands work in native mode: navigation, interaction (click, fill, type, press, hover, scroll, drag), observation (snapshot, screenshot, eval), state management (cookies, storage, state save/load), tabs, emulation (viewport, device, timezone, locale, geolocation), streaming, diffing, recording, and profiling.
The native daemon also includes a WebDriver backend for Safari and iOS support.
Known Limitations
- Firefox and WebKit are not yet supported (Chromium and Safari only)
- Playwright trace format is not available (uses Chrome's built-in tracing)
- HAR export is not available
- Network route interception uses CDP Fetch domain instead of Playwright's route API
- The native and Node.js daemons share the same session socket. Use
agent-browser closebefore switching between modes.
See the Native Mode page for full details.
v0.15.0
February 2026
New Features
- Authentication vault -- Store credentials locally (always AES-256-GCM encrypted) and reference them by name. The LLM never sees passwords. Commands:
auth save,auth login,auth list,auth show,auth delete. Passwords can be piped via stdin (--password-stdin) to avoid shell history exposure. - Content boundary markers --
--content-boundarieswraps page-sourced output in structural delimiters with a per-process CSPRNG nonce, so LLMs can distinguish trusted tool output from untrusted page content. In--jsonmode, a_boundaryobject is injected withnonceandoriginfields. - Domain allowlist --
--allowed-domainsrestricts navigation, sub-resource requests, WebSocket connections, and EventSource streams to trusted domains. Supports exact match and wildcard prefix patterns (e.g.,*.example.com). - Action policy --
--action-policygates actions using a static JSON policy file withallow/denylists across 13 action categories. Auth vault operations bypass policy enforcement. - Action confirmation --
--confirm-actionsrequires explicit approval for sensitive action categories. Newconfirmanddenycommands for orchestrator use.--confirm-interactiveenables human-in-the-loop terminal prompts (auto-denies if stdin is not a TTY). Pending confirmations auto-deny after 60 seconds. - Output length limits --
--max-outputtruncates large page outputs to prevent LLM context flooding. --download-pathoption -- Set a default download directory via flag,AGENT_BROWSER_DOWNLOAD_PATHenv var, ordownloadPathconfig key. Without it, downloads go to a temporary directory deleted when the browser closes.--selectorflag for scroll -- Scroll within a specific container element instead of the page:agent-browser scroll down 500 --selector "div.scroll-container"
# Auth vault
echo "pass" | agent-browser auth save github --url https://github.com/login --username user --password-stdin
agent-browser auth login github
# Security flags
agent-browser --content-boundaries --allowed-domains "example.com,*.example.com" --max-output 50000 open https://example.com
# Download path
agent-browser --download-path ./downloads open https://example.com
# Scroll within container
agent-browser scroll down 500 --selector "div.content"Environment Variables
Six new environment variables for security configuration: AGENT_BROWSER_CONTENT_BOUNDARIES, AGENT_BROWSER_MAX_OUTPUT, AGENT_BROWSER_ALLOWED_DOMAINS, AGENT_BROWSER_ACTION_POLICY, AGENT_BROWSER_CONFIRM_ACTIONS, AGENT_BROWSER_CONFIRM_INTERACTIVE.
v0.14.0
February 2026
New Features
keyboardcommand -- Type with real keystrokes, insert text, and press shortcuts at the currently focused element without needing a selector (keyboard type,keyboard inserttext).--color-schemeflag -- Persistent dark/light mode preference across browser sessions via flag orAGENT_BROWSER_COLOR_SCHEMEenv var.
agent-browser keyboard type "Hello world"
agent-browser keyboard inserttext "pasted text"
agent-browser --color-scheme dark open https://example.comBug Fixes
- Fixed IPC EAGAIN errors (os error 35/11) with backpressure-aware socket writes, command serialization, and lowered default Playwright timeout to 25s (configurable via
AGENT_BROWSER_DEFAULT_TIMEOUT). - Fixed remote debugging (CDP) reconnection.
- Fixed state load failing when no browser is running.
- Fixed
--annotateflag warning appearing when not explicitly passed via CLI.
v0.13.0
February 2026
New Features
- Diff commands -- Compare snapshots, screenshots, and URLs between page states. Run visual pixel diffs against baseline images, compare accessibility tree snapshots with customizable depth and selectors, and diff two URLs side-by-side with optional screenshot comparison.
agent-browser diff snapshot
agent-browser diff screenshot --baseline before.png
agent-browser diff url https://staging.example.com https://prod.example.comv0.12.0
February 2026
New Features
- Annotated screenshots --
--annotateflag overlays numbered labels on interactive elements and prints a legend mapping each label to its element ref. Enables multimodal AI models to reason about visual layout while using the same@eNrefs for subsequent interactions. Also settable viaAGENT_BROWSER_ANNOTATEenv var.
agent-browser screenshot --annotatev0.11.1
February 2026
Documentation
- Added documentation for command chaining with
&&across README, CLI help output, docs, and skill files.
v0.11.0
February 2026
New Features
- Configuration file support -- Automatic loading from user (
~/.agent-browser/config.json) and project (./agent-browser.json) directories with priority-based merging. - Profiler commands -- Chrome DevTools profiling with
profiler startandprofiler stop. - Browser extension loading --
--extensionflag to load browser extensions. - Storage state management --
state saveandstate loadcommands for auth state persistence. - iOS device emulation --
--deviceflag for device emulation. - Enhanced click --
--new-taboption for click commands. - Enhanced find -- Additional actions and filtering options.
- CDP WebSocket URLs --
--cdpnow accepts WebSocket URLs in addition to ports.
v0.10.0
February 2026
New Features
- Session persistence - Automatic save/restore of cookies and localStorage across browser restarts using
--session-nameflag - Encrypted state - Optional AES-256-GCM encryption for saved session state data
- State management commands - New commands for listing, showing, renaming, clearing, and cleaning up session state files
- New tab on click - Added
--new-taboption for click commands to open links in new tabs
# Persist session state
agent-browser --session-name myapp open https://example.com
# Manage saved states
agent-browser state list
agent-browser state show myapp
agent-browser state clear myappv0.9.4
February 2026
Bug Fixes
- Fixed all Clippy lint warnings in the Rust CLI
v0.9.3
February 2026
Improvements
- Added support for custom executable path in CLI browser launch options
- Documentation site UI improvements including a new chat component with sheet-based interface
v0.9.2
February 2026
Improvements
- Migrated documentation site to MDX for improved content authoring
- Added AI-powered docs chat feature
- Updated README with Homebrew installation instructions for macOS users
v0.9.1
February 2026
New Features
--allow-file-accessflag - Enable opening and interacting with localfile://URLs (PDFs, HTML files) by passing Chromium flags that allow JavaScript access to local files-C/--cursorflag for snapshots - Include cursor-interactive elements like divs with onclick handlers orcursor:pointerstyles
agent-browser --allow-file-access open file:///path/to/document.pdf
agent-browser snapshot -Cv0.9.0
February 2026
New Features
- iOS Simulator support - Mobile Safari testing via Appium with real device and simulator support
# List available iOS simulators
agent-browser device list
# Launch on iOS device
agent-browser -p ios --device "iPhone 16 Pro" open https://example.com
# Touch interactions
agent-browser tap @e1
agent-browser swipe upv0.8.10
January 2026
Improvements
- Added
--stdinflag for eval command to read JavaScript from stdin, enabling heredoc usage for multiline scripts - Fixed binary permission issues on macOS/Linux when postinstall scripts don't run
v0.8.9
January 2026
Improvements
- Added
--stdinflag for eval command to read JavaScript from stdin
v0.8.8
January 2026
Improvements
- Added base64 encoding support for the eval command with
-b/--base64flag to avoid shell escaping issues - Updated documentation with AI agent setup instructions
v0.8.7
January 2026
Bug Fixes
- Fixed browser launch options not being passed correctly when using persistent profiles
- Added pre-flight checks for socket path length limits and directory write permissions
- Improved error handling to properly exit with failure status when browser launch fails
v0.8.6
January 2026
Bug Fixes
- Improved daemon connection reliability with automatic retry logic for transient errors
- CLI now cleans up stale socket and PID files before starting a new daemon
v0.8.5
January 2026
Bug Fixes
- Fixed version synchronization to automatically update Cargo.lock alongside Cargo.toml during releases
- Made the CLI binary executable in the npm package
v0.8.4
January 2026
Bug Fixes
- Fixed "Daemon not found" error when running through AI agents by resolving symlinks in the executable path
v0.8.3
January 2026
Improvements
- Replaced shell-based CLI wrappers with a cross-platform Node.js wrapper to enable npx support on Windows
- Added postinstall logic to patch npm bin entry on global installs for zero-overhead native binary invocation
- Added CI tests to verify global installation across all platforms
v0.8.2
January 2026
Bug Fixes
- Fixed the Windows CMD wrapper to use the native binary directly instead of routing through Node.js
- Added retry logic to CI install command for transient browser installation failures
v0.8.1
January 2026
Improvements
- Improved release workflow to validate binary file sizes and ensure binaries are executable after npm install
- Updated documentation site with a new mobile navigation system
v0.8.0
January 2026
New Features
- Kernel cloud browser provider - Connect to Kernel (kernel.sh) for remote browser infrastructure with stealth mode and persistent profiles
# Via -p flag
agent-browser -p kernel open https://example.com
# Via environment variable
export AGENT_BROWSER_PROVIDER=kernel
export KERNEL_API_KEY=your-api-key
agent-browser open https://example.com
# With persistent profile
export KERNEL_PROFILE_NAME=my-profile
agent-browser open https://example.com- Ignore HTTPS certificate errors - New flag for working with self-signed certificates and development environments
agent-browser --ignore-https-errors open https://localhost:3000- Enhanced cookie management - Extended
cookies setcommand with additional flags for setting cookies before page load
agent-browser cookies set session_id "abc123" --url https://app.example.com --httpOnly --secure
agent-browser cookies set token "xyz" --domain .example.com --path /api --expires 1735689600Bug Fixes
- Fixed tab list command not recognizing new pages opened via clicks or
target="_blank"links - Fixed
checkcommand hanging indefinitely - Fixed
set devicenot applying deviceScaleFactor - HiDPI screenshots now work correctly - Fixed state load and profile persistence not working in v0.7.6
- Screenshots now save to temp directory when no path is provided
Security
- Daemon and stream server now reject cross-origin connections
v0.7.1
January 2026
Bug Fixes
- Fix native binary distribution - Native binaries for all platforms (Linux x64/arm64, macOS x64/arm64, Windows x64) are now included in the npm package. Previously, the release workflow published to npm before building binaries, causing "No binary found" errors on installation.
v0.7.0
January 2026
New Features
- Cloud browser providers - Connect to Browserbase or Browser Use for remote browser infrastructure
# Via -p flag (recommended)
agent-browser -p browserbase open https://example.com
agent-browser -p browseruse open https://example.com
# Via environment variable
export AGENT_BROWSER_PROVIDER=browserbase
agent-browser open https://example.com- Persistent browser profiles - Store cookies, localStorage, and login sessions across browser restarts
agent-browser --profile ~/.myapp-profile open myapp.com
# Login persists across restarts- Remote CDP WebSocket URLs - Connect to remote browser services via WebSocket
agent-browser --cdp "wss://browser-service.com/cdp?token=..." snapshotdownloadcommand - Trigger downloads and wait for completion
agent-browser download @e1 ./file.pdf
agent-browser wait --download ./output.zip --timeout 30000- Browser launch configuration - Fine-grained control over browser startup
agent-browser --args "--disable-gpu,--no-sandbox" open example.com
agent-browser --user-agent "Custom UA" open example.com
agent-browser --proxy-bypass "localhost,*.internal" open example.com- Enhanced skills - Hierarchical structure with references and templates for Claude Code
Bug Fixes
- Screenshot command now supports refs and has improved error messages
- WebSocket URLs work in
connectcommand - Fixed socket file location (uses
~/.agent-browserinstead of TMPDIR) - Windows binary path fix (.exe extension)
- State load and path-based actions now show correct output messages
Documentation
- Added Claude Code marketplace plugin installation instructions
- Updated skill documentation with references and templates
- Improved error documentation
v0.6.0
January 2026
New Features
- Video recording - Record browser sessions to WebM using Playwright's native recording
agent-browser record start ./demo.webm
agent-browser click @e1
agent-browser record stopconnectcommand - Connect to a browser via CDP and persist the connection for subsequent commands
agent-browser connect 9222
agent-browser snapshot # No --cdp needed after connect--proxyflag - Configure browser proxy with optional authentication
agent-browser --proxy http://user:pass@proxy.com:8080 open example.comget stylescommand - Extract computed styles from elements
agent-browser get styles "button"- Claude marketplace plugin - Added
.claude-plugin/marketplace.jsonfor Claude Code integration - Enhanced network output -
network requestsnow shows method, URL, and resource type --versionflag - Display CLI version
Bug Fixes
- Fix Windows daemon startup and port calculation
- Support
libasound2t64on newer Ubuntu versions (24.04+) - Prevent CDP timeout on empty URL tabs
- Output screenshot as base64 when no path provided
- Resolve refs in
get valuecommand - Support URL parameter in
tab newcommand - Allow
about:,data:, andfile:URL schemes - Detect stale unix socket by attempting connection
- Respect
AGENT_BROWSER_HEADEDenvironment variable - Handle SIGPIPE to prevent panic when piping to
head/tail - Fix null path validation in screenshot command
Protocol Alignment
These changes align the CLI with the daemon protocol for consistency:
selectcommand now usesvaluesfield (supports multiple selections)frame mainusesmainframeactionmouse wheeluseswheelactionset mediausesemulatemediaaction- Console output uses
messagesfield
Documentation
- Expanded SKILL.md with comprehensive command reference
- Updated README with new commands and options
- Updated CDP mode documentation with
connectworkflow