DEV Community

Tang Weigang
Tang Weigang

Posted on

Browser Agents Need Receipts, Not Just Clicks: A Practical Read of browser-use

I do not think the interesting part of browser-use is that it can click through a web page. A script can click. A Playwright test can click. The harder question is whether an AI-driven browser workflow can explain what it saw, why it acted, and why it believes the job is done.

That distinction matters if you plan to bring browser automation into Claude Code, Codex, Cursor, or your own AI host. The first useful run should not be "log into a real admin account and publish something." It should be a small contract test for observation, permissions, recovery, and evidence.

The core abstraction is a loop

The browser-use project is built around an iterative agent loop:

  1. observe the browser state;
  2. convert the page into a model-readable representation;
  3. let the LLM choose the next action;
  4. execute browser actions such as navigation, click, input, extraction, screenshot, tab switching, or file operations;
  5. record history and repeat.

That is why the project surface is broader than a simple "browser driver." The Doramagic project manual maps out several important layers: Agent, BrowserSession, watchdogs, DOM markdown extraction, action tools, system prompt variants, AgentHistoryList, judge LLM support, message compaction, low-level Actor APIs, provider adapters, and CLI 2.0.

The practical question is not whether the agent can perform one impressive demo. The question is whether every step leaves enough state to debug a failure:

  • What URL and tab was active?
  • Which interactive element did the model target?
  • Did the page actually change after the action?
  • Was the final result judged or asserted?
  • Are screenshots, history, or a replayable GIF available?

Without those receipts, a browser agent is just a faster remote mouse.

CLI 2.0 is useful, but it raises the cost of unclear permissions

browser-use CLI 2.0 moves toward direct Chrome DevTools Protocol control through a persistent daemon. That is attractive for AI coding hosts because it avoids repeated browser startup and can make browser commands feel much closer to an always-on local capability.

But faster control also makes permission mistakes faster.

For a first run, I would keep the permission surface narrow:

  • public pages only;
  • temporary browser profile;
  • no production credentials;
  • no primary Chrome profile;
  • no real payments, ads, cloud consoles, or admin settings;
  • write access only inside a temporary working directory.

The project has been tightening security around this surface. Recent release notes called out owner-only daemon sockets and refusal of evaluate() on restricted browser profiles. Those are not small implementation details. They are reminders that the browser control channel itself is a security boundary.

If your workflow cannot say which domains, profiles, file paths, and actions are allowed, it is not ready for a browser agent.

The first failures are often configuration failures

The usual story is "the model failed." In browser automation, that is often the least useful diagnosis.

The browser-use manual and pitfall log point to more concrete failure classes:

  • model import paths can drift across docs and package versions;
  • Azure OpenAI can false-positive normal login/navigation prompts as policy violations;
  • local models can return empty content that fails structured output parsing;
  • hover-only UI has a dedicated action gap;
  • optional dependencies such as litellm are deliberately outside the core install after supply-chain concerns;
  • real browser profile reuse can create powerful but risky account-state coupling.

Before asking the agent to do useful work, I want these facts written down:

  • LLM provider and model;
  • whether a judge LLM is used;
  • timeout values for steps and model calls;
  • planning and loop detection settings;
  • message compaction behavior;
  • whether screenshots are captured;
  • whether downloads and file reads are allowed;
  • whether custom tools are registered;
  • where the history file is saved.

This is not bureaucracy. It is the difference between a repeatable automation workflow and a one-off lucky run.

A three-stage adoption path

For a practical first adoption, I would use three stages.

Stage 1: read-only browsing.

Open a public page, extract the title, identify key links, and summarize the page. The pass condition is not "nice summary." The pass condition is evidence:

  • the page loaded;
  • the active URL was recorded;
  • interactive elements were distinguished from static text;
  • a failed extraction can be traced to network, DOM, model output, or tool execution.

Stage 2: low-risk interaction.

Use a test page or throwaway account to fill fields, switch tabs, handle popups, and wait for dynamic content. The pass condition:

  • the agent names the target element before clicking;
  • the agent checks page state after clicking;
  • repeated clicks are avoided;
  • banners, dialogs, and slow loading are handled without turning into loops.

Stage 3: gated writes.

Only after the first two stages should the agent touch drafts, settings previews, or internal tools. Even then, final submit buttons should be gated:

  • stop before irreversible action;
  • summarize exactly what will change;
  • show screenshot or DOM evidence;
  • ask for human confirmation where the account or data is real.

This is where browser-use becomes much more useful than a demo. It can be part of a safe operating loop if the loop has stop rules.

Where Doramagic helps

Doramagic is not a replacement for the upstream browser-use docs. The value is that the project page and manual package the project into an AI-host-friendly context:

  • what the project is for;
  • which components matter for a first run;
  • where installation and configuration risks appear;
  • what permission boundaries should be held;
  • what should not be claimed unless it has been verified.

That context is useful before giving an AI coding host access to the repository. Instead of asking the host to infer everything from a README, you can ask it to load the manual and answer operational questions first:

  • What is the least-privilege first run?
  • Which actions require human confirmation?
  • Which claims require a real local install log?
  • Which provider or profile choices change the risk level?
  • What evidence should be saved after the run?

The simple rule I would use is this: do not adopt a browser agent workflow unless it can leave receipts.

Doramagic browser-use project page:
https://doramagic.ai/en/projects/browser-use/

Doramagic browser-use manual:
https://doramagic.ai/en/projects/browser-use/manual/

Top comments (0)