Reference
Changelog
What changed in each release, and why — this page is the full version history, grouped by minor version, newest first. chrome-use's own feature work lives in the v1.x line; further back is the fork era that predates the rebrand, plus the version numbers merged in periodically from upstream agent-browser.
v1.5.x
- v1.5.116 (September 10, 2026): ab-connect 0.5.25 adds one generic door,
ABExt.call: a CLI feature that only needs an allow-listedchrome.tabs / tabGroups / windows / downloads / webNavigationmethod no longer needs a new extension release; mutating calls are allowed only on tabs the agent created, adopted tabs stay read-only,windows.create/removeare refused, anddebugger / identity / storage / runtime / managementare never reachable this way.ABExt.statereturns everything the extension holds, owns and is configured to in one call. New CLI commandsextension call <ns.method> [json]andextension state; on an older extension they say "requires 0.5.25" instead of Chrome's wasn't found. Manifest permissions are unchanged, so the update installs without re-approval. The docs site gains a ChooseBrowser page (zh/en), and the permissions count in the README and docs is corrected to the actual 12. - v1.5.115 (September 10, 2026): what came out of reading the 26 documents of the browser-use plugin bundled with Codex. The core loop is one round trip per step:
click @e3 --observe+snapshot -i --diff; a newcore/behaviourreference (read thewhy:line before retrying, never drop to coordinates,reloadinstead of re-opening the page you are on, one direct navigation for a lookup, the page's own signal ends verification,keeponly deliverables, an empty tab list is not a disconnect);trust-boundariesgains three tiers of side effects (hand back / confirm at the step / task-level pre-approval).--observereturns the new tree when a click replaced the whole page instead of a diff that is the old page struck through;snapshot --diffwith nothing changed prints(no change since the last snapshot)on stdout;console --level/--filternarrow before--limit, and an empty result says that capture is off. The skill stub's description now leads with "Browser automation in the user's real, logged-in Chrome", and the docs say that on Codex one line inAGENTS.mdis what routes browser work here. Fix: embedded skill content is re-extracted when it changes, not only when the version does. README trimmed to about 290 lines. - v1.5.114 (September 9, 2026): macOS binaries are now Developer ID signed and notarized:
spctlgoes from rejected to accepted, so a browser-downloaded (quarantined) copy runs without a Gatekeeper refusal (#283). Repeated control names carry the text that separates them, so three identical “进入” buttons read ascontext="飞行棋"and so on; added only when a name repeats, and dropped when it fails to distinguish (#284).--observeexplains an empty delta (disabled / no box / covered / off-screen / present and fine) and states that an empty delta is not failure (#277).reportstates what it includes and excludes, notes that screenshots are a separate decision, and reads the extension and relay state itself (#278).tabsreports the tab the relay is actually attached to and speaks up when it disagrees with the session's pin (needs ab-connect 0.5.24, #279). Fixes:typewith no target is a usage error rather than “selector matched nothing” (#282);fillno longer loses the value on a React combobox that resets on focus (#282); policy-installed extensions are no longer pointed at an Update button that does not exist (#284). - v1.5.113 (September 9, 2026): ab-connect 0.5.23 asks Chrome to check the Web Store itself and applies an update while no tab is attached (no new permission, #272); a relay failure now says whether the installed extension is behind the published one — on the failure path only, and only when a newer build is actually installable (#271);
--observecarriestarget(session / tabId / targetId / url, ids only) so a caller can tell whether the page under it changed (#270);frame <index>accepts the numberframesprints, which previously came back as a raw querySelector error (#269). Fixes:domarks actions whose outcome the tree cannot decide (showMenu,toggle, stepping) as·withconfirmed: nullinstead of✓(#266); a failed explicit rebinding keeps the session on the browser it had rather than leaving it onabout:blank(#268); a blocked debugger access names the pinned tab and its url (#267); the socket-path limit explains where the 103 bytes went instead of blaming a session name the user never chose (#265). - v1.5.112 (September 9, 2026):
open --browser <profile> --rememberasks ChooseBrowser to route that site to that profile from now on — a proposal only, saved after ChooseBrowser's own confirmation; invalid requests are refused before navigating with the reason; needs ChooseBrowser 0.2.1+ (#257).doctorreports which ChooseBrowser rules file is read and how many rules it holds, unreadable versions, a second copy that is not being read, and whether the installed app accepts rule requests (#253, #257).session stop --forcedrops a stale tab-ownership record without closing tabs (#263). Fixes: one upload fires onechange, no more phantom 0% entries on React/Livewire uploaders (#261);read <url>refuses a client-rendered app shell instead of returning an empty page and points toopen+text(#262);session stopafter an upgrade no longer asks for a browser that is gone, andchrome-extension://access errors mention that another session daemon may hold the tab (#263). - v1.5.111 (September 9, 2026): Interactive snapshots retain bounded local context such as prices and omit repeated descriptions on product links. Status receipts appear in action observations while clickable status nodes keep their refs. Launched-browser drag routing uses the current connection (#246). Existing ChooseBrowser rules can select a connected profile when opening sites; explicit
--browserwins and--no-choosebrowseropts out. Unavailable rule targets fall back to normal selection; verify account identity when needed (#247). Release validation precedes platform builds (#249). Contributors: @leeguooooo. - v1.5.109 (September 9, 2026): Relay recovery no longer repeats actions with unknown outcomes. Observation capture failures preserve action results and report complete, partial, or unavailable evidence instead of fabricating an empty page. Fixes child-frame recovery, replacement tab references, and lifecycle lock release. Protected extension content reports explicit access denial. Navigation detects confirmed debugger access denial early while retaining normal page-load waits. Request summaries are bounded with omission counts;
CHROME_USE_RELAY_DIRisolates relay discovery. Bundled ab-connect 0.5.22 confirms host responses before showing Connected; Chrome Web Store distribution is separate (#242). Contributors: @leeguooooo. - v1.5.101 (2026-09-04) —
uploadsucceeds with a verification warning when a React dropzone consumes files and clears or replaces its input (#208). Nativeselectuses platform setters plus input/change events so controlled forms commit the selection (#209). Idle daemon recycling preserves external Chrome tabs, URLs and in-page state; explicit close/session stop still clean up created tabs (#210). Bundled ab-connect 0.5.20 uses browser-level navigation first and diagnoses rapid same-URL reload loops. App Store Connect still needs a signed-in regression check, and Web Store publication is separate (#211). Added browser and extension regression tests. Contributor: @leeguooooo. - v1.5.100 (2026-09-02) — A batch of interaction-reliability fixes (#202 to #206). DOM-dispatched clicks over the relay now move keyboard focus like a real click, so
clickfollowed bypressno longer lands on the previous field (#204).typereads the field back and prints a ⚠ warning withreadBackwhen the page rewrote or dropped the input;fillverification errors quote both values and say when the page filtered non-Latin text (#203).pressprobes for keydown/keyup/keypress listeners for keys whose only effect depends on page JavaScript (arrows on a text field, Escape, Enter on a bare input) and warns when none exist; bare XPath (//…) is detected automatically, a missedtext()explains the first-text-node rule, and "Element not found" keeps the selector and the specific diagnosis (#202). An agent that changes directory reuses its live session, and "Unknown ref" names the session and whether it has any refs (#205). When the accessibility tree is empty,snapshotfalls back to a DOM walk through shadow roots;snapshot --domforces it (#206). The bundled ab-connect is now 0.5.19: a tab's debugger is released after 30 s of inactivity so the banner no longer stays up, and the next command re-attaches (#201, pending Web Store publish). Contributor: @leeguooooo. - v1.5.99 (2026-08-31) —
screenshot --annotateno longer clears the current session's ref map; unchanged nodes in the same document retain the@reffrom the preceding snapshot. The original minimal regression now keeps@e82as@e82in the annotated legend, and the subsequent click succeeds; #197 remains open until the installed v1.5.99 release passes the same retest. If a page renderer blocksPage.navigate, the extension relay falls back to browser-level navigation without raising the global 8-second budget. Reconnect drops phantom tabs that no longer exist in Chrome, whiletab inspectprefers a live replacement tabId (fixes #193 and #196). Launched Chrome on macOS disablesMacAppCodeSignCloneso interrupted automation sessions do not leave APFS clones that grow after later Chrome updates (fixes #195). The bundled ab-connect is now 0.5.18. Contributor: @leeguooooo. - v1.5.98 (2026-08-27) — Relay command timeouts now include the number of in-flight commands, the age of the oldest command, and the current MV3 service-worker age, with the latest 20 timeout records retained in the extension. Those fields distinguish a blocked renderer from relay head-of-line blocking and worker-lifecycle failures; the global 8-second budget was deliberately left unchanged (#193). Contributor: @leeguooooo.
- v1.5.97 (2026-08-25) — External and extension-connected Chrome tabs now have explicit
created,adopted, andforeignownership. A session may drive tabs it created or explicitly adopted, but may close only tabs it created; adoption never grants deletion rights. Created target IDs persist per session and browser endpoint, so daemon restarts retain orphan cleanup without mistaking an adopted user tab for a created tab. Deletion authority is removed only afterTarget.closeTargetboth completes and returnssuccess: true. Selecting a pre-existing target now requirestab adopt <targetId>beforetab select. Contributors: @forsakesoul, @leeguooooo. - v1.5.96 (2026-08-25) — Reverts an ownership rule from v1.5.95. That release let a reconnecting daemon reclaim every relay-scoped tab as session-created, and therefore close it on
session stop. The reasoning was wrong: scoping is decided by the relay's owntarget_group, andTarget.attachToTarget— the calladoptmakes — re-tags a target into the adopter's group, so a user tab this session adopted sits in that same list. Once a restart drops the in-memory ownership set, the two are indistinguishable, so adopting a user tab and then restarting could letsession stopclose the user's page. A reconnecting daemon now reclaims nothing until authorship is recorded durably. Users on v1.5.95 should upgrade. The root-cause half of #192 is unaffected and stays: thesession stopgrace period is 1s → 8s (the relay allows each command 8s, so the daemon was reliably SIGKILLed mid-cleanup), and the cleanup loop now fires concurrently under one 5s budget instead of awaiting each close in turn, where a single wedged tab consumed every other tab's chance. Contributors: @forsakesoul (found it), @leeguooooo. - v1.5.95 (2026-08-24) — Restarting a named session no longer strands its tabs in the user's Chrome, so a long-running collector stops climbing toward 20GB (fixes #192). The cleanup existed; two clocks defeated it.
session stopsent SIGTERM and force-killed after 1s, while everyTarget.closeTargettravels over the relay, whose per-command budget is 8s — so the daemon was reliably killed mid-cleanup (the grace period is now 8s, and since the poll returns the moment the process exits, a healthy stop still finishes in a fraction of a second). The cleanup loop also awaited each close in turn, letting one wedged tab consume every other tab's chance; the closes now fire together under one 5s budget. The third gap was that a restarted daemon no longer recognised the tabs its own previous incarnation had opened, becausecreated_targetslives only in process memory. It now reclaims them through Chrome's tab group: the group title is the session name, and the only ways into that group areTarget.createTargetcarryingagentGroupandABExt.duplicateTab(adoptdeliberately neither groups nor marks ownership), so a grouped tab was necessarily created by a session of this name. Nothing is reclaimed without relay scoping, which keeps the user's own tabs from ever being mistaken for ours.extension statusnow splits its behind-the-Store hint by install route: a policy force-installed extension has no per-extension update control and has its permissions granted by Chrome, so those users are no longer sent after a button their greyed-out row does not have (fixes #190). Contributors: @leeguooooo. - v1.5.94 (2026-08-24) — A uniform-color fallback check for
screenshot: the #184 URL-drift guard only caught the case where the capturing session itself admits the drift — when the nextevalreads back the right URL but the pixels come from somewhere else, the guard stays quiet and the agent still gets a ✓ plus a blank image. When a capture is a single solid color while the page reports real layout height and text length, the command now prints ⚠ with an actionable warning instead of a clean ✓;[selector]/--clippartial captures and--annotate(which skips downscaling and would otherwise decode a full-size page image just for this check) are exempt (fixes #184). The integration docs used to list only Claude Code / Cursor / Codex, reading like an allowlist when the real rule is just "can run shell → install the CLI + skill; can't run shell but can configure an MCP server → point it at the same command + args" — that rule is now spelled out on the MCP page, with CodeBuddy / Trae / Windsurf / Cline added to the list (fixes #172). The ab-connect extension shipped 0.5.17 to the Chrome Web Store, catching this release's bundled version up to the Store, soextension statusno longer misreports a freshly published build (#189). Contributors: @leeguooooo. - v1.5.93 (2026-08-20) — The macOS silent-install policy profile puts Chrome into a "managed by your organization" state, and the cost was never disclosed: Chrome disables and locks Secure DNS (DoH), and the extension is marked "installed by your administrator" with no manual update/remove controls. Added
extension install --no-profile, which never writes the policy profile and installs from the Store instead; the approval prompt now states both costs and the opt-out command up front, andextension status/uninstallexplain the same tradeoff whenever the policy is active (fixes #187). The extension version in this repo routinely runs ahead of what the Web Store has published (0.5.16 bundled against a Store still serving 0.5.12, at one point), which madestatus/doctorcall every Store user OUTDATED and point them at an update that doesn't exist yet; they now ask the Store's updatecheck endpoint on demand and distinguish four cases — genuinely behind, already the newest published build, an intermediate unpacked build ahead of the Store, or Store unreachable (fixes #186). Contributors: @leeguooooo. - v1.5.92 (2026-08-19) — On the extension relay, a page-injected extension frame could make
screenshot's CDP session land on the extension's ownabout:blankrenderer while tabs/eval/get-text kept reporting the real page — the result was a ✓ next to a blank image with nothing for the agent to doubt. The command now compares the tab URL the session is driving against the livelocation.hrefon the capturing session right before shooting; a mismatch is reported as drift with instructions to re-bind the tab, and no file is written (fixes #184). On Windows, Chrome's user data lives underLOCALAPPDATArather than the Roaming AppData pathconfig_dir()returns, soextension statusreported "0 profiles found" even with a relay actively driving one; a behind-bundled extension version also stops printing a bare ✓ that makes the reader diff two version strings themselves and now says OUTDATED explicitly (fixes #183). Contributors: @leeguooooo. - v1.5.91 (2026-08-13) —
testused the literalflags.session == "default"to infer whether the user had explicitly picked a session — wrong both ways:--session defaultis indistinguishable from not passing the flag at all, while an agent-derived session name got treated as explicit.test suite.yaml --session defaulttherefore silently launched a brand-new isolated browser, throwing away the logged-in state of the real Chrome the user had already connected. Fixed by tracking onFlagswhether the session actually came from the user (--session/AGENT_BROWSER_SESSION/ config file);testnow decides between reusing that session and spinning up its owncu-testbased on that flag, and only closes a browser it launched itself.--browser/--as/--as-strictare now forwarded to every step in a suite (fixes #181). Contributors: @leeguooooo. - v1.5.90 (2026-08-12) —
SessionLifecycleLock/RelayRecoveryLockwere no-op stubs on Windows, so two concurrent invocations each spawned their own daemon and raced on the same socket/port files; switched to real cross-platform advisory locking viastd::fs::File::lock(flock on Unix, LockFileEx on Windows), printing a status line before blocking so a lock wait isn't mistaken for a hang (fixes #177). The MCPscreenshottool used to return only a server-local path the client had no way to open — captures are now inlined as an image block (magic-byte MIME sniff, 2MB cap, overridable or disable-able viaCHROME_USE_MCP_MAX_INLINE_IMAGE_BYTES) (fixes #178). DOM-dispatched clicks never produce a mirrorInput.dispatchMouseEvent, so the on-page cursor didn't move and a click looked like nothing happened; the cursor is now driven explicitly at the resolved element'sgetBoundingClientRect(no extra resolve just for the visual), and hidden around a capture so it isn't baked into an image the agent later reads (fixes #179). Two agents sharing one terminal tab shareWT_SESSION/TMUX_PANEand collapsed onto one daemon, fighting over tabs — session names now resolve in tiers (explicit agent id →<PRODUCT>_SESSION_ID-convention scan → per-terminal id), anddoctorreports which environment variable the current session name was derived from (fixes #180). Contributors: @Ishannaik, @leeguooooo. - v1.5.89 (2026-08-10) —
download-urlused to reject theblob:scheme outright — a blob URL belongs to the document that created it, and the extension'schrome.downloadsAPI can't reach it, so a resource already rendered on the page (e.g. a canvas export before re-encoding) was simply unreachable. It now fetches the bytes from inside the page and writes them to disk directly — byte-for-byte, unliketoDataURL, which re-encodes and silently drops metadata such as C2PA provenance manifests; when the top frame can't fetch it, each child frame is retried and the result reports which frame the bytes came from; a 32MB cap applies since the bytes travel base64-encoded in a single CDP message and going over hangs the session rather than just failing the download (fixes #169). The daily version-check upgrade notice used to share stderr with real errors, so a tool wrapping chrome-use that "reports failure with attached stderr" got unrelated housekeeping mixed in — it now only prints where a human can see it (TTY, not--json, andCHROME_USE_NO_UPDATE_NOTICEunset); the background check and opt-in auto-upgrade themselves are unaffected (fixes #170). Contributors: @leeguooooo. - v1.5.88 (2026-08-10) —
fillends by callingel.blur()to trigger a site's blur validation, which drops focus back to<body>; the very nextpress Enterthen dispatches to the document, the form never submits, and the CLI still printed✓ Done.fillnow returns focus to the field it just filled (only when blur didn't hand focus somewhere else deliberately, checked by walking down to the true deepest activeElement across shadow roots);pressgained--selector(alias--on) to focus a target first, its result now reports thetargetit landed on, and Enter dispatched to<body>gets a warning (arrow keys/Tab/Backspace landing there is normal and stays silent);press <chord> --holdused to drop its modifiers, actually holding a bare key while reporting the chord back unchanged — fixed (fixes #167). Contributors: @leeguooooo. - v1.5.87 (2026-08-05) — Fixed
@refsilently activating a different element. A timed-out, failed, or absent identity probe used to count as "confirmed", and the extension relay's multi-hop transport blew the 1s budget routinely — soclick @e273opened an unrelated message menu and printedDone. The probe budget is now transport-aware (2s direct CDP, 5s over the relay, tunable withAGENT_BROWSER_VERIFY_REF_TIMEOUT_MS), and a ref that cannot be confirmed is re-anchored on the snapshot's exact role + name (keeping the cached node when it still matches), then by fingerprint, and refused if neither lands — there is no "act on the cached node anyway" branch left. Fingerprint relocation gained an accessible-name floor: role, ancestors, and sibling position are worth 0.60 on their own, so two sibling<button>s cleared the 0.70 threshold on shape alone and relocatedbutton "我的 agent"onto a message overflow button. Candidates whose label bears no resemblance are now excluded, while a recognisable rename (Submit → Submit now) still self-heals. Reusing a@refacross snapshots additionally requires the role + name to be unchanged, so a node React handed to another component gets a fresh ref (fixes #162). The skill stub droppedhidden: true: pi and other harnesses read it as "never load this skill", which made chrome-use invisible to the agents it exists for — the CLI now hides stubs by directory, and the stub description has a regression test for pi's 1024-character limit (fixes #165, #164). Contributors: @leeguooooo, @beilo. - v1.5.86 (2026-07-31) — Fixed older ab-connect builds making a failed
tab selectliveness probe look like proof that the renderer was unresponsive. The warning now reports the live and bundled extension versions and states that probe failure alone is not a renderer diagnosis. On old extensions,tab inspectnow replaces the raw-32601CDP error with its 0.5.16 minimum, the current and bundled versions, and actionable update or reload steps atchrome://extensions(fixes #157). Contributors: @leeguooooo. - v1.5.85 (2026-07-31) —
record startnow records the current session-owned tab in extension-connected real Chrome instead of calling the forbiddenTarget.createBrowserContext(fixes #151).snapshot -iadds non-default cursor, id, data-testid, compact class, and fallback-name anchors; the same DOM node now keeps its@refacross consecutive snapshots and modal churn, with hard resets only on navigation or tab changes (fixes #154 and #155). A barefind "natural-language description"returns ranked semantic/context candidates with selectors and scores and never acts automatically (fixes #156). ab-connect 0.5.16 reattaches white-screen or frozen tabs through the browser-level target registry without waiting for an unresponsive renderer to identify itself; newtab select, in-session no-navigationtab adopt, and page-JavaScript-freetab inspectoperations distinguish renderer timeouts from a genuinely missing tab (fixes #157). Contributors: @leeguooooo. - v1.5.84 (2026-07-29) — Fixed sessions becoming permanently unusable with
No such file or directory (os error 2)when the daemon process remained alive after its Unix socket disappeared. Cross-process locks now serialize relay teardown and daemon startup for each session, while global native-host recovery runs in only one process. The next browser command allows a concurrent startup window, reclaims the unreachable worker, and starts a clean daemon for the same session. If the socket disappears during an in-flight command, the error names the exact endpoint, stops the orphan, removes stale sidecars, and asks the caller to rerun (fixes #152). Contributors: @leeguooooo. - v1.5.83 (2026-07-28) — Fixed concurrent Codex tasks sharing the bare
defaultdaemon and overwriting one active tab: unset sessions now recognizeCODEX_THREAD_IDand derive a distinct tab group per task. If a relay session's pinned tab disappears, chrome-use now preserves that target as a recovery tombstone and fails or reattaches to the same target instead of silently switching to a survivingabout:blankscratch tab; mixed concurrentevalandsnapshotflows therefore keep SPA in-memory login state intact (fixes #149). Contributors: @leeguooooo. - v1.5.82 (2026-07-28) — Completed the v1.5.81 review follow-up:
statusnow verifies that the native-host launcher resolves to an executable and exposesextension.hostHealthyin JSON; automatic stale-daemon recovery gives one consistent next action; ab-connect 0.5.15 identifies timeouts with a stableRelayTimeoutError; and the confirm E2E plus command help now match the behavior they document. Contributors: @leeguooooo. - v1.5.81 (2026-07-28) — Added daemon-free
chrome-use statusfor a single CLI, extension, relay, profile, and session health snapshot (fixes #145). Clicks that open nativeconfirm()/prompt()now return a pending dialog immediately, so the same session can accept or dismiss it (fixes #144). ab-connect 0.5.14 bounds Chrome debugger calls at 8 seconds, while the CLI resets a stuck daemon when an older relay stays silent through the socket deadline, preventing indefinite HTTP-to-HTTPS process-swap hangs (fixes #146). The official chrome-use-sites source now provides Twitter search/thread engagement adapters with stable replies, bookmarks, and numeric views (fixes #124). Contributors: @leeguooooo. - v1.5.80 (2026-07-26) — Fixed
session stop [name]andsession prunebeing intercepted by the ownership-command path. Both lifecycle commands now reach the daemon handler again,session --helpclearly distinguishes ownership and lifecycle operations, and named stops validate the session name before touching daemon state (#142, fixes #140). Contributors: @leeguooooo. - v1.5.79 (2026-07-26) — Added a Nix flake with a package, development shell, NixOS module, and home-manager module (#136). Native Duplicate tab transactions are now bounded, so late extension replies cannot outlive a timed-out request or corrupt later session state (#137).
fillnow resolves Monaco through global and AMD model APIs, performs an atomicsetValueor trusted clipboard fallback, and verifies the authoritative model readback before reporting success; the Synology DSM empty-editor false success now fails safely (#139). Contributors: @M4jor-Tom, @forsakesoul, @leeguooooo. - v1.5.78 (2026-07-24) — Native downloads:
download-url,download-start,downloads, and matching MCP tools; dynamic-link downloads no longer navigate the active tab by mistake. The local service now exposes a loopback- and origin-protected/api/v1, with stablecode/retryableerror fields across CLI, MCP, daemon, and HTTP responses (#132).network requests --type websocketobserves WebSocket connection metadata from pages and cross-origin iframes without recording frame payloads (#131).site updatenow syncs both theepiral/bb-sitescommunity source and theleeguooooo/chrome-use-sitesofficial source by default, with no manual registration required (#133). - v1.5.77 (2026-07-21) — Site-adapter application errors now return a non-zero exit code; the installer works in non-interactive environments without
/dev/tty; reserved global-flag collisions produce an actionable warning; heavy-pagePage.navigatetimeouts degrade to a warning after navigation is confirmed; configurable private adapter sources addsite sources/add/remove(#122, #123, #125, #126, #127). - v1.5.76 (2026-07-16) — New
chrome-use tab duplicate [ref] [--label <name>]: uses Chrome's native Duplicate tab (preserving full navigation history) and is also exposed through thechrome_use_tabsMCP. It works only on extension-connected real Chrome —--launch, raw CDP, Lightpanda, cloud providers, and old extensions all get a clear unsupported error, with no URL-based recreation fallback (that would lose Duplicate semantics); the extension negotiates anativeTabDuplicatecapability viahello. The duplicate becomes chrome-use's internal active target while restoring your previously focused window and tab; output exposes only tab/target ids, never the URL, and orphaned duplicates are rolled back if attach, grouping, or setup fails. - v1.5.75 (2026-07-10) — Fixed extension-relay auto-connect creating two
about:blanktabs for a new session. The connection now reuses the session-owned scratch tab created during target discovery and creates a fallback only when the page count is zero, so read-only commands, status checks, and pre-navigation failures no longer leave paired blank tabs behind. - v1.5.74 (2026-07-08) — Skill distribution v2: new
chrome-use skill installas the one entry point — it delegates to skills.sh (npx skills add … -g) to install across 20+ runners and never writes runner dirs itself;curl … | shnow installs the skill after the binary and finishes with adoctorself-check plus a copy-paste first prompt for your agent;doctorgains a read-only "is the agent skill installed?" probe (warn, never fail); the stub routing table grows from 5 to 11 symptom→command rows (canvas/network/react/real-chrome/sessions/test, …). Also fixed:skills/chrome-use/SKILL.md'sdescriptionwas invalid YAML (a bare:), which madenpx skills addinstallcore/test/… instead ofchrome-use— fixed with a folded block scalar. - v1.5.73 (2026-07-07) — Four issue fixes:
extract --schemano longer silently returns[]on a plain repeating list (auto-detects the repeating container + a diagnostic on no match + accepts an array-shaped schema, #96);siteadapters inject the family_helperbefore running (twitter/* etc. no longerReferenceError, #99);console --limit Ntails the last N entries (#110); real skill tiering (<!-- full -->marker — lean default,--fullfor everything) + dedup +session handoffsynced into the sessions skill (#100). - v1.5.72 (2026-07-07) — Native commands survive shadow-DOM-heavy apps:
select/fillnow handle react-select, module-scoped Monaco, and controlled inputs whose @ref anchored a wrapper (#105); sharper on Element-Plus modals —snapshot -itags controls inside the top modal/drawer withmodal, a closest-text hint on selector misses, and a newdiagnoseverb for blank SPAs (#90).curl … | shsets up the extension and handles the debugging banner in one command (consent at install → auto-silence at runtime). The skill steers agents toread/click/fillover hand-rolled eval. - v1.5.71 (2026-07-07) — Docs: new How It Works (with an SVG pipeline diagram), Lineage & Upstream, and Single-pass Scripting chapters, plus a full doc-site audit sweep. No functional change.
- v1.5.70 (2026-07-07) —
chrome-use scriptsingle-pass scripting (#101): a JSON op-list (value bus + loops + asserts) and synchronous JS (cu.*helpers); a daemon-resident boa engine survives hard navigations, running many steps in one tool call. Also: connect detects enterprise-blocked extensions and guides the escape hatches; opt-in background auto-update (CHROME_USE_AUTO_UPGRADE=1); one-click Web Store install. - v1.5.69 (2026-07-07) —
snapshot -imerges presentation-role / AX-stripped cross-origin iframes (the reCAPTCHA case, #92); snapshot/eval resync before resolving the active tab so they don't drift to about:blank (#93); unlabeled interactive controls named from placeholder / nearest label (#90.2); screenshot resync captures the active tab (#91). - v1.5.68 (2026-07-02) — Session ownership + human handoff:
session handoff/resume/status/list(#89, ported from ego-lite);whoamiper-site identity + a global--asaccount guard. - v1.5.67 (2026-07-02) — Guided multi-profile extension install: enumerate all profiles, detect stale policy, deep-link Settings + wait for approval + auto-restart; setup wizard localized zh/en;
connect <port>/--cdprebind when the endpoint changes. - v1.5.66 (2026-07-02) —
selectno longer silently selects nothing when no<option>matches; it now errors and lists every available option. Default action timeout dropped from 30s to 25s. - v1.5.65 (2026-07-02) —
network route --set-json: structured JSON-field edits on the real response; newchrome-use reportpackages a de-identified friction log into a paste-ready GitHub issue; MCP--tools all(24 tools). - v1.5.64 (2026-07-01) —
chrome-use mcp: a stdio MCP server (12-tool core profile) for MCP-only hosts like Claude Desktop that can't run a shell command. - v1.5.63 (2026-07-01) —
read [url]: fetch a URL — or, with no URL, the active tab — as agent-readable text; supports--llms/--outline/--filter/--raw. - v1.5.62 (2026-07-01) — fixed
type --clear/--delayparsing;find labelnow also matchesaria-label/aria-labelledby. - v1.5.61 (2026-07-01) — React renderer fix: pick the actual react-dom renderer instead of hardcoding id 1 (was reading an empty tree on Next.js 16.3 Turbopack RSC apps).
- v1.5.60 (2026-07-01) —
network route: edit the real response at the response stage (status/headers/body substring replace). - v1.5.59 (2026-07-01) —
network route: mock responses and rewrite requests via the CDP Fetch domain — no proxy, no cert, no JS injection. - v1.5.58 (2026-07-01) —
chrome-use test: per-case account switching for multi-account YAML suites (account:). - v1.5.55 (2026-06-29) — friction auto-reporting.
- v1.5.54 (2026-06-29) — form fill can select by visible option text; fixed self-heal on the
--launchpath. - v1.5.53 (2026-06-29) —
form fill --map: bulk-mapped form filling. - v1.5.52 (2026-06-29) —
--observe: capture the a11y-tree delta around an action; auto ref-heal docs. - v1.5.51 (2026-06-29) — action guards
--if-present/--optional. - v1.5.50 (2026-06-29) —
extract --schema: schema-driven structured scrape to JSON. - v1.5.49 (2026-06-29) —
expect: assertion verb with a matching exit code. - v1.5.48 (2026-06-29) — ab-connect 0.5.7: wake-from-sleep reconnect via
chrome.idle. - v1.5.47 (2026-06-29) — ab-connect 0.5.6: adopt no longer persists; clears the stuck debugger banner.
- v1.5.46 (2026-06-29) — relay self-heal: a dropped relay recovers on its own, no hang or manual reconnect.
- v1.5.45 (2026-06-28) — fixed adopt-tab command resolution (a regression from #68).
- v1.5.44 (2026-06-28) — adopt switched to on-demand attach (ext 0.5.5): no more debugger banner on user tabs.
- v1.5.43 (2026-06-27) — #65
snapshot --filter+ eval top-level-await hint. - v1.5.42 (2026-06-27) — #60 browser/profile selection:
browserslisting +--browser. - v1.5.41 (2026-06-26) — #60 driving-profile observability + #53 canvas/closed-shadow skill docs.
- v1.5.40 (2026-06-26) — #58
eval --frame, reconnect alias, actionable stale-target errors. - v1.5.39 (2026-06-26) —
snapshot -inow surfaces inline form-validation errors. - v1.5.38 (2026-06-26) — #52 tab routing scoped to the session group + CI format fix.
- v1.5.37 (2026-06-25) — solve-slider robustness (wait for slices) + pluggable detector hook.
- v1.5.34 (2026-06-25) — solve-slider (NetEase Yidun slider captcha) + drag offset mode.
- v1.5.32 (2026-06-24) — sunny extension UX: friendlier icon, polished popup, options page, agent cursor.
- v1.5.31 (2026-06-24) — fail loudly on relay tab-drift instead of clicking the wrong tab.
- v1.5.30 (2026-06-24) — relay-down guidance + canvas/closed-shadow skill playbook.
- v1.5.29 (2026-06-24) — silenced the
chrome.debuggerbanner + fixed a leftover about:blank scratch tab. - v1.5.28 (2026-06-22) — the chrome-use skill now prefers live web checks.
- v1.5.27 (2026-06-19) — gated the about:blank cleanup to the relay case only.
- v1.5.26 (2026-06-18) —
session stop <name>+session prune+ lifecycle docs. - v1.5.25 (2026-06-18) — default idle-shutdown +
keep: stop leaving scratch tabs/groups behind. - v1.5.24 (2026-06-18) — build fix: include browser.rs's clear_viewport/via_relay + cargo fmt.
- v1.5.23 (2026-06-17) —
adopt: drive a pre-existing tab without opening a new one. - v1.5.22 (2026-06-17) — group-scoped
Target.getTargetson the relay: restores follow-popup + cross-session adopt under isolation. - v1.5.21 (2026-06-17) — rich-editor fill, box centers, screenshot downscale, disabled handling + docs (#41-#45).
- v1.5.20 (2026-06-17) —
site: adapter auto-sync + auto-suggest. - v1.5.19 (2026-06-17) —
site: bb-sites adapters — turn any site into a structured-data CLI. - v1.5.18 (2026-06-17) — issue-reporting guidance + a clear error for
data:URLs over the relay. - v1.5.17 (2026-06-17) — complete multi-agent isolation: clicks no longer adopt foreign tabs/pop-ups.
- v1.5.16 (2026-06-17) — strict multi-agent tab isolation on the relay.
- v1.5.15 (2026-06-17) — trusted activation for in-iframe buttons.
- v1.5.14 (2026-06-17) — fixed the eval-await regression (replMode) + default scroll; green CI (#36, #38).
- v1.5.13 (2026-06-17) — eval replMode (re-declarable let/const) + the snapshot-first skill rule (#37, #38).
- v1.5.12 (2026-06-17) — relay-safe hover/dblclick/drag, deeper iframe snapshot, key-events-based typing.
- v1.5.11 (2026-06-16) — cross-origin iframe scroll/click +
openauto-reattach (#35, #36). - v1.5.10 (2026-06-16) — warn when launching via debug-port while the relay is up.
- v1.5.9 (2026-06-16) — strip zero-width unicode from titles +
screenshot --clip/element. - v1.5.8 (2026-06-16) — file upload over the extension relay.
- v1.5.7 (2026-06-16) —
cf-status: a Cloudflare clearance preflight check. - v1.5.6 (2026-06-15) — pin the adopted tab against transient relay snapshots.
- v1.5.5 (2026-06-15) — a diagnostic log for the remote-debugging consent modal in connect mode.
- v1.5.4 (2026-06-15) —
get text --pierce: pierce closed shadow DOM (#30). - v1.5.3 (2026-06-15) —
get textnow defaults to cross-frame; #29 (sessions/did-you-mean/tab liveness); CI changelog fix. - v1.5.1 (2026-06-15) — frame-aware text extraction (
get text --all-frames/--main,frames) + #27, ab-connect 0.4.9 targetId recovery. - v1.5.0 (2026-06-15) — text-selector click,
get textdefaults to body,tab --activate,click --follow/openedTab;fillnow fires input/change/blur;closewording +chrome-use current.
v1.4.x
- v1.4.1 (2026-06-14) — hold-to-move (full keydown/keyup descriptor, #game); requires ab-connect 0.4.8 (#23 reattach hardening).
- v1.4.0 (2026-06-13) —
openno longer hijacks focus;tab adopt-by-targetId; keydown/keyup docs; canvas hint;doctorchecks version coherence across components.
v1.3.x
- v1.3.0 (2026-06-13) — daemon restart/status (#20.2) + live tab resync, adopt-by-targetId,
open --reuse-tab.
v1.0.x – v1.2.x
- v1.2.3 (2026-06-13) —
bringToFrontcommand +tab list --fullshows untruncated URLs. - v1.2.2 (2026-06-12) — a non-blocking "update available" notice + release changelogs.
- v1.2.1 (2026-06-12) — relay tab-drift pin on open (#14/#18) + a stable per-tab relay session.
- v1.2.0 (2026-06-12) —
chrome-use test: browser test suites. - v1.1.0 (2026-06-12) — cross-profile cookie export/transfer.
- v1.0.0 (2026-06-12) — rebrand: agent-browser-stealth → chrome-use, de-fork, version reset to 1.0.0.
v0.27.0-fork.x (the fork era before the rebrand)
- v0.27.0-fork.51 (2026-06-12) — rustfmt fix for the issue #7 regression tests (CI format gate).
- v0.27.0-fork.50 (2026-06-11) — tab-title truncation + multi-agent/eval/type docs.
- v0.27.0-fork.49 (2026-06-11) — embedded stealth-status + multi-agent skill guidance.
- v0.27.0-fork.48 (2026-06-11) — iframe-proxy toggle + stealth status.
- v0.27.0-fork.47 (2026-06-11) — tab-drift pin,
snapshot -ckeeps interactive elements, stale-ref guidance. - v0.27.0-fork.46 (2026-06-11) — capped the
--annotatelegend. - v0.27.0-fork.45 (2026-06-11) —
pickcombobox as an atomic op. - v0.27.0-fork.44 (2026-06-11) — eval origin stamp,
type --focused, humanize argument validation warning. - v0.27.0-fork.43 (2026-06-11) — a batch of issue/Hermes fixes (silent-click, live env,
eval --file, tab-list, docs). - v0.27.0-fork.42 (2026-06-11) — close session-owned tabs on exit — no more tab leak.
- v0.27.0-fork.41 (2026-06-11) — relay self-heals silently, no user action needed on a blip.
- v0.27.0-fork.40 (2026-06-11) — no more consent-dialog fallback when the extension is installed.
- v0.27.0-fork.39 (2026-06-11) —
cookies set --curlpreserves the full set of cookie attributes. - v0.27.0-fork.38 (2026-06-11) — silent operation — no foreground tab stealing.
- v0.27.0-fork.37 (2026-06-11) — completed humanize (bbox jitter + wheel/drag easing).
- v0.27.0-fork.36 (2026-06-11) — human-like input stealth (humanize).
- v0.27.0-fork.35 (2026-06-11) — skill docs embed Store-install, feedback channel, and stale-binary guidance.
- v0.27.0-fork.34 (2026-06-11) — Web Store live: store-targeted force-install + skill store-install guidance.
- v0.27.0-fork.33 (2026-06-10) — polished two Hermes-found cosmetic issues (invalid-selector wording, empty-URL glob).
- v0.27.0-fork.32 (2026-06-10) — resolved Hermes-found CLI bugs (
wait --url,find role, invalid selector, and more). - v0.27.0-fork.31 (2026-06-10) — Web Store submission ready + two install paths.
- v0.27.0-fork.30 (2026-06-10) — stealth: navigator overrides moved onto the prototype, not the instance.
- v0.27.0-fork.29 (2026-06-10) — fixed the plugin overflowTest, popup-free auto-connect, ab-connect rebrand+icon, README.
- v0.27.0-fork.28 (2026-06-10) — skill docs: headed-by-default, tab groups.
- v0.27.0-fork.27 (2026-06-10) — forbid headless — always headed, for stealth.
- v0.27.0-fork.26 (2026-06-10) — stealth:
navigator.platformfixed to MacIntel (anti-detection fix). - v0.27.0-fork.25 (2026-06-10) — fixed the relay liveness check (answer
Browser.getVersionlocally) — stops the reconnect-storm drift. - v0.27.0-fork.24 (2026-06-10) — passive tab discovery no longer hijacks the active tab (per-session control).
- v0.27.0-fork.23 (2026-06-10) — tolerate minimal targetInfo from the relay (extension connect's getTargets).
- v0.27.0-fork.22 (2026-06-09) — extension connect uses the relay URL, fixing a
--session connecthang. - v0.27.0-fork.21 (2026-06-09) — multi-client relay (concurrent agents).
- v0.27.0-fork.20 (2026-06-09) — per-session tab groups (ab-connect 0.4.0).
- v0.27.0-fork.19 (2026-06-09) — a new extension id (Web Store signing key) + store-aware install.
- v0.27.0-fork.18 (2026-06-09) — extension connect: zero-token native-messaging control of real Chrome + click reliability + eval-first/find-url/site-notes.
- v0.27.0-fork.17 (2026-06-05) — the eval-first skill + find-url (local bookmark search) + the site-notes convention.
- v0.27.0-fork.16 (2026-06-05) — click reliability (scroll-into-view + DOM fallback) + skill docs (console opt-in, CLICK_MODE, form/hidden-input eval).
- v0.27.0-fork.15 (2026-06-04) — stealth hardening (lazy
Runtime.enable, native timezone/WebRTC, opt-in canvas noise) + adaptive @ref relocation. - v0.27.0-fork.14 (2026-06-01) — upgrade fix + CI on Node 24.
- v0.27.0-fork.13 (2026-06-01) —
--profile auto. - v0.27.0-fork.12 (2026-06-01) — embedded skill docs.
- v0.27.0-fork.11 (2026-06-01) — stealth is now fully applied on the FullLaunch path (previously only on some launch paths).
- v0.27.0-fork.10 (2026-06-01) — a UX batch + stealth coverage/webdriver handling.
- v0.27.0-fork.9 (2026-06-01) — routine fix iteration.
- v0.27.0-fork.8 (2026-05-09) — built-in retry for transient overlay occlusion.
- v0.27.0-fork.7 (2026-05-09) — catch transient overlay occlusion before mis-clicking.
- v0.27.0-fork.6 (2026-05-09) — capped defensive CDP timeouts, fixed a misleading chrome://inspect tip.
- v0.27.0-fork.5 (2026-05-09) — fixed a misleading warning + a connect liveness probe +
wait @ref. - v0.27.0-fork.4 (2026-05-09) — fixed the SPA click race + @ref identity verification +
wait --gone. - v0.27.0-fork.3 (2026-05-09) — SPA click race fix + the
wait --goneprimitive. - v0.27.0-fork.2 (2026-05-09) — a friendlier find error + restore the URL after a version-mismatch restart.
- v0.27.0-fork.1 (2026-05-09) — synced with upstream v0.27.0, added skills.sh support.
Earlier history
chrome-use periodically merges in upstream agent-browser releases (v0.27–v0.31, e.g. glob support in --wait from v0.30.0, a sandbox-package publish-metadata fix from v0.29.0). chrome-use's own development sits on top of these and diverges heavily, so the two version lines aren't in lockstep.
Earlier v0.x releases (v0.6.0 – v0.26.0, January–April 2026) inherit from the upstream agent-browser base; they're not worth listing individually here.