# Browser Use capability and public-issue audit — 2026-09-24

**Goal:** Tablaze should support the useful Browser Use workflows without a large efficiency penalty, then improve on verified friction. This is a staged gap register, not a parity or superiority claim. The [comparison contract](https://github.com/SweetDianDian/tablaze/blob/main/docs/BROWSER_USE_COMPARISON.md) and [variant audit](https://github.com/SweetDianDian/tablaze/blob/main/docs/BROWSER_USE_VARIANTS.md) remain the acceptance criteria. The first four new matched tasks and their source pin are in the [2026-09-24 report](CODEX_CURRENT_FOUR_SMOKE.md).

## What the current official product exposes

The [Browser Use browser reference](https://docs.browser-use.com/open-source/customize/browser/all-parameters) lists local and CDP browsers, domain rules, proxy and permissions, profiles/storage, cross-origin frames, viewport/device emulation, downloads, video, HAR and traces. The [Agent reference](https://docs.browser-use.com/open-source/customize/agent/all-parameters) covers vision, model fallback/extraction, custom actions, initial actions, secret/file handling, history, timeouts and cost controls. Its [repository](https://github.com/browser-use/browser-use) also points to distinct CLI/Harness/Pi/cloud paths. These are distinct product surfaces; passing a Python-Agent fixture does not imply parity with their managed or programmable variants.

| Track | Current Tablaze state | Important remaining gap / acceptance |
| --- | --- | --- |
| Core browsing and visual tasks | Isolated Chrome, CDP attachment, owned tabs/popups, frames, form actions, screenshots, files, navigation, bounded DOM observation and verification are implemented. A [four-task, two-seed comparison](CODEX_MIXED_FOUR_20260924.md) passed 8/8 per side. First canvas observations include a usable image; a [fresh four-pair canvas run](CODEX_CANVAS_INITIAL_VISION_SMOKE.md) passed 4/4 Tablaze versus 3/4 Browser Use, with one Browser Use duplicate write. A [new six-pair surface run](CODEX_NEW_SURFACE_20260924.md) passed 6/6 Tablaze and 4/6 Browser Use, but the latter's two network attempts hit Codex transport failures. | Add repeated held-out tasks with matched model settings, independent business judges, browser versions and per-phase timing. The new four jointly successful popup/iframe pairs still had a slower Tablaze Agent-done median, and the network failures cannot be attributed to Browser Use itself. |
| Browser configuration | Dedicated profile, storage state, exact-origin document policy, opt-in network response journal and [trusted viewport/window/screen/DPI/user-agent/locale/time-zone/mobile/touch/permission/proxy settings](BROWSER_CONFIGURATION.md) exist. Chromium mobile presets set six matching emulation properties in one option. Real Chrome has independently tested fixed versus natural viewport, headed window size and OS-clamped position, HTTP proxying, 407 Basic auth, a non-loopback bypass route, a SOCKS5 HTTP route and CLI stdio MCP with an env-backed authenticated HTTP proxy. | HTTPS CONNECT/authenticated HTTPS proxy and external proxy providers remain untested; broad launch settings and an explicit cross-origin frame access policy remain. Device emulation is not a full fingerprint. Current document policy is not a network firewall. |
| Artifacts and observability | Downloads/PDFs, bounded response metadata, optional [real WebM per owned tab](RECORDING.md), and opt-in [HAR and Playwright trace files](DIAGNOSTICS.md) exist. HAR now supports omit/embed/attach content and full/minimal detail modes; real Chrome checks final files, attachments, hashes and private permissions. No fake cursor is added. | Automatic redaction, retention management and live trace viewing are missing. Video has no audio. These artifacts cannot attach to external CDP or persistent profiles. A task-level Browser Use comparison for diagnostic overhead remains. |
| Agent and extension workflows | Codex, Anthropic, Ollama and compatible HTTP adapters; schema output, checked partials, pause/steer, typed custom tools, secret aliases, bounded retries, explicit sticky backup-model switching, checkpoints and explicit unknown-write reconciliation are implemented. A separately selected model can extract from supplied text through the SDK/CLI and now from the live Agent browser page with Schema and exact-quote checks. CLI Agent/MCP uploads now default to an explicit trusted-file list; same-session downloads have short reusable IDs. | Live validation of non-Codex providers, backup/extraction model quality across varied tasks, long-task cost/latency, external state-file import under restriction, full tool ecosystem and resumed authenticated tasks remains. A quote does not prove semantic support or task completeness. |
| Harness, Pi and cloud | Some native Codex/MCP and CLI-MCP tasks have visible matched evidence in [variant audit](https://github.com/SweetDianDian/tablaze/blob/main/docs/BROWSER_USE_VARIANTS.md). | No full Pi/JS-Harness/hosted-Agent comparison. Tablaze does not offer Browser Use's managed browser provisioning, stealth/proxy/CAPTCHA service, hosted API, live preview or persistent JS/CDP worker. These are separate build and measurement tracks, not features credited by Python-Agent tests. |

## Publicly reported friction and Tablaze response

An open issue is a **report**, not proof that every current Browser Use release still has the defect or that Tablaze is generally better. We use reproducible behavior and our own tests before marking an optimization complete.

| Upstream report | Evidence class | Tablaze response / next check |
| --- | --- | --- |
| [#5795: redacted password input loses filled state](https://github.com/browser-use/browser-use/issues/5795) | Public issue, opened 2026-09-14. | Tablaze now reports only `value_filled: boolean` alongside `value_redacted`, without the password. A real-Chrome test covers empty and non-empty fields, a later fill, diff observation and absence of raw values. This closes the same *local observation* gap; no Browser Use side-by-side defect run was performed. |
| [#5727: disabled select loses live selection](https://github.com/browser-use/browser-use/issues/5727) | Public no-model reproduction against an upstream revision, not a current universal claim. | Tablaze's existing snapshot reports a disabled select's live value and selected option label. The same real-Chrome test now locks in implicit first-option selection. The control remains disabled. Test later JavaScript selection changes and occlusion separately. |
| [#5725: skipped batch actions counted as a loop](https://github.com/browser-use/browser-use/issues/5725) | Public source/repro report; no current Browser Use rerun is claimed. | Tablaze's deterministic Agent regression proposes the same later write five times, skips it after each replan, records zero dispatched writes and zero false stall warnings. This verifies Tablaze's own execution accounting for that case. |
| [#5796: readonly input backed by a native listbox](https://github.com/browser-use/browser-use/issues/5796) | Public issue report plus a [three-seed matched Agent task](CODEX_READONLY_LISTBOX_20260924.md). Browser Use passed two seeds; the third encountered a Codex transport cancellation. Its reported specialized `select_dropdown` defect was not reproduced by this Agent-level task. | Tablaze exposes options only for an explicit, unique `aria-controls` / `aria-owns` same-root relationship and lets the existing `select` action click the opener and option. Real Chrome checks both relationships and rejects unlinked, ambiguous and disabled cases before input. The matched task passed Tablaze 3/3 with one callback/write each, but does not establish a Browser Use capability gap or cross-product speed lead. Cross-root associations and other custom listboxes remain open. |
| [#5747: long-task DOM/history overhead](https://github.com/browser-use/browser-use/issues/5747) | Public performance analysis with suggested mechanisms, not a measured cross-product speed result. | Tablaze now proactively compacts Agent history at 256 KiB. A [200-step local fixture](AGENT_LONG_HISTORY_20260924.md) reduced final planner-input JSON bytes 73.4% and no-model executor wall time 66.0% versus full-history mode, with the same 199 reads. It still scans DOM for fresh snapshots. This is not a Browser Use comparison; measure real-model tokens, Chrome latency and independently judged outcomes next. |

## Stage gates

1. **Completed source stage:** real video, four-task paired smoke, raw traces and website evidence. The clean pre-video source passed four tasks each; the later video code passed 476/476 Node 24 + Chrome regressions. GitHub/site publication status must be checked separately.
2. **Completed source stage:** expose redacted filled state and retain visible disabled-select selection, with a real-browser regression. The full Node 24 + Chrome suite passed 477/477. This is a narrow form-observation improvement, not a whole-product parity milestone; GitHub/site publication is tracked separately.
3. **Completed browser configuration source stage:** custom viewport, pixel ratio and granted permissions were implemented for owned contexts and tested through SDK/CLI with real Chrome; the full Node 24 + Chrome suite passed 480/480. A later stage adds screen, user agent, locale, time zone, mobile viewport behavior and touch with a focused real-Chrome page check. Cohesive device presets remain. GitHub/site publication is checked separately.
4. **Completed proxy source stage:** owned contexts accept operator-supplied proxy settings and a local real-Chrome fixture proves HTTP traffic reaches the proxy; the full Node 24 + Chrome suite passed 481/481. A later [browser configuration validation](BROWSER_CONFIGURATION.md) adds independent real-Chrome 407 auth, bypass and SOCKS5 route witnesses. HTTPS CONNECT, external providers and CLI-to-browser routing remain. GitHub/site publication is checked separately.
5. **Completed diagnostic source stage:** isolated owned contexts can export private HAR metadata and Playwright trace files; actual Chrome files, omitted HAR response bodies, close/dispose results, digests and CLI/MCP paths passed the 489-test Node 24 + Chrome suite. Automatic redaction, retention and live trace viewing remain unimplemented.
6. **Efficiency stage:** repeat a frozen broader suite across Python Agent and relevant MCP/Harness/Pi/hosted tracks, preserving failures, default judging, full-run return and uncertainty. Use a provisional acceptance target of no worse than 1.25× Browser Use median and p95 end-to-end latency on jointly completed tasks, while reporting task success separately and requiring uncertainty intervals that rule out a material regression. Revisit that product threshold before a release claim. Four single attempts do not satisfy this gate.
7. **Popup and skipped-action reliability stage:** snapshot entries now mark observed `target="_blank"` links with `opens_new_tab: true`. In default stay mode, only a click on such a link waits up to the existing 250 ms popup window for owned-tab registration; `follow-single` still selects a unique popup and stops old-ref actions. A previously failing real-Chrome popup ownership test, the full popup-policy suite and the queued-call stall regression pass. The [complete Node 24 + Chrome log](evidence/development-tests-loop-popup-node24.txt) records **491/491** passed tests (SHA-256 `8069bf28bf680ac14459b7d1a68b2e7d9623c3b0e1b876b4568674990430d281`). This does not measure real-model popup task success or long-task speed.
8. **Visual first-observation source stage:** when a main-frame snapshot sees an in-viewport canvas and no actionable controls, `tab_open` sends a real JPEG image and coordinate metadata in the same MCP result. An independent fixture judge accepts a coordinate click from that frame; ordinary forms do not get an automatic image, and cancellation during capture cleans the new session without closing a sibling. The [complete Node 24 + Chrome log](evidence/development-tests-initial-vision-node24.txt) records **493/493** passed tests (SHA-256 `defade8114f6f4c64d4a2f907f7bbef8e29ae3d56b650514965eb8dbf839cc01`). Paired model outcomes are reported in the next stage.
9. **Visual model follow-up:** the [four-pair Codex report](CODEX_CANVAS_INITIAL_VISION_SMOKE.md) records Tablaze 4/4 and Browser Use 3/4 independent business passes. Each Tablaze trace consumed an initial `tab_open` image with no separate `tab_capture`, three planning calls and one correct write. Browser Use seed 57 made two writes despite Agent-reported success. The three jointly successful seeds had 41.552 versus 61.113 s median whole-run and 41.401 versus 42.578 s Agent-done time; its default judge counts only in the former. This visible synthetic task does not settle cross-task or production parity.
10. **Long-history source stage:** [five paired-mode local runs](AGENT_LONG_HISTORY_20260924.md) measured a deterministic 200-step read-only task. Default proactive compaction reduced cumulative planner-input JSON bytes 69.4% and local no-model wall time 66.0% compared with full history. Verification evidence, checkpoint parsing and operator steering have focused regressions; the full Node 24 + Chrome suite passed 495/495. This is an executor microbenchmark, not a measured Browser Use or real-model performance result.
11. **Proxy-route validation stage:** real Chrome and independent local servers verified HTTP Basic proxy authentication after a 407 challenge, non-loopback bypass versus proxy routing, and a SOCKS5 HTTP page with the target hostname visible to the proxy. The [complete Node 24 + Chrome log](evidence/development-tests-proxy-routes-node24.txt) records **498/498** passing tests. This validates the owned-context SDK path, not HTTPS CONNECT, external proxy providers or CLI-to-browser routing.
12. **CLI proxy follow-up:** stdio MCP launched by the actual CLI uses an env-backed proxy password, answers a 407 challenge and opens the synthetic HTTP target through the proxy. The MCP result and stderr omit the test credential. The [complete Node 24 + Chrome log](evidence/development-tests-proxy-cli-node24.txt) records **499/499** passing tests. HTTPS CONNECT and external providers remain unverified.
13. **Mobile preset convenience stage:** `pixel-7` and `pixel-7-pro` resolve pinned Chromium descriptors into viewport, screen, scale, UA, mobile and touch settings. Manual conflicts and external CDP are rejected. Real-Chrome SDK and CLI MCP page checks validate the Pixel 7 effective properties; doctor reports both presets' effective dimensions. The [complete Node 24 + Chrome log](evidence/development-tests-device-presets-node24.txt) records **501/501** passed tests. This is an ergonomics improvement, not a full device fingerprint or proof of broader task efficiency.
14. **HAR content-mode stage:** trusted SDK/CLI options expose omit/embed/attach response content and full/minimal detail while preserving omit/full defaults. Real Chrome verifies an embedded body and a ZIP HAR manifest with a separate response attachment; the CLI/MCP result reports only artifact metadata. The [complete Node 24 + Chrome log](evidence/development-tests-har-modes-node24.txt) records **503/503** passed tests. Sensitive response data is deliberately retained only when explicitly requested; automatic redaction and retention management remain missing.
15. **New-surface matched evidence stage:** clean commit `4349629` ran two seeds each of popup approval, child-iframe form and authenticated network receipt under the pinned Codex/Browser Use harness. Tablaze passed 6/6; Browser Use passed popup/iframe 4/4, while both network runs were interrupted by `CODEX_TURN_FAILED` and missing inference usage. The [full report and all twelve traces](CODEX_NEW_SURFACE_20260924.md) preserve those failures. On four jointly successful pairs, whole-run medians were 61.767 versus 68.933 s, but Agent-done medians were 61.618 versus 52.660 s. This stage adds evidence, not a general performance or parity claim.
16. **Explicit native-listbox interaction stage:** a visible readonly text-like input linked to one same-root native listbox through `aria-controls` or `aria-owns` now exposes bounded options and accepts the existing `select` action. The action clicks the page's opener and option, checks the selected option and field update, and waits briefly for an asynchronous callback. Real Chrome verifies both relationships, one callback each, rejection before input of unlinked, ambiguous and disabled options, and an actual MCP `tab_act` call with same-call post-checks. The [complete Node 24 + Chrome log](evidence/development-tests-associated-listbox-node24.txt) records **507/507** passing tests (SHA-256 `52da0148f5cb14d0334dc3b8d8567075690edfef7acffa28de690b44a6f2f53d`). This is a narrow capability addition, not a measured model or cross-product efficiency result.
17. **Read-only listbox matched development stage:** frozen commit `386e7de` added the 17th comparison task; the model-free two-order preflight and 7/7 comparison harness tests passed. The [three-seed Codex report](CODEX_READONLY_LISTBOX_20260924.md) records Tablaze 3/3 and Browser Use 2/3 independent business success. Browser Use's failed attempt lost a Codex inference call, so it is not a verified Browser Use browser defect. On two jointly successful seeds, whole-run medians were 59.595 versus 73.495 s, but Agent-done medians were 59.442 versus 53.357 s. Browser Use's default judge contributes to its whole-run time. The six raw traces remain linked from the report. This visible, single-task sample does not satisfy the broader efficiency or parity gate.
18. **Desktop window configuration stage:** trusted SDK/CLI options now permit an unfixed viewport and, for headed owned Chrome, requested window size and position. Real Chrome validates content dimensions, actual 980×700 outer dimensions, OS-clamped offscreen position, a persistent owned profile and the CLI MCP path; `doctor` reports requested values without pretending to launch. The [complete Node 24 + Chrome log](evidence/development-tests-window-geometry-node24.txt) records **511/511** passed tests (SHA-256 `53edf821926eaaf0788a2e4c24c694977cdc3a7d4aa0ad71fd67dd7850d496bb`). This closes the window-geometry configuration gap in the local owned-browser path, but does not establish hosted-browser parity or task-level efficiency.
19. **Backup-model recovery stage:** the CLI can configure a second provider/model and bounded primary-model retries. It switches on transient failures, including a failed Codex turn, and can switch immediately on HTTP 401/402 without repeating the same credential; a 403 stays terminal. The backup remains active for later decisions in this run. A real-Chrome fixture accepted **1/1** browser write after the primary planner failed, with one server-side submission, passing verification and no replay. The [complete Node 24 + Chrome log](evidence/development-tests-model-fallback-node24.txt) records **515/515** passed tests (SHA-256 `ee73651e54bb07ee6a4d2495fcc93074a8a3b6f20baf3a37ca2c2ff4ea639f97`). These scripted planner fixtures validate recovery control flow, not real-model availability, fallback quality, cost, matched Browser Use speed or overall parity.
20. **Separate model extraction stage:** `extractWithPlanner` and `tablaze-extract` accept an explicitly chosen Codex, Anthropic, Ollama or compatible model for supplied bounded text. Model output must be one submission, pass draft-07 Schema and cite exact source quotes for every populated leaf; local `$ref` remains valid after nesting into the model tool schema. A real-Chrome source plus scripted model passed, and [one actual Codex extraction](MODEL_EXTRACTION_20260924.md) produced the required Lisbon record with **1/1** valid result in **14.757 s** model latency and **9,377 input / 86 output tokens**. The [complete Node 24 + Chrome log](evidence/development-tests-model-extraction-node24.txt) records **521/521** passed tests (SHA-256 `d8b1d156918c1de5f870aef941ea4fdb3cb75b4c4e839aa1f9d5155ad78e2501`). `npm pack --dry-run` includes both new runtime files. The model was tested on one synthetic source, not a matched Browser Use run; semantic accuracy, task-level efficiency and Agent integration remain open.
21. **Agent-integrated extraction stage:** `tablaze run --extraction-model` exposes `tab_extract_model` to the task planner. The tool obtains source text and URL from the current browser frame, rejects truncated/empty or changed observations, calls an independent extraction planner, validates draft-07 output and exact quotes, and reports its usage separately. A scripted real-Chrome Agent test and a spawned CLI test exercise the complete flow through page verification. The [complete Node 24 + Chrome log](evidence/development-tests-agent-extraction-node24.txt) records **524/524** passed tests (SHA-256 `4f3f842af971b4ad679efdb04d23f30686c1fdfcbb3e6d8d7c6527613338c764`). This is a functionality check, not a live-model quality or matched Browser Use efficiency result; broader tests and business acceptance policies remain open.
22. **Trusted-file Agent/MCP stage:** the model-facing CLI defaults to no host-file uploads; trusted operators can pass exact `--available-file` paths, which snapshots show as short IDs without full paths. Completed downloads can be reused only inside their owning session. Upload denial happens before browser input, substituted files fail identity checks, and a configured policy restricts `tab_open.storage_state` to this engine's exports. File-policy hashes bind checkpoint restoration. [Real-Chrome and spawned CLI tests](FILE_POLICY.md) cover these cases. The [full Node 24 + Chrome log](evidence/development-tests-file-policy-node24.txt) records **529/529** passed tests (SHA-256 `3f68f2170fa9f9799cc9100c4adff15cccbe9cbb91c31df2ed863835932e37c0`). SDK omission retains earlier explicit-path behavior for trusted programmatic callers. The CLI cannot yet import a pre-existing external state file into a restricted run. This closes a specific local file-access gap, not a matched Browser Use task or overall security claim.

The [four-task, two-seed Codex development follow-up](CODEX_MIXED_FOUR_20260924.md) used clean commit `1fb865c`: both sides passed 8/8 with one correct write per attempt and zero duplicates. Tablaze's pooled visible median whole-run time was 56.331 s versus Browser Use's 61.211 s, but Agent-done time was 56.177 versus 44.063 s. Browser Use's default judge ran after Agent completion and is included only in whole-run time. Tablaze's Agent was slower in six of eight pairs, and its full run was slower for interrupted-response order seed 52. Two seeds per visible task cannot settle the 1.25× median/p95 stage gate, overall parity or superiority.

The current iframe sample is **83.799 / 52.515 = 1.60×** as long for Tablaze, even with Browser Use's default judge included in its denominator. That single run does not estimate a median or p95, but it is a concrete failure candidate against the provisional 1.25× target. The trace points first to child-frame readiness and an unnecessary text check for an input value. Optimize these mechanisms, then rerun paired tasks with frozen source and more seeds; do not hide this slower case in a pooled average.

The first mechanism fix now waits at most 800 ms for up to five child frames whose URL is initially empty or `about:blank` to navigate before the initial snapshot. A real-Chrome regression proves a delayed frame's URL is listed immediately after `tab_open`; the full suite passed 482/482. The [three-pair post-fix Codex study](CODEX_IFRAME_READINESS_SMOKE.md) confirms all three first results listed the child frame, yet Tablaze's median whole-run time was 79.699 s versus Browser Use's 56.040 s. Two runs incurred extra planning rounds after checking an input value as page text. Efficiency is **not established as close**; the study is a visible development sample, not a held-out or statistical result.

A newer first-snapshot selection change targets the remaining `tab_open` → `tab_snapshot` round: when the main page has no actionable controls and exactly one visible child frame has a form field, `tab_open` now returns actionable child refs directly with bounded parent text. A real-Chrome test fills and submits from that first result and checks conservative fallbacks. In the [six-pair matched Codex follow-up](CODEX_IFRAME_DIRECT_OPEN_SMOKE.md), both sides passed 6/6 with one correct write each and no duplicates. All six Tablaze traces skipped the separate frame snapshot; five used two model calls, while one bad input-as-text check led to a third call. Tablaze's visible median whole-run time was 34.128 s versus Browser Use's 57.526 s, and Agent-done time was 33.973 versus 39.778 s. Browser Use's default judge is included in whole-run time. This one synthetic task does not establish stable performance or overall parity.

A subsequent MCP feedback change keeps the operated child frame in the `tab_act` snapshot when a post-check fails. A real-Chrome test reproduces the redundant `Vega` page-text check and confirms the returned snapshot already contains the child form and saved status, so the model need not call `tab_snapshot` just to regain that frame. It does not assume the failed check passed or retry the write. The full suite passed 483/483. In a [fresh three-pair Codex development comparison](CODEX_IFRAME_FEEDBACK_SMOKE.md), both sides passed 3/3 with one write each and zero duplicates. Tablaze's median whole-run time was 46.037 s versus Browser Use's 56.132 s, but observed Agent-done time was 45.880 s versus 39.114 s. Browser Use's default judge is included only in the former. None of these three Tablaze runs triggered the failed-check path, so the timing difference cannot be attributed to this feedback fix or used to claim general efficiency parity.

Potential Tablaze-specific conveniences include checked partial extraction, explicit write receipts/reconciliation, private run videos and pause/steer controls. Each must be validated in actual use; feature presence alone is not user benefit or superiority.
