<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Chrome on KnightLi Blog</title>
        <link>https://knightli.com/en/tags/chrome/</link>
        <description>Recent content in Chrome on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sun, 24 May 2026 23:43:35 +0800</lastBuildDate><atom:link href="https://knightli.com/en/tags/chrome/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>How browser-harness domain skills keep AI agents from repeating browser automation mistakes</title>
        <link>https://knightli.com/en/2026/05/24/browser-harness-domain-skills-summary/</link>
        <pubDate>Sun, 24 May 2026 23:43:35 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/24/browser-harness-domain-skills-summary/</guid>
        <description>&lt;p&gt;The most interesting part of &lt;code&gt;browser-use/browser-harness&lt;/code&gt; is not only that it lets AI agents control real Chrome. It also turns web-operation experience into reusable &lt;code&gt;domain skills&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That matters because browser automation is rarely difficult only because of clicking buttons. Each website has its own details:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which pages require login.&lt;/li&gt;
&lt;li&gt;Which data can be fetched directly through an API.&lt;/li&gt;
&lt;li&gt;Which buttons do not respond to normal DOM clicks.&lt;/li&gt;
&lt;li&gt;Which iframes, shadow DOM components, or popups block the flow.&lt;/li&gt;
&lt;li&gt;Which selectors are stable and which are temporary classes.&lt;/li&gt;
&lt;li&gt;Which actions involve accounts, payments, or irreversible changes and require human confirmation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If this experience only stays in one task log, the agent will hit the same problems again next time. &lt;code&gt;domain skills&lt;/code&gt; are meant to preserve that experience so the agent does not start from zero every time it opens a site.&lt;/p&gt;
&lt;h2 id=&#34;what-domain-skills-are&#34;&gt;What domain skills are
&lt;/h2&gt;&lt;p&gt;You can think of &lt;code&gt;domain skills&lt;/code&gt; as site-operation manuals for agents.&lt;/p&gt;
&lt;p&gt;They are not ordinary user documentation, and they are not one-off scripts. They are closer to field-tested site knowledge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether the site is suitable for browser automation.&lt;/li&gt;
&lt;li&gt;Which API should be used first if an API exists.&lt;/li&gt;
&lt;li&gt;Which URL should be used when the browser is necessary.&lt;/li&gt;
&lt;li&gt;Which DOM structures, aria-labels, and button behaviors have been verified.&lt;/li&gt;
&lt;li&gt;Which common approaches fail.&lt;/li&gt;
&lt;li&gt;Which scenarios should stop and ask for human intervention.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This content can be reviewed by humans and read by agents during tasks. It turns on-the-spot exploration into maintainable experience.&lt;/p&gt;
&lt;h2 id=&#34;they-are-not-about-blind-clicking&#34;&gt;They are not about blind clicking
&lt;/h2&gt;&lt;p&gt;A good browser agent should not turn every problem into opening a webpage, looking at screenshots, and clicking buttons.&lt;/p&gt;
&lt;p&gt;One important kind of experience in &lt;code&gt;domain skills&lt;/code&gt; tells the agent when not to use the browser.&lt;/p&gt;
&lt;p&gt;For sites such as ArXiv, paper search, metadata, and abstracts can be fetched directly through the Atom API or HTML meta tags. HTTP requests are usually faster, more stable, and easier to parse than opening a browser.&lt;/p&gt;
&lt;p&gt;GitHub follows a similar pattern. Repository, user, and release data should use the REST API first. File contents should use &lt;code&gt;raw.githubusercontent.com&lt;/code&gt; first. Only pages such as GitHub Trending, which do not have an equivalent API, need browser interaction.&lt;/p&gt;
&lt;p&gt;This shows that browser-harness is not based on “the browser solves everything.” It puts the browser in the right place: when APIs, HTTP, and static pages cannot solve the problem, let the agent operate a real page.&lt;/p&gt;
&lt;h2 id=&#34;they-store-site-level-knowledge&#34;&gt;They store site-level knowledge
&lt;/h2&gt;&lt;p&gt;Traditional automation scripts are usually written around one task, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Open page -&amp;gt; enter keyword -&amp;gt; click button -&amp;gt; download file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;That script may complete the task, but the experience is scattered inside code. When the site changes, the script may fail. When the task changes, much of the experience may not be reusable.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; are closer to a site-level knowledge base. They care about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which container selector is stable in Amazon search results.&lt;/li&gt;
&lt;li&gt;Which GitHub data should go through the REST API.&lt;/li&gt;
&lt;li&gt;How LinkedIn invitation buttons differ in &lt;code&gt;aria-label&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Which Shopify Admin pages are embedded apps.&lt;/li&gt;
&lt;li&gt;Why Shopify Polaris inputs cannot always be filled with normal JS &lt;code&gt;value&lt;/code&gt; assignment.&lt;/li&gt;
&lt;li&gt;How Browser Use Cloud browser instances are created, listed, and cleaned up.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are not steps for one task. They are decision-making knowledge that many future tasks can reuse.&lt;/p&gt;
&lt;h2 id=&#34;example-amazon-product-search&#34;&gt;Example: Amazon product search
&lt;/h2&gt;&lt;p&gt;For Amazon product search, the important part is not only how to search, but which path is more stable.&lt;/p&gt;
&lt;p&gt;A more reliable approach is to use a direct search URL instead of opening the homepage and simulating typing every time. Search results can be extracted from a container such as &lt;code&gt;[data-component-type=&amp;quot;s-search-result&amp;quot;]&lt;/code&gt;. Field extraction also has details: title, price, rating, review count, and sponsored status each have more stable DOM sources.&lt;/p&gt;
&lt;p&gt;This kind of experience is valuable for an agent. Without it, the agent may guess buttons from screenshots and repeatedly try selectors. With it, the agent can go directly to a more stable extraction path.&lt;/p&gt;
&lt;p&gt;More importantly, a skill can record traps. For example, some selectors that look usable may misread sponsored results or cross-sell areas. You only learn that from field testing.&lt;/p&gt;
&lt;h2 id=&#34;example-linkedin-invitation-management&#34;&gt;Example: LinkedIn invitation management
&lt;/h2&gt;&lt;p&gt;LinkedIn is closer to a real account workflow, and the risk is higher.&lt;/p&gt;
&lt;p&gt;On the invitation manager page, the Accept and Ignore buttons use different &lt;code&gt;aria-label&lt;/code&gt; formats. You cannot simply derive one from the other. Some invitation cards even render Accept as an &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; element rather than a &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt;, and ordinary CDP clicks may not trigger the accept action.&lt;/p&gt;
&lt;p&gt;This shows that real web automation does not end when an element is located. Button labels, event binding, soft navigation, and component implementation all affect whether an action really works.&lt;/p&gt;
&lt;p&gt;For an agent, this experience also has a safety meaning. Operations involving social accounts, invitations, messages, and posting should not be fully delegated. A skill can record the path and traps, but accepting invitations in bulk, sending content externally, or changing account details should keep human confirmation.&lt;/p&gt;
&lt;h2 id=&#34;example-shopify-admin&#34;&gt;Example: Shopify Admin
&lt;/h2&gt;&lt;p&gt;Shopify Admin shows another issue: backend systems are often not one page, but a combination of embedded apps and complex components.&lt;/p&gt;
&lt;p&gt;Many Shopify apps run inside iframes. Polaris React inputs, Web Components, and embedded apps all behave differently. Some inputs cannot be filled with &lt;code&gt;element.value = ...&lt;/code&gt;; they need CDP keystrokes that are closer to real keyboard input.&lt;/p&gt;
&lt;p&gt;The value of this kind of skill is that it lets the agent first identify what kind of UI it is looking at, then choose the right operation method.&lt;/p&gt;
&lt;p&gt;Shopify experience also emphasizes “do not use the browser if you do not have to”:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For read-only product and inventory data, use the Storefront API first.&lt;/li&gt;
&lt;li&gt;If an Admin API token exists, use the Admin API first.&lt;/li&gt;
&lt;li&gt;For theme code editing, use Shopify CLI first.&lt;/li&gt;
&lt;li&gt;Use the browser only when there is no API, the change is rare, or you are exploring the admin.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is a mature tool-selection logic for agents.&lt;/p&gt;
&lt;h2 id=&#34;example-browser-use-cloud&#34;&gt;Example: Browser Use Cloud
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; do not only serve webpage clicking. They can also record API experience around browser runtimes.&lt;/p&gt;
&lt;p&gt;Browser Use Cloud experience can record how to create cloud browsers through REST APIs, list running browsers, clean up zombie browsers, and obtain &lt;code&gt;liveUrl&lt;/code&gt; and &lt;code&gt;cdpUrl&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This means a skill is not limited to “how to click a button.” Any recurring task with a stable method can become a skill:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API call patterns.&lt;/li&gt;
&lt;li&gt;Authentication header format.&lt;/li&gt;
&lt;li&gt;Request and response structure.&lt;/li&gt;
&lt;li&gt;Verified status codes.&lt;/li&gt;
&lt;li&gt;Common failure modes.&lt;/li&gt;
&lt;li&gt;Resource cleanup and recycling methods.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For agents, all of these are reusable capabilities.&lt;/p&gt;
&lt;h2 id=&#34;why-this-is-more-reliable-than-ad-hoc-reasoning&#34;&gt;Why this is more reliable than ad-hoc reasoning
&lt;/h2&gt;&lt;p&gt;Many people expect a large model to understand the webpage by itself every time. In real tasks, relying only on ad-hoc reasoning is unstable.&lt;/p&gt;
&lt;p&gt;The reasons are simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web UI changes often.&lt;/li&gt;
&lt;li&gt;The same button may have multiple implementations.&lt;/li&gt;
&lt;li&gt;Visible does not mean clickable.&lt;/li&gt;
&lt;li&gt;Clickable does not mean the action really worked.&lt;/li&gt;
&lt;li&gt;Some tasks should use APIs instead of browsers.&lt;/li&gt;
&lt;li&gt;Some operations require human confirmation and should not be decided by the model alone.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Writing these experiences into files brings several benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Humans can review them.&lt;/li&gt;
&lt;li&gt;Wrong experience can be corrected.&lt;/li&gt;
&lt;li&gt;Site knowledge can accumulate over time.&lt;/li&gt;
&lt;li&gt;New agents can inherit old experience.&lt;/li&gt;
&lt;li&gt;Temporary task discoveries can become long-term knowledge.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is more stable than putting everything into a prompt or chat context.&lt;/p&gt;
&lt;h2 id=&#34;how-teams-can-use-it&#34;&gt;How teams can use it
&lt;/h2&gt;&lt;p&gt;In a team, &lt;code&gt;domain skills&lt;/code&gt; can become a lightweight automation knowledge base.&lt;/p&gt;
&lt;p&gt;Useful content to record includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Post-login paths in internal systems.&lt;/li&gt;
&lt;li&gt;Report export flows.&lt;/li&gt;
&lt;li&gt;Common popup handling.&lt;/li&gt;
&lt;li&gt;Which buttons require human confirmation.&lt;/li&gt;
&lt;li&gt;Which pages have API alternatives.&lt;/li&gt;
&lt;li&gt;Which selectors were tested and found reliable.&lt;/li&gt;
&lt;li&gt;Which tasks agents are not allowed to run automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This knowledge does not need to be complete at the beginning. A practical path is to start with low-risk, frequent, reversible workflows: read-only tasks, downloads, organization, and checks. Once the flow is stable, turn the experience into a skill.&lt;/p&gt;
&lt;p&gt;For team managers, skill files also make automation boundaries visible. You can inspect what the agent knows, what it can do, and where it should stop.&lt;/p&gt;
&lt;h2 id=&#34;boundaries-to-keep&#34;&gt;Boundaries to keep
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; can improve an agent’s success rate, but they should not fully automate high-risk operations.&lt;/p&gt;
&lt;p&gt;Several boundaries matter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not record passwords, Cookie, token, customer data, or sensitive internal URLs.&lt;/li&gt;
&lt;li&gt;Keep human confirmation for payments, deletion, bulk submission, account changes, and external publishing.&lt;/li&gt;
&lt;li&gt;Record verification date and scope.&lt;/li&gt;
&lt;li&gt;Allow skills to expire after site changes and require revalidation.&lt;/li&gt;
&lt;li&gt;Do not make bypassing risk controls or platform limits a goal.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, domain skills make agents steadier. They do not give agents unlimited permission.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;The &lt;code&gt;domain skills&lt;/code&gt; mechanism in browser-harness shows one thing: AI browser automation cannot rely only on the model improvising at runtime.&lt;/p&gt;
&lt;p&gt;A usable browser agent needs at least three layers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Low-level control: screenshots, clicks, input, downloads, CDP, HTTP.&lt;/li&gt;
&lt;li&gt;Site-level knowledge: API priority, stable selectors, component traps, login boundaries.&lt;/li&gt;
&lt;li&gt;Human safety rules: do not give credentials to the model, confirm high-risk actions, and do not write sensitive information into skills.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; fill the second layer. They let an agent enter a web task with verified experience instead of rediscovering everything every time.&lt;/p&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;browser-harness domain skills: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/tree/main/agent-workspace/domain-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/tree/main/agent-workspace/domain-skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Amazon product-search skill: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/amazon/product-search.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/amazon/product-search.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ArXiv scraping skill: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/arxiv/scraping.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/arxiv/scraping.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub scraping skill: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/github/scraping.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/github/scraping.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LinkedIn invitation-manager skill: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/linkedin/invitation-manager.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/linkedin/invitation-manager.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Shopify admin skill: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/shopify-admin/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/shopify-admin/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Browser Use Cloud skill: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/browser-use-cloud/cloud.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/browser-use-cloud/cloud.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>What is browser-harness? A browser automation tool that lets AI agents control real Chrome</title>
        <link>https://knightli.com/en/2026/05/24/browser-use-browser-harness-ai-agent-browser-automation/</link>
        <pubDate>Sun, 24 May 2026 17:19:54 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/24/browser-use-browser-harness-ai-agent-browser-automation/</guid>
        <description>&lt;p&gt;&lt;code&gt;browser-use/browser-harness&lt;/code&gt; is a browser control tool for AI agents. Its goal is not to build another heavy automation framework, but to connect large language models directly to real Chrome through CDP, so they can browse pages, click, take screenshots, download files, upload files, and fill forms.&lt;/p&gt;
&lt;p&gt;The README describes the project as a thin, editable CDP harness for letting LLMs connect to a real browser. When a task lacks a helper, the agent can add code during execution and turn reusable experience into domain skills.&lt;/p&gt;
&lt;p&gt;This is worth watching because the browser is still the entry point for many real workflows: admin panels, SaaS dashboards, ecommerce sites, recruiting platforms, CRMs, reimbursement systems, cloud consoles, and document platforms. Many of them do not expose stable APIs, or their API permissions are harder to obtain than webpage access. Giving an agent reliable browser control is a way to fill that last mile of automation.&lt;/p&gt;
&lt;h2 id=&#34;what-browser-harness-is&#34;&gt;What browser-harness is
&lt;/h2&gt;&lt;p&gt;Structurally, browser-harness is closer to a browser runtime for agents than a browser extension for manual users.&lt;/p&gt;
&lt;p&gt;Its core ideas are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Connect directly to Chrome or Chromium.&lt;/li&gt;
&lt;li&gt;Control pages through a CDP WebSocket.&lt;/li&gt;
&lt;li&gt;Let agents combine screenshots, coordinate clicks, DOM inspection, network requests, and raw CDP.&lt;/li&gt;
&lt;li&gt;Put task-specific helpers in &lt;code&gt;agent-workspace/agent_helpers.py&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Store site-specific experience in &lt;code&gt;agent-workspace/domain-skills/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Keep the core thin instead of turning it into a large automation platform.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The README says the core architecture is roughly four core files and about 1,000 lines of code, covering &lt;code&gt;install.md&lt;/code&gt;, &lt;code&gt;SKILL.md&lt;/code&gt;, &lt;code&gt;src/browser_harness/&lt;/code&gt;, &lt;code&gt;agent-workspace/agent_helpers.py&lt;/code&gt;, and &lt;code&gt;agent-workspace/domain-skills/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The point is not to ship built-in support for every website. The point is to give the agent an operation layer close enough to a real browser, so it can fill in missing capabilities for the task at hand.&lt;/p&gt;
&lt;h2 id=&#34;how-it-differs-from-traditional-browser-automation&#34;&gt;How it differs from traditional browser automation
&lt;/h2&gt;&lt;p&gt;Traditional browser automation usually revolves around testing frameworks such as Playwright, Selenium, or Puppeteer. They are good for deterministic scripts: open a page, locate an element, click it, and assert the result.&lt;/p&gt;
&lt;p&gt;browser-harness targets a different kind of work. A user gives a goal, and the agent explores the page, judges the state, handles popups, adds helpers, and reuses site knowledge. It emphasizes adaptation during interaction.&lt;/p&gt;
&lt;p&gt;The difference can be summarized like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Playwright is better when humans write scripts and agents run them.&lt;/li&gt;
&lt;li&gt;browser-harness is better when agents look at the page and act step by step.&lt;/li&gt;
&lt;li&gt;Traditional automation favors fixed flows.&lt;/li&gt;
&lt;li&gt;browser-harness favors open-ended tasks.&lt;/li&gt;
&lt;li&gt;Traditional scripts often depend on selectors.&lt;/li&gt;
&lt;li&gt;browser-harness encourages screenshots first, visible UI actions next, and DOM or CDP when needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This does not mean it replaces Playwright. For stable tests, Playwright is still more mature. browser-harness is valuable because it turns real webpages into an environment an agent can operate, especially when page structure is complex, steps are not fixed, and situational judgment matters.&lt;/p&gt;
&lt;h2 id=&#34;why-real-chrome-matters&#34;&gt;Why real Chrome matters
&lt;/h2&gt;&lt;p&gt;Many browser-agent tools use isolated headless browsers. That is simple to deploy and good for batch jobs, but it does not always reuse the user’s real working environment: login state, extensions, history, bookmarks, and daily browser setup.&lt;/p&gt;
&lt;p&gt;browser-harness supports local Chrome and the Browser Use cloud browser. For local browsers, it offers two approaches:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;chrome://inspect/#remote-debugging&lt;/code&gt; to allow the current Chrome instance to be connected.&lt;/li&gt;
&lt;li&gt;Start an isolated profile with &lt;code&gt;--remote-debugging-port=9222 --user-data-dir=...&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want an agent to help with tasks inside real accounts, the docs lean toward the first approach because it reuses everyday Chrome login state, extensions, and bookmarks. For unattended automation, or when you do not want popups to interrupt work, an isolated profile or cloud browser is usually safer.&lt;/p&gt;
&lt;p&gt;The trade-off is clear: real Chrome is closer to the user’s workflow, but the security boundary is more sensitive. An isolated browser is easier to control, but login and environment setup must be handled again.&lt;/p&gt;
&lt;h2 id=&#34;editable-helpers-and-domain-skills&#34;&gt;Editable helpers and domain skills
&lt;/h2&gt;&lt;p&gt;The most interesting part of browser-harness is that it designs “what the agent learns” into the project structure.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agent-workspace/agent_helpers.py&lt;/code&gt; stores helpers that are created during tasks. For example, if an agent needs to upload a file and the existing tools are not enough, it can add a stable upload helper. The next time it sees a similar page, it does not have to start from scratch.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agent-workspace/domain-skills/&lt;/code&gt; stores site-level experience. The README mentions areas such as LinkedIn outreach, Amazon ordering, and reimbursement systems. The project recommends letting agents generate these skills from real tasks instead of hand-writing them, because they should reflect actual page behavior.&lt;/p&gt;
&lt;p&gt;This fits browser automation well. The hard part is often not “how to click a button,” but:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How a website redirects after login.&lt;/li&gt;
&lt;li&gt;Which popups block the main flow.&lt;/li&gt;
&lt;li&gt;Which selectors are stable and which are temporary class names.&lt;/li&gt;
&lt;li&gt;How uploads, downloads, iframes, shadow DOM, and cross-origin components behave.&lt;/li&gt;
&lt;li&gt;What hidden waits and asynchronous states exist in a specific backend.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If this knowledge only stays in one run log, it is quickly lost. Turning it into domain skills gives the agent a chance to improve over time.&lt;/p&gt;
&lt;h2 id=&#34;suitable-scenarios&#34;&gt;Suitable scenarios
&lt;/h2&gt;&lt;p&gt;browser-harness is better suited for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Operating real web admin panels for users.&lt;/li&gt;
&lt;li&gt;Completing repeated flows in systems without APIs.&lt;/li&gt;
&lt;li&gt;Personal or enterprise web tasks that depend heavily on login state.&lt;/li&gt;
&lt;li&gt;Complex interactions where screenshots are needed to judge page state.&lt;/li&gt;
&lt;li&gt;Agents that need to add tools and site knowledge while running.&lt;/li&gt;
&lt;li&gt;Multiple sub-agents each using an isolated browser.&lt;/li&gt;
&lt;li&gt;Researching browser-agent runtime design.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Concrete examples include organizing web tables, submitting internal forms, downloading invoices, uploading files, handling reimbursement workflows, checking order status, configuring SaaS dashboards, and extracting information from logged-in pages.&lt;/p&gt;
&lt;p&gt;If the task is only to fetch static pages, a browser may not be needed. The project’s own &lt;code&gt;SKILL.md&lt;/code&gt; also notes that static pages can often be fetched through HTTP in bulk. Browsers should be reserved for tasks that truly need page state, login state, and interaction.&lt;/p&gt;
&lt;h2 id=&#34;risks-to-watch&#34;&gt;Risks to watch
&lt;/h2&gt;&lt;p&gt;Letting an AI agent control real Chrome is powerful, but risky.&lt;/p&gt;
&lt;p&gt;First, the permission boundary must be clear. Real Chrome may contain email, payment dashboards, cloud consoles, company systems, and personal accounts. Once an agent can operate the browser, it effectively has access to part of those webpage permissions.&lt;/p&gt;
&lt;p&gt;Second, do not hand credentials to the model. For login pages, payment verification, and second confirmations, the user should handle the sensitive step. The agent can wait for login to finish, but it should not read or enter passwords, verification codes, or payment details from screenshots.&lt;/p&gt;
&lt;p&gt;Third, automation is not the same as delegation. Many web tasks look simple but may involve risk controls, mistaken clicks, data deletion, bulk submissions, or irreversible operations. Start with read-only, low-risk, reversible workflows.&lt;/p&gt;
&lt;p&gt;Fourth, domain skills should not leak private data. Site knowledge can be shared, but account names, internal URLs, customer data, coordinate logs, and one-off task details should not be written into skills.&lt;/p&gt;
&lt;p&gt;Fifth, choose the browser connection mode carefully. Reusing daily Chrome is convenient when login state matters. For long-running automation, an isolated profile or cloud browser is more controllable.&lt;/p&gt;
&lt;h2 id=&#34;why-it-matters-for-ai-agent-tools&#34;&gt;Why it matters for AI agent tools
&lt;/h2&gt;&lt;p&gt;browser-harness represents a pragmatic direction for agent tooling: build less platform, and give the model a direct interface to the real environment.&lt;/p&gt;
&lt;p&gt;Many agents fail at two ends. On one end, the model can reason but cannot touch the real page. On the other, automation frameworks are powerful but require humans to hard-code the flow. browser-harness tries to connect the two: the browser holds real-world state, while the agent observes, decides, and adds tools.&lt;/p&gt;
&lt;p&gt;That is also the meaning of a self-improving harness. It does not mean the agent magically becomes smarter. It means reusable operation experience is placed into the project structure, so the next task can avoid some of the same detours.&lt;/p&gt;
&lt;p&gt;For developers, its value is mainly in three areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A browser control layer for personal agents.&lt;/li&gt;
&lt;li&gt;A reference for studying browser automation and agent workflows.&lt;/li&gt;
&lt;li&gt;An experimental framework for turning web workflows into reusable skills.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is not the answer to every browser automation problem, but it points in a clear direction: when agents truly help people do work, the tool layer should not only call APIs. It should also understand and operate the web interfaces people use every day.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;browser-use/browser-harness&lt;/code&gt; is interesting not because it wraps many advanced features, but because it brings several key browser-agent questions into focus: real Chrome, CDP, screenshot-driven control, editable helpers, site skill accumulation, and user permission boundaries.&lt;/p&gt;
&lt;p&gt;If you are writing stable end-to-end tests, Playwright or Selenium is still a better fit. If you want agents such as Codex or Claude Code to handle real webpage tasks, browser-harness offers an entry point that matches how agents work.&lt;/p&gt;
&lt;p&gt;In practice, start with low-risk tasks: let it read pages, take screenshots, and extract information first. Then gradually try clicking and submitting. Once it can reliably understand page state, you can consider giving it longer workflows.&lt;/p&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub project: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;README: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Installation guide: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/install.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/install.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Usage guide: &lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/SKILL.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/SKILL.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Chrome Silently Downloads 4GB Gemini Nano: How to Check, Disable, and Delete It</title>
        <link>https://knightli.com/en/2026/05/09/chrome-gemini-nano-silent-download/</link>
        <pubDate>Sat, 09 May 2026 21:37:18 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/09/chrome-gemini-nano-silent-download/</guid>
        <description>&lt;p&gt;Google Chrome has been reported to download a roughly 4GB local AI model file in the background without explicit user permission, sparking debate about privacy, storage usage, and environmental impact.&lt;/p&gt;
&lt;p&gt;The files are related to Gemini Nano and are mainly used for Chrome&amp;rsquo;s local AI features. The dispute is not simply that the browser supports local AI, but whether the download process is transparent enough, whether users should be informed in advance, and whether system resources are being used reasonably.&lt;/p&gt;
&lt;h2 id=&#34;what-happened&#34;&gt;What happened
&lt;/h2&gt;&lt;p&gt;The model file being discussed is named &lt;code&gt;weights.bin&lt;/code&gt; and is located in Chrome&amp;rsquo;s &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; directory. It is believed to be a localized version of Gemini Nano, used to perform some AI inference directly on the device.&lt;/p&gt;
&lt;p&gt;Chrome decides in the background whether to download it based on hardware capability, especially RAM and VRAM. Users generally do not need to start the download themselves, and they may not see a clear prompt before it happens.&lt;/p&gt;
&lt;p&gt;The more frustrating part is that manually deleting the model file usually does not stop it from coming back. As long as the related feature remains enabled, Chrome may download the model again after a restart or a later update.&lt;/p&gt;
&lt;p&gt;The platforms mentioned in the discussion include Windows 11, macOS, and Ubuntu desktop systems. Based on Chrome&amp;rsquo;s desktop install base, the number of potentially affected devices could reach hundreds of millions.&lt;/p&gt;
&lt;h2 id=&#34;googles-explanation&#34;&gt;Google&amp;rsquo;s explanation
&lt;/h2&gt;&lt;p&gt;Google says these files support local AI features such as &amp;ldquo;Help me write&amp;rdquo; and scam detection. Running the model locally can reduce some data uploads and improve privacy protection.&lt;/p&gt;
&lt;p&gt;Google also says that if device storage is low, Chrome will automatically remove the related model to free up space. In other words, the model does not necessarily occupy disk space permanently.&lt;/p&gt;
&lt;p&gt;At the same time, Google says users have been able to disable the related feature in Chrome settings since February 2024. Once disabled, the model will no longer continue downloading or updating.&lt;/p&gt;
&lt;h2 id=&#34;how-to-check-and-disable-it&#34;&gt;How to check and disable it
&lt;/h2&gt;&lt;p&gt;If you do not want Chrome to keep the Gemini Nano model locally, start by checking a few places.&lt;/p&gt;
&lt;p&gt;First, open Chrome settings and look for options related to &amp;ldquo;on-device AI&amp;rdquo;, local AI, writing assistance, or optimization suggestions, then disable the features you do not need.&lt;/p&gt;
&lt;p&gt;Second, enter this in the address bar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chrome://flags
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then search for and disable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enables optimization guide on device
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Finally, check Chrome&amp;rsquo;s user data directory for the &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; folder and delete the model files inside it. Keep in mind that deleting the file alone is usually not enough. It is better to disable the related flag or setting first, otherwise Chrome may download it again later.&lt;/p&gt;
&lt;h2 id=&#34;possible-paths-on-different-systems&#34;&gt;Possible paths on different systems
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; is usually under Chrome&amp;rsquo;s user data directory. The exact location can vary depending on the operating system and installation method, but these are good places to check first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows: &lt;code&gt;%LOCALAPPDATA%\Google\Chrome\User Data\&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS: &lt;code&gt;~/Library/Application Support/Google/Chrome/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Linux: &lt;code&gt;~/.config/google-chrome/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Chromium: &lt;code&gt;~/.config/chromium/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After opening the relevant directory, search for &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; or &lt;code&gt;weights.bin&lt;/code&gt;. If you use Chrome Beta, Dev, or Canary, the directory name may include the corresponding release channel.&lt;/p&gt;
&lt;h2 id=&#34;how-to-tell-whether-weightsbin-has-been-downloaded&#34;&gt;How to tell whether weights.bin has been downloaded
&lt;/h2&gt;&lt;p&gt;The simplest method is to search Chrome&amp;rsquo;s user data directory for:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;weights.bin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If it has been downloaded, it will usually appear inside &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt;, and the file size may be close to several GB. You can also check the modified time to see whether Chrome recently created or updated it in the background.&lt;/p&gt;
&lt;p&gt;If you cannot find &lt;code&gt;weights.bin&lt;/code&gt;, that does not necessarily mean the device will never download it. Chrome may decide whether to fetch the model based on hardware conditions, region, version, feature flags, and experiment configuration.&lt;/p&gt;
&lt;h2 id=&#34;which-chrome-ai-features-may-be-affected&#34;&gt;Which Chrome AI features may be affected
&lt;/h2&gt;&lt;p&gt;After disabling the related local AI or optimization features, some on-device capabilities that depend on Gemini Nano may be affected, such as &amp;ldquo;Help me write&amp;rdquo;, local scam detection, and future browser AI features that do not go through the cloud.&lt;/p&gt;
&lt;p&gt;For users who do not use these features, everyday browsing is usually not affected much. For users who frequently use Chrome&amp;rsquo;s built-in writing assistance, page understanding, or experimental safety detection features, the experience may fall back to cloud processing, become unavailable, or use another browser-provided alternative.&lt;/p&gt;
&lt;h2 id=&#34;where-the-controversy-lies&#34;&gt;Where the controversy lies
&lt;/h2&gt;&lt;p&gt;The central question is whether a browser should download several GB of model files for AI features before the user has clearly agreed.&lt;/p&gt;
&lt;p&gt;Supporters argue that local AI can reduce cloud processing, improve privacy, and make responses faster. Critics argue that users should at least see a clear prompt before the download, especially when the file is close to 4GB and may affect storage space and network traffic.&lt;/p&gt;
&lt;p&gt;Privacy experts also point out that this kind of insufficiently disclosed background download may raise compliance questions under the EU ePrivacy Directive and GDPR. Whether it constitutes a violation depends on Google&amp;rsquo;s notice mechanism, default settings, data processing path, and user controls.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Chrome&amp;rsquo;s adoption of Gemini Nano shows that browsers are moving more AI capabilities onto the local device. But it also creates a new product boundary problem: local models still consume disk space and bandwidth, and they can affect the user&amp;rsquo;s sense of control over their own device.&lt;/p&gt;
&lt;p&gt;For ordinary users, the most direct step is to check Chrome&amp;rsquo;s local AI and optimization settings. If you do not need these features, disable the related options and then delete the model files in the &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; directory.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
