April 7, 2026
- Fixed hidden radio/checkbox inputs missing from snapshot refs when a
<label>wraps adisplay:none<input type="radio">or<input type="checkbox">. Chrome excludes these inputs from the accessibility tree entirely, making it impossible for AI agents to identify radio buttons and checkboxes via refs. Hidden inputs inside elements are now detected during cursor-interactive scanning and their parent nodes are promoted to the correct role with proper name and checked state (#1085)
- Added clickable heading anchors to the docs site, making it easy to link directly to any section (#1175)
April 6, 2026
- Fixed Chrome being killed after ~10s idle on Linux caused by
PR_SET_PDEATHSIGtracking the blocking thread that spawned Chrome rather than the daemon process. When Tokio reaped the idle thread, the kernel sent SIGKILL to Chrome even though the daemon was still alive (#1157, #1173)
April 6, 2026
- Embedded dashboard - The observability dashboard is now bundled directly into the CLI binary using
rust-embed, eliminating the need fordashboard install. The dashboard is available immediately after installing agent-browser (#1169)
April 6, 2026
- AI chat command - Added
chatcommand for AI-powered browser automation. Supports single-shot mode (chat "open google.com") and an interactive REPL. The AI agent can execute any agent-browser command via tool calls. RequiresAI_GATEWAY_API_KEY. Configure the model with--modelorAI_GATEWAY_MODEL(#1160, #1163) - Dashboard AI chat - The observability dashboard now includes a built-in AI chat interface for conversational browser control alongside live session views (#1160, #1163)
snapshot --urls- New-u/--urlsflag to include href URLs for link elements in snapshot output, giving agents direct access to link targets without additional queries (#1160)- Batch argument mode - The
batchcommand now accepts commands as inline arguments in addition to reading from stdin, simplifying single-invocation multi-command workflows (#1160)
- Fixed
getByRolematching wrong elements (e.g.<link>stylesheet elements instead of<a>anchors) by rewriting the implementation to use the CDP accessibility tree with ref-based element resolution instead of CSS selectors (#1145) - Fixed
uploadcommand not supporting accessibility tree refs (@eN) for file upload element selection (#1156) - Fixed
AGENT_BROWSER_DEFAULT_TIMEOUTnot being applied towaitcommands. The environment variable now propagates to all wait variants (wait,wait --url,wait --text,wait --load,wait --fn,wait --download) (#1153) - Fixed dashboard download error handling with improved retry logic for more reliable dashboard installation (#1154)
April 4, 2026
- Chrome profile login state reuse -
--profile <name>now resolves Chrome profile names (e.g.Default,Profile 1) and copies the profile to a temp directory to reuse login state, cookies, and extensions without modifying the original. Addedprofilescommand to list available Chrome profiles with--jsonsupport (#1131)
- Fixed
--ignore-https-errorsnot passing--ignore-certificate-errorsas a Chrome launch flag, causing TLS errors likeERR_SSL_PROTOCOL_ERRORto be rejected at the network layer before CDP could intervene (#1132) - Fixed orphaned Chrome processes on daemon exit by spawning Chrome in its own process group and killing the entire group on shutdown. On Linux,
PR_SET_PDEATHSIGensures Chrome is killed even if the daemon is OOM-killed (#1137) - Fixed CDP attach hang on Chrome 144+ when connecting to real browser sessions. Targets paused waiting for the debugger after attach are now resumed with
Runtime.runIfWaitingForDebugger(#1133) - Fixed stale daemon after upgrade silently reusing the old daemon process with broken CDP behavior. The daemon now writes a
.versionsidecar file and auto-restarts on version mismatch (#1134) - Fixed stale daemon/socket recovery where
close --allfailed to clean up zombie daemons and stale files. Unreachable daemons are now force-killed and orphaned socket/pid files are removed (#1136) - Fixed idle timeout not being respected because the sleep future was recreated on every select loop iteration, preventing the deadline from being reached (#1110)
- Fixed browser not relaunching when launch options change (e.g. adding extensions to
config.json) between consecutive launch commands (#996) - Fixed
auto_launch()not honouringAGENT_BROWSER_PROVIDERfor cloud providers, causing non-launch commands to fall back to local Chrome instead of connecting via the provider API (#1126) - Fixed HAR capture missing API requests under heavy traffic by increasing the CDP broadcast buffer from 256 to 4096 events, reducing the drain interval from 500ms to 100ms, and enabling network tracking in cross-origin iframes (#1135)
April 2, 2026
- AWS Bedrock AgentCore provider - Added AWS Bedrock AgentCore as a cloud browser provider. Connect with
--provider agentcoreorAGENT_BROWSER_PROVIDER=agentcore. Uses lightweight manual SigV4 signing for authentication with support for the full AWS credential provider chain (environment variables, AWS CLI, SSO, IAM roles). Configure withAGENTCORE_REGION,AGENTCORE_PROFILE_ID, andAGENTCORE_BROWSER_IDenvironment variables. Returns session ID and Live View URL in the launch response (#397)
- Added AgentCore provider page to docs site, README options table, SKILL.md, and dashboard provider icons (#1120)
March 31, 2026
- Fixed daemon hang on Linux caused by a
waitpid(-1)race condition in the SIGCHLD handler that stole exit statuses from Rust'sChildhandles, leaving the daemon in a broken state. Replaced the global signal handler with targeted crash detection via the existing drain interval (#1098)
March 30, 2026
- Fixed drag and drop not working because
mouseMovedevents during the drag omitted thebuttonsbitmask, causing the browser to seeevent.buttons === 0and never firedragstart/dragover/drop(#1087)
March 30, 2026
- Dashboard session creation - Sessions can now be created directly from the dashboard UI. A new session dialog provides a unified selector grid for local engines (Chrome, Lightpanda) and cloud providers (Browserbase, Browserless, Browser Use, Kernel) with async creation, loading state, and error display (#1092)
- Dashboard provider icons - The session sidebar now shows the provider or engine icon for each session, making it easy to identify which backend a session is using (#1092)
- Fixed Browser Use provider using an intermediate API call instead of connecting directly via WSS, which caused connection failures (#1092)
- Fixed Browserbase provider not sending an explicit JSON body and
Content-Typeheader, causing session creation to fail (#1092) - Fixed provider navigation hanging because
wait_for_lifecyclewaited for page load events that remote providers may not emit. Navigation with--providernow automatically setswaitUntil=none(#1092) - Fixed remote CDP connections timing out by increasing the CDP connect timeout from 10s to 25s for cloud providers (#1092)
- Fixed zombie daemon processes not being cleaned up when a provider connection fails during session creation from the dashboard (#1092)
March 30, 2026
- Auto-dismissal for alert and beforeunload dialogs - JavaScript
alert()andbeforeunloaddialogs are now automatically accepted to prevent the agent from blocking indefinitely.confirmandpromptdialogs still require explicitdialog accept/dismisscommands. Disable with--no-auto-dialogflag orAGENT_BROWSER_NO_AUTO_DIALOGenvironment variable (#1075) - Puppeteer browser cache fallback - Chrome discovery now searches
~/.cache/puppeteer/chrome/(orPUPPETEER_CACHE_DIR) for Chrome binaries, so users with an existing Puppeteer installation can use agent-browser without a separate install step (#1088) - Console output improvements -
console.logof objects now shows the actual object preview (e.g.{userId: "abc", count: 42}) instead of"Object". JSON output includes a rawargsarray for programmatic access (#1040)
- Fixed same-document navigation (e.g. SPA hash routing) hanging forever because
wait_for_lifecyclewaited for aPage.loadEventFiredthat never fires on same-document navigations (#1059) - Fixed save_state only capturing cookies and localStorage for the current origin, silently dropping cross-domain data (e.g. SSO/CAS auth cookies). Now uses
Network.getAllCookiesand collects localStorage from all visited origins (#1064) - Fixed externally opened tabs not appearing in
tab listwhen using--cdpmode. Tabs opened by the user or another CDP client are now detected and tracked (#1042) - Fixed dashboard server not picking up installed files without a restart.
dashboard installnow takes effect immediately on a running server (#1066) - Fixed Windows Chrome extraction failing because zip path normalization used forward slashes while the extraction code expected backslashes (#1088)
March 27, 2026
- Observability dashboard - Added a local web UI (
dashboard) that shows live browser viewports, command activity feeds, console output, network requests, storage, and extensions for all sessions. Manage it withdashboard start,dashboard stop, anddashboard install. The dashboard runs as a standalone background process and all sessions stream to it automatically (#1034)
agent-browser dashboard install
agent-browser dashboard start
agent-browser open example.com # session appears in dashboard
agent-browser dashboard stop- Runtime stream management - Added
stream enable,stream disable, andstream statuscommands to control WebSocket streaming at runtime. Streaming is now always enabled by default;AGENT_BROWSER_STREAM_PORToverrides the port instead of toggling the feature (#951) - Close all sessions - Added
close --allflag to close every active browser session at once
- Fixed Lightpanda engine compatibility (#1050)
- Fixed Windows daemon TCP bind failing when Hyper-V reserves the port by falling back to an OS-assigned port and writing it to a
.portfile (#1041) - Fixed Windows dashboard relay using Unix socket instead of TCP (#1038)
- Fixed radio/checkbox elements being dropped from compact snapshot tree because the
ref=check required a leading[that those elements lack (#1008)
March 25, 2026
- Re-apply download behavior on recording context - Fixed an issue where downloads were silently dropped in recording contexts because
Browser.setDownloadBehaviorset at launch only applied to the default context. The download behavior is now re-applied when a new recording context is created (#1019) - Reap zombie Chrome process and fast-detect crash for auto-restart - Added a non-blocking process-exit check before attempting CDP connection checks. This prevents a 3-second CDP timeout when Chrome has already crashed or exited, enabling faster detection and auto-restart of the browser (#1023)
- Route keyboard
typethrough text input - Fixed keyboardtypesubaction to correctly route through the text input handler, and added support for aninsertTextsubaction usingInput.insertText(#1014) - Handle
--clearflag inconsolecommand - Fixed theconsolecommand to accept and process aclearparameter, allowing console event history to be cleared (#1015)
March 24, 2026
- Dialog status command - Added
dialog statuscommand to check whether a JavaScript dialog is currently open (#999) - Dialog warning field - Command responses now include a
warningfield when a JavaScript dialog is pending, indicating the dialog type and message (#999)
- Standard proxy environment variables - The proxy setting now automatically falls back to standard environment variables (
HTTP_PROXY,HTTPS_PROXY,ALL_PROXY, and their lowercase variants), withNO_PROXY/no_proxyrespected for bypass rules (#1000) - Font packages for
--with-deps- Installing with--with-depsnow includes CJK and emoji font packages on Linux (Debian, RPM, and yum-based distros) to prevent missing glyphs when rendering international content (#1002)
- Fixed
state showalways failing with "Missing 'path' parameter" due to a mismatched JSON field name (#994) - Fixed
consolecommand returning onlyDonedue to a JSON field name mismatch in the response (#986) - Fixed browser-domain CDP events being dropped during downloads due to a
sessionIdmismatch (#998) - Fixed proxy authentication by handling credentials via the CDP
Fetch.authRequiredevent rather than passing them inline (#1000)
March 24, 2026
- Fixed modifier key chords (e.g.
Control+a,Shift+Enter,Control+Shift+a) not being handled correctly when usingpress. Modifier keys are now parsed and forwarded as CDP modifier bitmasks rather than treated as part of the key name (#980) - Fixed query parameters being dropped from
--cdpHTTP URLs (e.g.http://host:9222?mode=Hello). Query strings are now preserved and forwarded to the remote CDP endpoint (#982)
March 23, 2026
- Cross-origin iframe support - Added support for snapshots and interactions within cross-origin iframes via
Target.setAutoAttach(#949) - Network request detail and filtering - Added
network request <requestId>command to view full request/response detail, and new filtering options fornetwork requestsincluding--type(e.g.xhr,fetch),--method(e.g.POST), and--status(e.g.2xx,400-499) (#935)
agent-browser network requests --type xhr,fetch --method POST
agent-browser network request <requestId>- Snapshot usability - Reduced AI cognitive load by filtering semantic noise from snapshot output; cursor-interactive elements are now included by default, making the
-Cflag unnecessary (#968) - Upgrade command - Improved robustness of installation method detection in the upgrade command (#960)
- Target tracking - Enhanced target tracking and page information handling for more reliable browser session management (#969)
- Fixed viewport dimensions being reported incorrectly in streaming status messages and screencast (#952)
- Fixed
findcommand flags such as--exactand--nameleaking into fill values when used with fill actions (#955) - Fixed state commands incorrectly starting the daemon when no
session_nameis provided (#677, #964) - Fixed auto-connect triggering when the daemon is already running, preventing duplicate connections (#971)
- Fixed Enter key press not working by adding a text field to
keyDownevents (#972) - Fixed download command to properly handle absolute paths and correctly click target elements (#970)
- The
-C/--cursorflag forsnapshotis deprecated; cursor-interactive elements are now included by default and the flag has no additional effect (#968)
March 20, 2026
- Auth login readiness -
agent-browser auth loginnow navigates withload, waits for usable login form selectors, and uses staged username detection (targeted email/username selectors first, then broad text-input fallback). This reduces SPA timing failures, avoids false matches on unrelated text fields, and preventsnetworkidlehangs on pages with continuous background requests.
March 20, 2026
- WebSocket keepalive for remote browsers - Added WebSocket Ping frames and TCP
SO_KEEPALIVEto prevent CDP connections from being silently dropped by intermediate proxies during idle periods (#936) - XPath selector support - Fixed element resolution to correctly handle the
xpath=selector prefix (#908)
- Fast-path for identical snapshots - Short-circuits the Myers diff algorithm when comparing a snapshot to itself, avoiding unnecessary computation in retry and loop workloads (#922)
March 18, 2026
- Deduplicate text content in snapshots - Fixed an issue where duplicate text content appeared in page snapshots (#909)
- Native mouse drag state - Fixed incorrect raw native mouse drag state not being properly tracked across
down,move, andupevents (#872) - Chrome headless launch failures - Fixed browser launch failures caused by the
--enable-unsafe-swiftshaderflag in Chrome headless mode (#915) - Origin-scoped
--headerspersistence - Restored correct persistence of origin-scoped headers set via--headersacross navigation commands (#894) - Relative URLs in WebSocket domain filter - Fixed handling of relative URLs in the WebSocket domain filter script (#624)
March 18, 2026
- HAR 1.2 network capture - Added commands to capture and export network traffic in HAR 1.2 format, including accurate request/response timing, headers, body sizes, and resource types sourced from Chrome DevTools Protocol events (#864)
- Built-in
upgradecommand - Addedagent-browser upgradeto self-update the CLI; automatically detects your installation method (npm, Homebrew, or Cargo) and runs the appropriate update command (#898)
agent-browser upgradeMarch 17, 2026
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.har- 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.
--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.
- 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
March 13, 2026
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 snapshot- 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.
- 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
March 13, 2026
- 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 80- 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
March 12, 2026
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.
- 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.
- 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
March 9, 2026
- 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.
March 8, 2026
- 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.
- 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.
- Fixed native auth login failing due to incompatible encryption format.
- Added benchmarks to the CLI codebase.
March 3, 2026
- 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}| 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 |
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.
- 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.
February 25, 2026
- 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"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.
February 23, 2026
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.com- 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.
February 20, 2026
- 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.comFebruary 18, 2026
- 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 --annotateFebruary 18, 2026
- Added documentation for command chaining with
&&across README, CLI help output, docs, and skill files.
February 17, 2026
- 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.
February 13, 2026
- 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 myappFebruary 13, 2026
- Fixed all Clippy lint warnings in the Rust CLI
February 12, 2026
- Added support for custom executable path in CLI browser launch options
- Documentation site UI improvements including a new chat component with sheet-based interface
February 10, 2026
- Migrated documentation site to MDX for improved content authoring
- Added AI-powered docs chat feature
- Updated README with Homebrew installation instructions for macOS users
February 5, 2026
--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 -CFebruary 3, 2026
- 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 upFebruary 2, 2026
- 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
February 2, 2026
- Added
--stdinflag for eval command to read JavaScript from stdin
February 2, 2026
- Added base64 encoding support for the eval command with
-b/--base64flag to avoid shell escaping issues - Updated documentation with AI agent setup instructions
February 2, 2026
- 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
January 31, 2026
- 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
January 29, 2026
- Fixed version synchronization to automatically update Cargo.lock alongside Cargo.toml during releases
- Made the CLI binary executable in the npm package
January 27, 2026
- Fixed "Daemon not found" error when running through AI agents by resolving symlinks in the executable path
January 27, 2026
- 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
January 26, 2026
- 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
January 26, 2026
- 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
January 26, 2026
- 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 1735689600- 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
- Daemon and stream server now reject cross-origin connections
January 23, 2026
- 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.
January 23, 2026
- 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
- 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
- Added Claude Code marketplace plugin installation instructions
- Updated skill documentation with references and templates
- Improved error documentation
January 18, 2026
- 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
- 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
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
- Expanded SKILL.md with comprehensive command reference
- Updated README with new commands and options
- Updated CDP mode documentation with
connectworkflow