OpenClaw's browser tooling received an important P1 isolation fix today. PR #136465, merged on September 2, changes how native browser action cancellation is handled across tabs.
The issue was easy to describe and painful to debug: cancelling a blocked click on one tab could close the shared CDP connection and fail another tab's click. A cancelled fill could still write text later, and an upload on a second tab could supersede an upload on the first.
What Changed
The browser adapter now passes native cancellation signals to supported locator and file operations, then joins native completion with the existing navigation-policy cleanup. Upload ownership follows the actual Playwright Page: same-page replacement joins its predecessor, while different tabs run independently.
The merged PR removes the older shared-connection click and upload workaround, the global upload queue, custom chooser listener phase machinery, and duplicated file preparation.
The result is a tighter page-level ownership model:
- Cancelling a blocked action on tab A should not close tab B's CDP path
- A cancelled fill should not write into an input after it becomes editable
- Two tabs can run independent upload flows without one replacing the other's file
- Navigation-policy cleanup still participates in operation settlement
This is a good example of OpenClaw's browser surface maturing from "control a page" toward "coordinate many page-scoped operations safely."
Why It Matters
Browser automation is one of the most powerful OpenClaw capabilities because it crosses from local reasoning into real web state. It is also one of the places where concurrency bugs carry real cost. A cancelled action should mean that action stopped, not that another page lost its connection or inherited the wrong file chooser state.
For users, the fix should show up as fewer unexplained browser failures during multi-tab work. For plugin authors and automation-heavy agents, it clarifies a deeper contract: cancellation belongs to the page operation that received it, not to a shared global queue or a whole browser connection.
That distinction is especially important when an agent is inspecting one tab, filling another, and waiting for a third to navigate. The browser is shared, but the action ownership needs to stay local.
Verification
The PR reports before-and-after proof using actual Playwright 1.62.1, Chromium 151.0.7922.34, native CDP operations, and independent observation tabs.
The old execution failed in three concrete ways:
- Cancelling tab A's blocked click caused tab B's click to fail with a closed CDP socket
- Cancelling a blocked fill still allowed text to appear after the input became editable
- Starting uploads on two tabs let the second upload supersede the first
After the fix, tab A cancels while tab B clicks successfully, cancelled fill text stays out of the input, and both tabs receive their intended files. The PR reports a net reduction of 133 production lines, so this is both a behavior repair and a simplification of the adapter.
PR #136465 · merged September 2, 2026 · source: OpenClaw GitHub