<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eli</title>
    <description>The latest articles on DEV Community by Eli (@eliofbm).</description>
    <link>https://dev.to/eliofbm</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3895802%2F387dead1-d42a-421a-8dd3-1dd3e82f991b.png</url>
      <title>DEV Community: Eli</title>
      <link>https://dev.to/eliofbm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eliofbm"/>
    <language>en</language>
    <item>
      <title>Trust-sensitive agents need visible friction</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Fri, 15 May 2026 11:10:43 +0000</pubDate>
      <link>https://dev.to/eliofbm/trust-sensitive-agents-need-visible-friction-g63</link>
      <guid>https://dev.to/eliofbm/trust-sensitive-agents-need-visible-friction-g63</guid>
      <description>&lt;p&gt;Background workers are great until the agent is about to submit something under your name.&lt;/p&gt;

&lt;p&gt;That is the line where automation changes character.&lt;/p&gt;

&lt;p&gt;For low-risk work, the best interface is often no interface. Let the agent classify the lead, summarize the page, enrich the record, monitor the inbox, or draft the first pass. If the action is reversible, internal, and easy to inspect later, hiding the machinery is a feature.&lt;/p&gt;

&lt;p&gt;But a different kind of workflow is arriving: agents that apply for jobs, publish content, issue refunds, update customer records, book travel, send replies, change dashboards, and operate logged-in web apps.&lt;/p&gt;

&lt;p&gt;Those are not just browser tasks. They are trust-sensitive actions.&lt;/p&gt;

&lt;p&gt;The product problem is not removing every bit of friction. It is deciding where friction belongs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The browser is where authority lives
&lt;/h2&gt;

&lt;p&gt;Agents want browsers because the browser is where work already happens.&lt;/p&gt;

&lt;p&gt;APIs are incomplete. Internal tools are inconsistent. OAuth scopes are often too coarse. The real state of a workflow is usually scattered across tabs, forms, dashboards, inboxes, and account-specific UI.&lt;/p&gt;

&lt;p&gt;A logged-in browser session can already do the thing. That is why it is useful. It is also why it is risky.&lt;/p&gt;

&lt;p&gt;The useful browser bridge keeps auth and session state out of the prompt while still letting the agent work. That separation is the point: the agent gets a tool boundary, not a pasted credential bundle.&lt;/p&gt;

&lt;p&gt;The boundary is not only “can it act?” It is also “what credentials does it silently inherit?”&lt;/p&gt;

&lt;p&gt;Once an agent can use a real browser session, it is not just controlling pixels. It is borrowing authority: the user’s account, the company’s account, the brand’s account, the customer support account, the payment dashboard, the CMS, the CRM.&lt;/p&gt;

&lt;p&gt;That is the part most demos skip.&lt;/p&gt;

&lt;p&gt;The demo asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the agent click the button?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The production question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What should the agent have to prove before it clicks?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Background workers are not always the right shape
&lt;/h2&gt;

&lt;p&gt;A useful signal came from a builder working on a job-application agent. They had built the normal backend shape: queue, workers, background tasks, submit pipeline. Then they ripped it out and kept the browser extension.&lt;/p&gt;

&lt;p&gt;The reason was not that workers are bad. The reason was that job applications are trust-sensitive. Submitting under a person’s name needs a surface the user can see and interrupt.&lt;/p&gt;

&lt;p&gt;That distinction generalizes.&lt;/p&gt;

&lt;p&gt;A worker queue is great for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;collecting public information;&lt;/li&gt;
&lt;li&gt;extracting structured data;&lt;/li&gt;
&lt;li&gt;drafting content;&lt;/li&gt;
&lt;li&gt;checking status;&lt;/li&gt;
&lt;li&gt;classifying tickets;&lt;/li&gt;
&lt;li&gt;preparing a recommendation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A visible surface becomes important when the agent is about to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;submit a job application;&lt;/li&gt;
&lt;li&gt;publish under a brand account;&lt;/li&gt;
&lt;li&gt;send a customer reply;&lt;/li&gt;
&lt;li&gt;process a refund;&lt;/li&gt;
&lt;li&gt;update a CRM record;&lt;/li&gt;
&lt;li&gt;pay, book, delete, or change account state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The final mile matters because the action is no longer just computation. It changes the world under a real identity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask what the agent can prove before it clicks
&lt;/h2&gt;

&lt;p&gt;A smart pointer is not just a better cursor. It is a permission boundary.&lt;/p&gt;

&lt;p&gt;Before an agent clicks, the product should be able to answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which account is this action using?&lt;/li&gt;
&lt;li&gt;Which page, customer, order, or record is about to change?&lt;/li&gt;
&lt;li&gt;Is this action reversible?&lt;/li&gt;
&lt;li&gt;Is the dollar amount below the approval threshold?&lt;/li&gt;
&lt;li&gt;Is this a draft, or is it about to be published?&lt;/li&gt;
&lt;li&gt;Did the agent inspect the right evidence?&lt;/li&gt;
&lt;li&gt;Is the user seeing the same final state the agent is acting on?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For browser agents, the click is often the last step in a chain of assumptions. The useful interface is not a giant approval modal for every action. It is a way to make the critical assumptions visible at the moment they matter.&lt;/p&gt;

&lt;p&gt;A refund example makes this concrete.&lt;/p&gt;

&lt;p&gt;If a support agent processes a $4,500 refund with no policy, no human in the loop, and no rule saying “anything over $500 needs approval,” the failure is not just model quality. The failure is the permission boundary.&lt;/p&gt;

&lt;p&gt;The product allowed a high-blast-radius action to look like an ordinary tool call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Approval gates should be thresholded, not everywhere
&lt;/h2&gt;

&lt;p&gt;The wrong lesson is: make humans approve everything.&lt;/p&gt;

&lt;p&gt;That turns an agent into a slow workflow UI. It also teaches users to click through approvals without thinking.&lt;/p&gt;

&lt;p&gt;The better lesson is: place friction according to blast radius.&lt;/p&gt;

&lt;p&gt;A practical policy model might separate actions by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read vs write;&lt;/li&gt;
&lt;li&gt;reversible vs irreversible;&lt;/li&gt;
&lt;li&gt;internal-only vs customer-facing;&lt;/li&gt;
&lt;li&gt;low-dollar vs high-dollar;&lt;/li&gt;
&lt;li&gt;draft vs publish/send/submit;&lt;/li&gt;
&lt;li&gt;ordinary path vs exception;&lt;/li&gt;
&lt;li&gt;one record vs bulk action.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most agent workflows need lanes, not one giant permission switch.&lt;/p&gt;

&lt;p&gt;Read-only browser work can be broad. Drafting can be relatively free. Low-risk routine actions can be automated. But actions that spend money, affect customers, publish publicly, delete data, or submit under someone’s name should slow down.&lt;/p&gt;

&lt;p&gt;The point is not to make agents timid. The point is to keep autonomy legible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Completion is not the click
&lt;/h2&gt;

&lt;p&gt;There is another quiet failure mode in business automation: false completion.&lt;/p&gt;

&lt;p&gt;A refund clicked in Stripe is not necessarily finished. The customer may still need a note. Access may need to be removed. A duplicate refund check may still be pending. The CRM may need a record. The support thread may need a final reply.&lt;/p&gt;

&lt;p&gt;The browser click can be successful while the workflow is incomplete.&lt;/p&gt;

&lt;p&gt;That means receipts matter.&lt;/p&gt;

&lt;p&gt;After the action, the agent should leave behind enough context for a human or another system to understand what happened:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what changed;&lt;/li&gt;
&lt;li&gt;where it changed;&lt;/li&gt;
&lt;li&gt;which evidence was used;&lt;/li&gt;
&lt;li&gt;which policy allowed it;&lt;/li&gt;
&lt;li&gt;whether follow-up tasks remain;&lt;/li&gt;
&lt;li&gt;where to inspect or reverse the action if needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For trust-sensitive workflows, “the agent says it did it” is not a receipt.&lt;/p&gt;

&lt;p&gt;A receipt is browser state, tool calls, before/after context, policy decisions, and artifacts that line up. It should be replayable enough that someone can reconstruct the action months later: which tool was called, on what input, under what authority, and what changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The BrowserMan angle: delegated browser authority
&lt;/h2&gt;

&lt;p&gt;BrowserMan should not be framed as “an agent can click websites.” That is becoming table stakes.&lt;/p&gt;

&lt;p&gt;The stronger frame is delegated browser authority.&lt;/p&gt;

&lt;p&gt;A real Chrome session already contains trust. It has the cookies, tabs, login state, and messy context that make work possible. BrowserMan gives agents controlled access to that session while keeping cookies local and letting access be scoped, audited, approved, and revoked.&lt;/p&gt;

&lt;p&gt;That means the important design questions are not only:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can the agent navigate?&lt;/li&gt;
&lt;li&gt;Can it click?&lt;/li&gt;
&lt;li&gt;Can it type?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which browser session can this agent use?&lt;/li&gt;
&lt;li&gt;Which job is it allowed to perform?&lt;/li&gt;
&lt;li&gt;Which actions need a visible pause?&lt;/li&gt;
&lt;li&gt;What proof is required before the click?&lt;/li&gt;
&lt;li&gt;What receipt exists after the action?&lt;/li&gt;
&lt;li&gt;How does the user take access back?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The browser session is authority.&lt;/p&gt;

&lt;p&gt;The future of browser agents is not just better clicking. It is better delegation.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>browserautomation</category>
      <category>security</category>
    </item>
    <item>
      <title>Logs Are Too Late for High-Value Browser Actions</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Thu, 14 May 2026 18:47:33 +0000</pubDate>
      <link>https://dev.to/eliofbm/logs-are-too-late-for-high-value-browser-actions-2c78</link>
      <guid>https://dev.to/eliofbm/logs-are-too-late-for-high-value-browser-actions-2c78</guid>
      <description>&lt;p&gt;A browser agent that can read a support ticket is useful.&lt;/p&gt;

&lt;p&gt;A browser agent that can refund $4,500 without approval is a production incident.&lt;/p&gt;

&lt;p&gt;That distinction is where most browser-agent demos stop being demos and start becoming systems.&lt;/p&gt;

&lt;p&gt;The click loop is getting good. Agents can open pages, read tables, fill forms, use tools, and drive real browsers. Some run in cloud browsers. Some run locally. Some are arriving as Chrome extensions with per-site permissions. The interface is improving quickly.&lt;/p&gt;

&lt;p&gt;But production risk does not start at the click.&lt;/p&gt;

&lt;p&gt;It starts when the click has write authority.&lt;/p&gt;

&lt;p&gt;Refunding a customer, deleting a CRM record, publishing a post, exporting a list, changing account settings, sending a customer-facing email, charging a card — these are not the same kind of action as reading a dashboard. They cross the write boundary.&lt;/p&gt;

&lt;p&gt;For high-value browser actions, logs are too late.&lt;/p&gt;

&lt;h2&gt;
  
  
  Logs explain. Gates prevent.
&lt;/h2&gt;

&lt;p&gt;Receipts and audit logs are necessary. You need to know what the agent did, which page it touched, what it changed, what it saw, who approved it, and what happened before and after execution.&lt;/p&gt;

&lt;p&gt;But a log after the fact is not a control point. It is evidence.&lt;/p&gt;

&lt;p&gt;If a support agent processes a large refund and the human reads the log after the refund clears, the log did its job as a record. The system still failed as a control surface.&lt;/p&gt;

&lt;p&gt;The useful distinction is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logs explain what happened.&lt;/li&gt;
&lt;li&gt;Gates decide whether it should happen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Browser agents need both, but they need them in the right order.&lt;/p&gt;

&lt;h2&gt;
  
  
  The write boundary is the product
&lt;/h2&gt;

&lt;p&gt;Read-only actions can be broad. An agent can inspect an order, summarize a ticket, compare records, draft a response, or collect evidence from a logged-in dashboard with relatively low risk.&lt;/p&gt;

&lt;p&gt;Write actions are different. They mutate the world.&lt;/p&gt;

&lt;p&gt;A write action may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;refund money,&lt;/li&gt;
&lt;li&gt;delete or update records,&lt;/li&gt;
&lt;li&gt;publish public content,&lt;/li&gt;
&lt;li&gt;send customer-facing messages,&lt;/li&gt;
&lt;li&gt;change account configuration,&lt;/li&gt;
&lt;li&gt;export private data,&lt;/li&gt;
&lt;li&gt;trigger a workflow,&lt;/li&gt;
&lt;li&gt;buy something,&lt;/li&gt;
&lt;li&gt;submit a form that cannot be easily undone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One wrong click in that category is not just a bad answer. It is operational damage.&lt;/p&gt;

&lt;p&gt;That is why the product question is not only “can the agent use the browser?”&lt;/p&gt;

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What is the agent allowed to do before a human sees the action?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  A practical policy model
&lt;/h2&gt;

&lt;p&gt;The simplest production pattern is broad read, narrow write.&lt;/p&gt;

&lt;p&gt;Let the agent read and prepare. Let it gather evidence, draft changes, classify risk, and explain what it intends to do. Then put policy in front of the action.&lt;/p&gt;

&lt;p&gt;A practical browser-agent policy can start with four rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Read-only by default.&lt;/strong&gt; The agent can inspect pages, collect evidence, and prepare work without making irreversible changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thresholds for high-value actions.&lt;/strong&gt; Refunds over $500, account changes, exports, deletes, payments, and public publishes require approval.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Approval before execution.&lt;/strong&gt; The gate sits before the click, not after the receipt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Receipts after execution.&lt;/strong&gt; Once approved and executed, the system records what happened, who approved it, and what changed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This does not have to make the workflow slow. A good approval flow gives the human the context needed to decide quickly: what the agent wants to do, why, what rule triggered the gate, what page or record is affected, and what happens if the action is approved.&lt;/p&gt;

&lt;p&gt;Approval is not just a safety brake. It is workflow infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Denials should teach the boundary
&lt;/h2&gt;

&lt;p&gt;A bad gate simply blocks the agent.&lt;/p&gt;

&lt;p&gt;A good gate returns a structured denial.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"allowed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Refund amount exceeds approval threshold"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rule"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"refunds_over_500_require_human_approval"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scope"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"support_portal.refunds"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"next_step"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"request_approval"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That response gives the agent somewhere safe to go. It can ask for approval, switch to read-only mode, collect more evidence, or stop.&lt;/p&gt;

&lt;p&gt;Without that feedback, agents learn the wrong lesson: the tool is broken, the page failed, or the action should be retried through another path.&lt;/p&gt;

&lt;p&gt;Denied actions should teach the boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Receipts need identity
&lt;/h2&gt;

&lt;p&gt;Receipts also need to be stronger than plain text logs.&lt;/p&gt;

&lt;p&gt;A useful receipt should answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which agent or workflow requested the action?&lt;/li&gt;
&lt;li&gt;Which browser session or account was used?&lt;/li&gt;
&lt;li&gt;What page, record, or object was affected?&lt;/li&gt;
&lt;li&gt;What did the agent see before acting?&lt;/li&gt;
&lt;li&gt;What policy rule applied?&lt;/li&gt;
&lt;li&gt;Who approved it, if approval was required?&lt;/li&gt;
&lt;li&gt;What changed after execution?&lt;/li&gt;
&lt;li&gt;Can the action be rolled back?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For enterprise workflows, receipts may also need tamper-evident identity. A log file that can be edited is not enough for serious audit requirements. The stronger version ties each action to actor identity, session context, approval state, and an execution record that can be reviewed later.&lt;/p&gt;

&lt;p&gt;Still, receipts are not the gate.&lt;/p&gt;

&lt;p&gt;They make the gate auditable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why real Chrome raises the stakes
&lt;/h2&gt;

&lt;p&gt;This matters even more when the agent is operating through a real signed-in browser.&lt;/p&gt;

&lt;p&gt;A real Chrome session can touch the same systems the human can touch: support inboxes, CMS tools, analytics, CRMs, admin panels, vendor portals, order systems, internal dashboards, and SaaS apps with no clean API.&lt;/p&gt;

&lt;p&gt;That is exactly why real-browser access is useful.&lt;/p&gt;

&lt;p&gt;It is also why raw autonomy is dangerous.&lt;/p&gt;

&lt;p&gt;If the browser session is authority, delegated browser access needs a control model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scope before execution,&lt;/li&gt;
&lt;li&gt;gates during execution,&lt;/li&gt;
&lt;li&gt;receipts after execution,&lt;/li&gt;
&lt;li&gt;revoke when the workflow is done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The point is not to hide the browser from the user or bypass the systems they already trust. The point is to make browser authority delegatable without making it silent.&lt;/p&gt;

&lt;h2&gt;
  
  
  BrowserMan’s position
&lt;/h2&gt;

&lt;p&gt;BrowserMan is built around that model: controlled access to a user’s real Chrome session for AI agents.&lt;/p&gt;

&lt;p&gt;The cookies stay local. The agent can run elsewhere. Access can be scoped. Risky actions can be gated. Execution can be logged and revoked.&lt;/p&gt;

&lt;p&gt;That is the difference between “an agent can click around a website” and “an operator can trust an agent with a real workflow.”&lt;/p&gt;

&lt;p&gt;The next phase of browser agents will not be won by the tool that clicks the fastest.&lt;/p&gt;

&lt;p&gt;It will be won by the system that knows when not to click.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>automation</category>
      <category>security</category>
    </item>
    <item>
      <title>The Browser Agent Demo Is Not the Product. The Permission Model Is.</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Wed, 13 May 2026 11:55:06 +0000</pubDate>
      <link>https://dev.to/eliofbm/the-browser-agent-demo-is-not-the-product-the-permission-model-is-1flb</link>
      <guid>https://dev.to/eliofbm/the-browser-agent-demo-is-not-the-product-the-permission-model-is-1flb</guid>
      <description>&lt;p&gt;The browser-agent demo is easy to understand.&lt;/p&gt;

&lt;p&gt;The agent opens a website. It clicks. It fills a form. It fixes a broken UI. It posts the thing. It looks like a human moving through software.&lt;/p&gt;

&lt;p&gt;That is useful. It is also not the product.&lt;/p&gt;

&lt;p&gt;The product begins when the browser is signed in.&lt;/p&gt;

&lt;p&gt;A signed-in browser is not just a UI surface. It is authority: inboxes, CRMs, admin dashboards, billing pages, customer records, CMS tools, social accounts, support queues, internal portals, and all the half-integrated web software where real work still happens.&lt;/p&gt;

&lt;p&gt;That is why browser agents are becoming valuable. Operators are drowning in logged-in tools, too many tabs, fragmented dashboards, and workflows that APIs do not cover cleanly.&lt;/p&gt;

&lt;p&gt;It is also why the demo is incomplete.&lt;/p&gt;

&lt;p&gt;Once an agent can touch a real browser session, the question is no longer only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can it use the browser?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The production question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What authority did we delegate, what was the agent allowed to do with it, and what receipt did it leave behind?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The browser-agent demo is not the product.&lt;/p&gt;

&lt;p&gt;The permission model is.&lt;/p&gt;

&lt;h2&gt;
  
  
  A browser demo proves capability, not trust
&lt;/h2&gt;

&lt;p&gt;A browser demo can prove that an agent understands a page.&lt;/p&gt;

&lt;p&gt;It can show that the model can inspect the DOM, interpret a screenshot, click the right button, or recover from a small UI mismatch.&lt;/p&gt;

&lt;p&gt;That is real progress. But in a logged-in workflow, capability is only the first layer.&lt;/p&gt;

&lt;p&gt;A click inside a public demo page is harmless. A click inside a signed-in business tool may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;send an email,&lt;/li&gt;
&lt;li&gt;update a CRM record,&lt;/li&gt;
&lt;li&gt;approve a refund,&lt;/li&gt;
&lt;li&gt;publish a page,&lt;/li&gt;
&lt;li&gt;change a price,&lt;/li&gt;
&lt;li&gt;merge a customer account,&lt;/li&gt;
&lt;li&gt;submit a form,&lt;/li&gt;
&lt;li&gt;spend money,&lt;/li&gt;
&lt;li&gt;or expose private data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are not the same action.&lt;/p&gt;

&lt;p&gt;They should not share the same permission.&lt;/p&gt;

&lt;p&gt;This is where browser-agent products need to stop treating “browser access” as one checkbox. Read-only inspection, drafting, internal edits, external sends, purchases, deletes, refunds, and public publishing are different risk classes.&lt;/p&gt;

&lt;p&gt;The browser is one surface. The authority behind each action is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signed-in browser access is delegated authority
&lt;/h2&gt;

&lt;p&gt;The reason agents want the browser is simple: the browser already has the user’s working context.&lt;/p&gt;

&lt;p&gt;Your logged-in Chrome knows which account is active. It has cookies, open sessions, local state, tabs, dashboards, and workflows that would take weeks to re-create through clean integrations.&lt;/p&gt;

&lt;p&gt;That is why “use the browser I already use” is such a powerful primitive.&lt;/p&gt;

&lt;p&gt;But it changes the trust model.&lt;/p&gt;

&lt;p&gt;When an agent uses a fresh cloud browser, the product mostly controls the execution environment. When an agent uses the user’s real signed-in browser, the product is mediating delegated authority.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;The useful primitive is not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;this agent can use a browser&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;this agent can use this session, for this job, on these surfaces, with these gates, while leaving these receipts, until I revoke it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a product surface.&lt;/p&gt;

&lt;p&gt;It includes scope. It includes approvals. It includes logs. It includes identity. It includes a revocation path.&lt;/p&gt;

&lt;p&gt;Without that, a successful browser demo can quietly become an operational liability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blanket permission feels fast until the risk class changes
&lt;/h2&gt;

&lt;p&gt;Blanket permission is attractive because it removes friction.&lt;/p&gt;

&lt;p&gt;Nobody wants a modal before every harmless click. Nobody wants an agent that asks for approval every time it reads a page, opens a tab, or drafts a response.&lt;/p&gt;

&lt;p&gt;The problem is not autonomy.&lt;/p&gt;

&lt;p&gt;The problem is when the system cannot tell that the action changed class.&lt;/p&gt;

&lt;p&gt;An agent reading a support ticket is one class. Drafting a reply is another. Sending the reply to a customer is another. Issuing a refund is another. Changing the refund policy in the admin panel is another.&lt;/p&gt;

&lt;p&gt;Those transitions are where the permission model matters.&lt;/p&gt;

&lt;p&gt;The alternative to blanket permission is not endless prompts. It is action-aware delegation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;let the agent inspect low-risk pages,&lt;/li&gt;
&lt;li&gt;let it draft changes without submitting,&lt;/li&gt;
&lt;li&gt;allow reversible internal updates inside a defined scope,&lt;/li&gt;
&lt;li&gt;gate writes that notify people or change customer/account records,&lt;/li&gt;
&lt;li&gt;require explicit approval for spend, delete, publish, refund, merge, or other high-impact actions,&lt;/li&gt;
&lt;li&gt;revoke the session when the job is done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is how browser agents become usable without becoming reckless.&lt;/p&gt;

&lt;h2&gt;
  
  
  Completion needs receipts, not just clicks
&lt;/h2&gt;

&lt;p&gt;A browser agent should not claim success because it clicked a button.&lt;/p&gt;

&lt;p&gt;Clicked is not done.&lt;/p&gt;

&lt;p&gt;The receipt is the state after the click: the saved record, the sent message, the published URL, the updated dashboard, the confirmation screen after reload, the audit trail, or the visible diff.&lt;/p&gt;

&lt;p&gt;This matters because browser workflows are full of false positives.&lt;/p&gt;

&lt;p&gt;A button can click and fail silently. A form can submit and then reject server-side validation. A page can update optimistically and roll back. A post can appear in a composer but never publish. A CRM record can save locally but not persist. A checkout can advance one step without completing.&lt;/p&gt;

&lt;p&gt;If the browser agent is operating with real authority, the receipt has to prove more than motion.&lt;/p&gt;

&lt;p&gt;It should answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What did the agent change?&lt;/li&gt;
&lt;li&gt;Which session did it use?&lt;/li&gt;
&lt;li&gt;Which task was it acting under?&lt;/li&gt;
&lt;li&gt;Which approval boundary did it cross?&lt;/li&gt;
&lt;li&gt;What evidence shows the final state?&lt;/li&gt;
&lt;li&gt;Can a human inspect or replay enough context to trust the result?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why screenshots and traces are useful, but not always sufficient. A screenshot says what the browser showed. A workflow receipt should explain what changed, why it was allowed, and how the final state was verified.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tool-call policy is not enough for browser authority
&lt;/h2&gt;

&lt;p&gt;The agent tooling ecosystem is moving toward policy layers around tool calls: schemas, MCP gateways, approval steps, isolation, DLP checks, and host-defined rules.&lt;/p&gt;

&lt;p&gt;That direction is right.&lt;/p&gt;

&lt;p&gt;But browser actions are messier than normal tool calls.&lt;/p&gt;

&lt;p&gt;A structured tool call can say:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"refund_order"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"order_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"amount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A browser action may only say:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;click button
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The meaning depends on the page, the session, the current account, the surrounding form, and the state of the workflow.&lt;/p&gt;

&lt;p&gt;A click can mean “open details” or “delete customer.” A submit button can mean “save draft” or “publish publicly.” The same UI action can be harmless in one app and irreversible in another.&lt;/p&gt;

&lt;p&gt;So browser permissioning needs to understand more than command syntax.&lt;/p&gt;

&lt;p&gt;It needs to understand the authority boundary around the session and the risk tier of the action.&lt;/p&gt;

&lt;h2&gt;
  
  
  The useful model: scope before, gates during, receipts after
&lt;/h2&gt;

&lt;p&gt;For browser agents, the control model should be simple enough to explain and strict enough to matter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scope before execution
&lt;/h3&gt;

&lt;p&gt;Before the agent acts, define the job.&lt;/p&gt;

&lt;p&gt;Which browser session is available? Which sites are in scope? Which tabs or workflows can it touch? Is it reading, drafting, updating, publishing, spending, or deleting?&lt;/p&gt;

&lt;p&gt;The agent should not get “the browser.”&lt;/p&gt;

&lt;p&gt;It should get a bounded delegation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gates during execution
&lt;/h3&gt;

&lt;p&gt;During the run, the system should notice when the agent is about to cross a higher-risk boundary.&lt;/p&gt;

&lt;p&gt;Reading a CRM page may be fine. Updating a field may need a log. Emailing the customer may need approval. Issuing a refund should probably need a stronger gate. Deleting the account should be outside the job entirely unless explicitly granted.&lt;/p&gt;

&lt;p&gt;The point is not to interrupt every click.&lt;/p&gt;

&lt;p&gt;The point is to put friction where authority changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Receipts after action
&lt;/h3&gt;

&lt;p&gt;After the agent acts, it should leave evidence.&lt;/p&gt;

&lt;p&gt;Not just “done.”&lt;/p&gt;

&lt;p&gt;A useful receipt includes the action class, the delegated session or account context, the approval boundary, the final verified state, and enough audit trail for a human to inspect what happened.&lt;/p&gt;

&lt;p&gt;This is how browser agents move from demos to operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where BrowserMan fits
&lt;/h2&gt;

&lt;p&gt;BrowserMan is built around a specific category bet:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;the browser session is authority, and users should be able to delegate that authority carefully.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;BrowserMan connects agents to a user’s real Chrome session. Cookies and credentials stay in the user’s browser. Agents can run elsewhere. Access can be scoped, audited, approved, and revoked.&lt;/p&gt;

&lt;p&gt;That is different from simply launching another browser for the agent.&lt;/p&gt;

&lt;p&gt;Cloud browser infrastructure is useful when the agent needs a reliable remote execution environment. Browser frameworks are useful when developers need better control primitives. Browser automation tools are useful when a task can be scripted end-to-end.&lt;/p&gt;

&lt;p&gt;BrowserMan’s lane is delegated real-browser authority: the agent needs to work in the same logged-in web environment the user already uses, but the user should not have to hand over the whole house.&lt;/p&gt;

&lt;p&gt;The practical promise is not “the agent can click.”&lt;/p&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use the real Chrome session when that is where the work lives,&lt;/li&gt;
&lt;li&gt;keep cookies local,&lt;/li&gt;
&lt;li&gt;delegate a job instead of sharing credentials,&lt;/li&gt;
&lt;li&gt;scope what the agent can touch,&lt;/li&gt;
&lt;li&gt;gate risky actions,&lt;/li&gt;
&lt;li&gt;log what happened,&lt;/li&gt;
&lt;li&gt;revoke access when the job is over.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the permission model as the product.&lt;/p&gt;

&lt;h2&gt;
  
  
  The category will compete on trust, not just clicks
&lt;/h2&gt;

&lt;p&gt;The browser-agent market is moving quickly.&lt;/p&gt;

&lt;p&gt;Some products optimize cloud browser scale. Some optimize visual control. Some optimize local desktops. Some optimize persistent agent computers. Some optimize tool-call policy and runtime isolation.&lt;/p&gt;

&lt;p&gt;All of that matters.&lt;/p&gt;

&lt;p&gt;But once the agent touches a signed-in browser, the durable question becomes sharper:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can I safely delegate the authority behind this browser session?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The winners will not only be the systems that click fastest.&lt;/p&gt;

&lt;p&gt;They will be the systems that know when a click is just navigation, when it is a draft, when it is a write, when it is a public action, and when it should stop.&lt;/p&gt;

&lt;p&gt;The demo gets the agent into the browser.&lt;/p&gt;

&lt;p&gt;The permission model decides whether it belongs there.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>security</category>
      <category>automation</category>
    </item>
    <item>
      <title>Enterprise portals are where browser agents become workflows</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Fri, 08 May 2026 09:10:38 +0000</pubDate>
      <link>https://dev.to/eliofbm/enterprise-portals-are-where-browser-agents-become-workflows-2h9i</link>
      <guid>https://dev.to/eliofbm/enterprise-portals-are-where-browser-agents-become-workflows-2h9i</guid>
      <description>&lt;p&gt;Browser-agent demos are usually about the click.&lt;/p&gt;

&lt;p&gt;The agent sees a page, reasons about it, presses a button, fills a form, and something happens. On a clean demo site, that is enough to feel like the future.&lt;/p&gt;

&lt;p&gt;Enterprise portals are where the future gets less theatrical.&lt;/p&gt;

&lt;p&gt;The page is dense. The table has hidden state. The session may be stale. The form may trigger a real customer update, refund, filing, inventory change, support reply, or vendor action. The agent is no longer just browsing. It is operating inside a logged-in account with consequences.&lt;/p&gt;

&lt;p&gt;That is the point where browser agents stop being a demo and start becoming workflow infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The demo is clicking. The workflow is everything around the click.
&lt;/h2&gt;

&lt;p&gt;A browser agent that can navigate a website is useful. But the hard production questions live around the action:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Should the agent rediscover this flow every time?&lt;/li&gt;
&lt;li&gt;Is the page read-only, or can it change business state?&lt;/li&gt;
&lt;li&gt;Whose logged-in account is being used?&lt;/li&gt;
&lt;li&gt;What is the agent allowed to touch?&lt;/li&gt;
&lt;li&gt;Where should it stop for approval?&lt;/li&gt;
&lt;li&gt;What proof remains after the work is done?&lt;/li&gt;
&lt;li&gt;What happens if the portal drifts or the action fails halfway?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions matter most in the boring places: CRMs, support inboxes, CMS tools, admin dashboards, vendor portals, payment screens, and client portals.&lt;/p&gt;

&lt;p&gt;They are also exactly where a lot of real work lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stop rediscovering the same portal every time.
&lt;/h2&gt;

&lt;p&gt;Screenshots and vision loops are good for unknown pages. They let an agent inspect a surface it has never seen before and choose a next step.&lt;/p&gt;

&lt;p&gt;But repeated enterprise workflows should not be rediscovered from scratch every time.&lt;/p&gt;

&lt;p&gt;If the agent runs the same portal task every week, the path should become a saved action or browser skill. That does not mean the workflow becomes brittle automation again. It means the agent does not pay the full reasoning and observation cost for every known step.&lt;/p&gt;

&lt;p&gt;A useful browser layer should support both modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;exploration when the page is new or has drifted;&lt;/li&gt;
&lt;li&gt;saved actions when the path is known and repeated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is one reason BrowserMan ships prebuilt platform actions alongside general browser tools. The agent can still navigate, read, click, and type, but repeated operations should not require endless page exploration when a more reliable action exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  A logged-in browser session is authority, not just context.
&lt;/h2&gt;

&lt;p&gt;Cookies are not just state. They represent what a person or team can do.&lt;/p&gt;

&lt;p&gt;When an agent uses a logged-in browser session, it inherits some of that authority. That makes the session different from a cloud browser profile, a public page scrape, or a throwaway headless runtime.&lt;/p&gt;

&lt;p&gt;This is the distinction BrowserMan is built around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the agent can run anywhere;&lt;/li&gt;
&lt;li&gt;the user’s real Chrome session stays on the user’s device;&lt;/li&gt;
&lt;li&gt;cookies and credentials stay inside the browser;&lt;/li&gt;
&lt;li&gt;access is delegated instead of shared as a password;&lt;/li&gt;
&lt;li&gt;access can be scoped, audited, approved, and revoked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For authenticated workflows, the question is not only “can the agent use a browser?”&lt;/p&gt;

&lt;p&gt;The better question is: what browser authority did the user delegate, and under what limits?&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate risk classes.
&lt;/h2&gt;

&lt;p&gt;Not every browser action deserves the same treatment.&lt;/p&gt;

&lt;p&gt;Reading a dashboard is not the same as submitting a form. Drafting a customer reply is not the same as sending it. Looking up an order is not the same as issuing a refund. Opening a payment page is not the same as spending money.&lt;/p&gt;

&lt;p&gt;A practical browser-agent system needs risk classes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Read / observe&lt;/strong&gt; — view a page, extract information, summarize state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Draft / prepare&lt;/strong&gt; — fill a form or compose a reply without submitting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low-risk internal update&lt;/strong&gt; — change data that is reversible or contained.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;External send / submit&lt;/strong&gt; — send an email, post content, submit a form, trigger a workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delete / refund / spend / high-impact action&lt;/strong&gt; — irreversible, financial, public, or customer-visible changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is where generic “human approval” language gets too vague.&lt;/p&gt;

&lt;p&gt;Approval for every click is unusable. Approval for nothing is reckless. The useful layer is policy: what class of action is this, what evidence is needed, and what should happen next?&lt;/p&gt;

&lt;h2&gt;
  
  
  Approval gates need UX, not just policy.
&lt;/h2&gt;

&lt;p&gt;A gate can make a system safer and still make it unusable.&lt;/p&gt;

&lt;p&gt;If an approval takes ten seconds of human attention and the agent asks twenty times in one session, the workflow is dead. The operator is not supervising the agent anymore. They are being interrupted by it.&lt;/p&gt;

&lt;p&gt;Good approval design needs batching and evidence.&lt;/p&gt;

&lt;p&gt;Instead of twenty tiny prompts, an agent should be able to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I found 18 records. I drafted 12 updates. Three are uncertain. Seven require external submission. Here is the diff. Approve the safe batch, review the uncertain batch, and block the risky one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The policy modes are not binary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;deny by default&lt;/strong&gt; for irreversible or high-risk actions without human availability;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;queue&lt;/strong&gt; work that can wait;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;escalate&lt;/strong&gt; urgent work to a human;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pre-approve bounded actions&lt;/strong&gt; when the scope is narrow and the blast radius is small;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;require receipts&lt;/strong&gt; after state-changing actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is where browser automation becomes operational software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Receipts are the audit trail for browser work.
&lt;/h2&gt;

&lt;p&gt;After an agent acts in a real browser session, the operator should not be left guessing.&lt;/p&gt;

&lt;p&gt;A useful receipt answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which site and account were used;&lt;/li&gt;
&lt;li&gt;what the agent saw;&lt;/li&gt;
&lt;li&gt;what it changed;&lt;/li&gt;
&lt;li&gt;what evidence supported the action;&lt;/li&gt;
&lt;li&gt;who or what approved it;&lt;/li&gt;
&lt;li&gt;what was submitted, sent, deleted, refunded, or purchased;&lt;/li&gt;
&lt;li&gt;what happened on failure or retry.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For payment and spend flows, the minimum bar is even higher: vendor or endpoint, budget, signer or approver, receipt, and failure behavior.&lt;/p&gt;

&lt;p&gt;A payment page is not another screen. It is a permission boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where BrowserMan fits.
&lt;/h2&gt;

&lt;p&gt;BrowserMan is not trying to be the smartest browser agent or the largest cloud browser fleet.&lt;/p&gt;

&lt;p&gt;It is the delegated real-browser authority layer.&lt;/p&gt;

&lt;p&gt;The product is built for the moment when an agent needs to operate in the same web environment a person already uses, without turning that into password sharing or unlimited browser access.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;real Chrome session;&lt;/li&gt;
&lt;li&gt;agents can run anywhere;&lt;/li&gt;
&lt;li&gt;cookies stay local;&lt;/li&gt;
&lt;li&gt;scope before execution;&lt;/li&gt;
&lt;li&gt;gates during execution;&lt;/li&gt;
&lt;li&gt;receipts after;&lt;/li&gt;
&lt;li&gt;revoke when done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enterprise portals are where browser demos go to become workflows.&lt;/p&gt;

&lt;p&gt;The click loop is the easy part. The workflow layer is where the system proves whether it can be trusted.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>agents</category>
      <category>browsers</category>
    </item>
    <item>
      <title>Browser agents need authority-aware execution</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Fri, 08 May 2026 03:56:26 +0000</pubDate>
      <link>https://dev.to/eliofbm/browser-agents-need-authority-aware-execution-2nbn</link>
      <guid>https://dev.to/eliofbm/browser-agents-need-authority-aware-execution-2nbn</guid>
      <description>&lt;p&gt;Cloud agents are starting to make runtime handoff feel normal.&lt;/p&gt;

&lt;p&gt;You can send an agent to a cloud VM. It can keep working after your laptop closes. It can have a shell, files, an IDE, a browser, and enough continuity to finish a long task without you babysitting the process.&lt;/p&gt;

&lt;p&gt;That is a real improvement. But it exposes the next problem.&lt;/p&gt;

&lt;p&gt;A cloud browser is not the same as your browser.&lt;/p&gt;

&lt;p&gt;The moment the agent needs to operate inside a real logged-in account, the clean demo starts collecting sharp edges: SSO, 2FA, anti-bot checks, account-specific state, existing tabs, saved context, user consent, and audit expectations.&lt;/p&gt;

&lt;p&gt;Copying cookies into the cloud is the wrong default. Re-authenticating every time is brittle. Giving the agent credentials is worse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Desktop MCP solves one half of the problem
&lt;/h2&gt;

&lt;p&gt;Desktop and browser MCP setups have the opposite strength. They can inherit the browser session you already have. The agent can work with the account state that exists on your machine instead of starting from a blank cloud browser.&lt;/p&gt;

&lt;p&gt;That matters. The logged-in browser is often the workflow.&lt;/p&gt;

&lt;p&gt;But local-only control creates its own constraint:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the user’s machine has to stay online;&lt;/li&gt;
&lt;li&gt;the agent often has to run near the browser;&lt;/li&gt;
&lt;li&gt;remote, mobile, chat-driven, or 24/7 agents hit a boundary;&lt;/li&gt;
&lt;li&gt;long-running workflows become awkward when the browser and runtime are tied together.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Desktop MCP is powerful for local control. It is not the whole remote-agent story.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missing shape is runtime separated from authority
&lt;/h2&gt;

&lt;p&gt;The better architecture separates where the agent runs from whose browser authority it can use.&lt;/p&gt;

&lt;p&gt;The agent runtime might live in Claude Code, Cursor, OpenClaw, n8n, a cron job, a cloud worker, or a chat interface.&lt;/p&gt;

&lt;p&gt;The browser authority should remain in the user’s real Chrome session.&lt;/p&gt;

&lt;p&gt;That distinction matters because the browser session is not just context. It is authority.&lt;/p&gt;

&lt;p&gt;A signed-in browser can read private data, send messages, update CRM records, post publicly, submit forms, delete content, change settings, or spend money. Treating that as “just browser access” is too broad.&lt;/p&gt;

&lt;p&gt;The question is not only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the agent use a browser?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the agent use the right browser authority, from the right runtime, with the right permission boundary?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Account-aware is useful. Authority-aware is sharper.
&lt;/h2&gt;

&lt;p&gt;There is a useful phrase emerging in browser automation: account-aware execution.&lt;/p&gt;

&lt;p&gt;It means the script is not enough. The account profile, cookies, local storage, browser state, workflow state, review rules, and task logs are part of the runtime.&lt;/p&gt;

&lt;p&gt;That is right for team browser automation.&lt;/p&gt;

&lt;p&gt;For AI agents, the sharper version is authority-aware browser delegation.&lt;/p&gt;

&lt;p&gt;The account is often not a synthetic profile in a fleet. It is a real human’s logged-in Chrome session. That makes the browser not only account context, but account authority.&lt;/p&gt;

&lt;p&gt;A script needs the right account context.&lt;/p&gt;

&lt;p&gt;An agent needs the right permission boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read-only and posting should not share the same permission
&lt;/h2&gt;

&lt;p&gt;Browser work should be permissioned by action class.&lt;/p&gt;

&lt;p&gt;Reading a page is different from drafting a reply. Drafting is different from clicking submit. Clicking submit is different from deleting content, changing billing, or modifying account settings.&lt;/p&gt;

&lt;p&gt;A practical permission model should separate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;observe / read;&lt;/li&gt;
&lt;li&gt;draft / prepare;&lt;/li&gt;
&lt;li&gt;click / type / navigate;&lt;/li&gt;
&lt;li&gt;submit / post / delete / spend;&lt;/li&gt;
&lt;li&gt;admin or settings changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read-only research and externally visible actions should not share the same permission.&lt;/p&gt;

&lt;p&gt;This is especially obvious in social and support workflows. Letting an agent inspect a profile, summarize an inbox, or draft a response is useful. Letting it publish, refund, update an account, or message a customer needs a gate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a browser-handoff layer should provide
&lt;/h2&gt;

&lt;p&gt;A real browser-handoff layer should do more than forward clicks.&lt;/p&gt;

&lt;p&gt;It should provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scope before execution&lt;/strong&gt; — what can this agent touch?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Approval during execution&lt;/strong&gt; — when does the user need to say yes?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Receipts after execution&lt;/strong&gt; — what clicked, changed, or failed?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revoke when done&lt;/strong&gt; — how does the user remove access?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cookie locality&lt;/strong&gt; — are credentials and cookies staying in the browser, or being copied into the runtime?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the layer BrowserMan is built around: agents can run anywhere, while the signed-in browser stays on the user’s device. The agent receives delegated browser access, not credentials. Cookies stay local. Access can be scoped, attributed, approved, and revoked.&lt;/p&gt;

&lt;h2&gt;
  
  
  The boring workflows are where this gets valuable
&lt;/h2&gt;

&lt;p&gt;The most useful browser agents are rarely the flashiest demos.&lt;/p&gt;

&lt;p&gt;They are things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;checking a support inbox;&lt;/li&gt;
&lt;li&gt;drafting customer follow-up;&lt;/li&gt;
&lt;li&gt;enriching CRM records;&lt;/li&gt;
&lt;li&gt;publishing CMS updates;&lt;/li&gt;
&lt;li&gt;looking up an order;&lt;/li&gt;
&lt;li&gt;preparing a refund;&lt;/li&gt;
&lt;li&gt;researching leads across logged-in tools;&lt;/li&gt;
&lt;li&gt;updating admin SaaS dashboards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These workflows need real account context. They also need boundaries.&lt;/p&gt;

&lt;p&gt;That is why the category should move past “agents need browsers.”&lt;/p&gt;

&lt;p&gt;Agents need browser authority they can safely borrow.&lt;/p&gt;

&lt;p&gt;Cloud handoff solves where the agent runs.&lt;/p&gt;

&lt;p&gt;Browser handoff solves whose account it can safely use.&lt;/p&gt;

&lt;p&gt;The product gets real at that boundary.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>automation</category>
      <category>cloud</category>
      <category>security</category>
    </item>
    <item>
      <title>Boring admin SaaS is where browser agents become real</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Tue, 05 May 2026 13:52:08 +0000</pubDate>
      <link>https://dev.to/eliofbm/boring-admin-saas-is-where-browser-agents-become-real-3lg2</link>
      <guid>https://dev.to/eliofbm/boring-admin-saas-is-where-browser-agents-become-real-3lg2</guid>
      <description>&lt;p&gt;Browser agents stop being demos when they enter boring logged-in admin SaaS.&lt;/p&gt;

&lt;p&gt;Not the polished demo site. Not the one-off form fill. The real test is ZohoBooks, QuickBooks, Xero, CRM, inboxes, CMS dashboards, customer portals, and the other web apps operators already live in.&lt;/p&gt;

&lt;p&gt;That is where the value is.&lt;/p&gt;

&lt;p&gt;It is also where the risk starts.&lt;/p&gt;

&lt;p&gt;A browser agent that can read a public website is using a browser as an interface. A browser agent that can use an operator's accounting SaaS is holding delegated authority. It may be able to see financial records, prepare invoices, update customer data, send messages, publish content, approve refunds, or click something that changes money.&lt;/p&gt;

&lt;p&gt;That changes the product question.&lt;/p&gt;

&lt;p&gt;The question is no longer only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the agent use the browser?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which browser authority did the agent receive, and what boundary stops it before the risky action?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The buyer workflow is not the flashy demo
&lt;/h2&gt;

&lt;p&gt;Browser-agent demos often optimize for spectacle: open a site, click around, complete a task, show the UI moving.&lt;/p&gt;

&lt;p&gt;That proves something technically useful. But it is not usually the buyer workflow.&lt;/p&gt;

&lt;p&gt;The buyer workflow is more boring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read invoices,&lt;/li&gt;
&lt;li&gt;match them against vendor records,&lt;/li&gt;
&lt;li&gt;categorize transactions,&lt;/li&gt;
&lt;li&gt;flag duplicates,&lt;/li&gt;
&lt;li&gt;review exports,&lt;/li&gt;
&lt;li&gt;update CRM fields,&lt;/li&gt;
&lt;li&gt;triage support messages,&lt;/li&gt;
&lt;li&gt;prepare CMS changes,&lt;/li&gt;
&lt;li&gt;check customer portals,&lt;/li&gt;
&lt;li&gt;draft the next action.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The work that gets paid for is often the work nobody screenshots.&lt;/p&gt;

&lt;p&gt;That pattern kept showing up in recent market scans. One builder was showing ZohoBooks automation through a browser-agent setup. Another account described a QuickBooks/vendor-invoice workflow: read invoices from email, categorize them, flag duplicates, and reduce how often the owner has to open QuickBooks. Another described a Quality of Earnings workflow around QuickBooks/Xero exports, category mapping, and anomaly flags.&lt;/p&gt;

&lt;p&gt;The common thread is not “the agent opened a website.”&lt;/p&gt;

&lt;p&gt;The common thread is repeated operational work inside logged-in SaaS.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow is not “open QuickBooks”
&lt;/h2&gt;

&lt;p&gt;A weak version of this category says: the agent can open QuickBooks.&lt;/p&gt;

&lt;p&gt;A useful version says:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;read the invoice,&lt;/li&gt;
&lt;li&gt;compare it against vendor and customer context,&lt;/li&gt;
&lt;li&gt;categorize it,&lt;/li&gt;
&lt;li&gt;flag duplicates or anomalies,&lt;/li&gt;
&lt;li&gt;prepare the entry,&lt;/li&gt;
&lt;li&gt;stop before posting money or mutating the record unless the action is approved.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last step matters.&lt;/p&gt;

&lt;p&gt;The valuable part is not blind autonomy. The valuable part is reducing the repeated human work while preserving control over the actions that create side effects.&lt;/p&gt;

&lt;p&gt;For many admin workflows, the right split is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the agent reads, gathers, compares, drafts, and prepares;&lt;/li&gt;
&lt;li&gt;a human or policy gate reviews the risky transition;&lt;/li&gt;
&lt;li&gt;the system leaves a receipt of what happened.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is less magical than “fully autonomous browser agent.”&lt;/p&gt;

&lt;p&gt;It is also much closer to what serious operators will actually trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  Logged-in SaaS turns browser access into authority
&lt;/h2&gt;

&lt;p&gt;Fresh cloud browsers are useful. They are great for extraction, testing, browsing public pages, and running clean workflows at scale.&lt;/p&gt;

&lt;p&gt;But many admin workflows need the exact environment the operator already uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the existing logged-in session,&lt;/li&gt;
&lt;li&gt;OAuth/MFA already completed,&lt;/li&gt;
&lt;li&gt;extensions and device context,&lt;/li&gt;
&lt;li&gt;the same SaaS state the human sees,&lt;/li&gt;
&lt;li&gt;the same permissions the operator has.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why real browser sessions keep appearing as a product primitive for agents.&lt;/p&gt;

&lt;p&gt;But a real browser session is not just convenience. It is authority.&lt;/p&gt;

&lt;p&gt;If an agent can use the same session, it may inherit the same practical power as the human sitting at the browser. In accounting, that may mean changing records or preparing payments. In CRM, it may mean editing customer data. In support, it may mean sending a reply. In CMS, it may mean publishing.&lt;/p&gt;

&lt;p&gt;So the product cannot stop at browser control.&lt;/p&gt;

&lt;p&gt;It needs delegation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three requirements for real admin-SaaS browser agents
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Real session access
&lt;/h3&gt;

&lt;p&gt;Many useful workflows depend on the user's actual browser context. Asking the agent to log in from a clean browser, copy cookies, or maintain a parallel profile often turns the workflow into authentication infrastructure.&lt;/p&gt;

&lt;p&gt;The user already has a browser session that works. The question is how to delegate it without handing over the keys.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Separation of read/prepare from write/submit
&lt;/h3&gt;

&lt;p&gt;The safest useful agent is often not the agent that clicks everything autonomously.&lt;/p&gt;

&lt;p&gt;It is the agent that can do the boring work up to the boundary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gather evidence,&lt;/li&gt;
&lt;li&gt;prepare the record,&lt;/li&gt;
&lt;li&gt;explain the proposed change,&lt;/li&gt;
&lt;li&gt;stop before the action that changes money, customer data, or public state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This boundary is where browser-agent products will earn trust.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Receipts
&lt;/h3&gt;

&lt;p&gt;When an agent acts inside logged-in SaaS, teams need to know what happened.&lt;/p&gt;

&lt;p&gt;A useful receipt answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what did the agent inspect?&lt;/li&gt;
&lt;li&gt;what did it prepare?&lt;/li&gt;
&lt;li&gt;what did it change?&lt;/li&gt;
&lt;li&gt;who or what approved the change?&lt;/li&gt;
&lt;li&gt;how can access be revoked?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without receipts, approval becomes theater. With receipts, delegation becomes operational.&lt;/p&gt;

&lt;h2&gt;
  
  
  Browser agents get serious in boring software
&lt;/h2&gt;

&lt;p&gt;The future of browser agents may look less like an impressive one-shot demo and more like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;invoice cleanup,&lt;/li&gt;
&lt;li&gt;QOE review prep,&lt;/li&gt;
&lt;li&gt;CRM updates,&lt;/li&gt;
&lt;li&gt;lead research,&lt;/li&gt;
&lt;li&gt;support inbox triage,&lt;/li&gt;
&lt;li&gt;CMS checks,&lt;/li&gt;
&lt;li&gt;admin portal reconciliation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Boring enough to pay for. Risky enough to need a boundary.&lt;/p&gt;

&lt;p&gt;That is the lane BrowserMan is built around: delegated browser access for AI agents. The user's real Chrome stays local. Cookies stay in the browser. Agents can run elsewhere. Access can be scoped, gated, audited, and revoked.&lt;/p&gt;

&lt;p&gt;Because once browser agents enter logged-in admin SaaS, the product is no longer just navigation.&lt;/p&gt;

&lt;p&gt;It is delegated authority.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>automation</category>
      <category>saas</category>
      <category>security</category>
    </item>
    <item>
      <title>Existing Chrome profiles are becoming a product primitive for agents</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Mon, 04 May 2026 21:19:18 +0000</pubDate>
      <link>https://dev.to/eliofbm/existing-chrome-profiles-are-becoming-a-product-primitive-for-agents-2oi</link>
      <guid>https://dev.to/eliofbm/existing-chrome-profiles-are-becoming-a-product-primitive-for-agents-2oi</guid>
      <description>&lt;p&gt;AI agents are getting better at planning, calling tools, and running longer workflows.&lt;/p&gt;

&lt;p&gt;But the boring part keeps winning: the agent still has to log in.&lt;/p&gt;

&lt;p&gt;That is where browser-agent work often collapses into infrastructure. Fresh browser contexts fight OAuth. Copied cookies rot. Separate Chrome profiles need sync scripts and refresh jobs. Local-only browser bridges work until the agent has to run somewhere else. Longer agent tasks make the browser-auth tax more visible, not less.&lt;/p&gt;

&lt;p&gt;The market is converging on the same primitive: use the real Chrome profile or browser session that already has identity, state, extensions, and permissions.&lt;/p&gt;

&lt;p&gt;That is the right direction. But it is only half the product.&lt;/p&gt;

&lt;p&gt;An existing Chrome profile is not just a convenience layer. It is authority. If an agent can use it, the agent can often read private data, mutate customer records, send messages, publish posts, approve refunds, or click checkout.&lt;/p&gt;

&lt;p&gt;The real product question is no longer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the agent open a browser?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which browser authority did the agent receive, and what boundary stops it before the risky action?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The browser-auth tax is becoming visible
&lt;/h2&gt;

&lt;p&gt;For simple demos, authentication looks like a setup step. Log in once, save state, run the flow.&lt;/p&gt;

&lt;p&gt;For real workflows, authentication becomes an ongoing tax:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OAuth breaks in automated or fresh-browser contexts.&lt;/li&gt;
&lt;li&gt;Copied cookies expire or get rejected.&lt;/li&gt;
&lt;li&gt;Separate profiles need cron jobs, launch agents, and refresh cycles.&lt;/li&gt;
&lt;li&gt;Long-running automations hit reconnect and profile ownership problems.&lt;/li&gt;
&lt;li&gt;Multiple agents or jobs can fight over the same profile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One operator described spending a day wiring a separate Chrome profile, cookie access, a launchd service, a sync script, and a six-hour refresh cycle so an agent could stay logged in. Another described trying to give an agent the existing Chrome profile after several headless/local approaches failed. Another debugged an agent repeatedly killing Chrome because a forgotten background job shared the same browser profile.&lt;/p&gt;

&lt;p&gt;None of that is model intelligence. It is browser-auth infrastructure.&lt;/p&gt;

&lt;p&gt;The model can plan for an hour. The workflow still dies if the browser session, profile, and approval boundary are duct-taped together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why agents collapse back to the existing Chrome profile
&lt;/h2&gt;

&lt;p&gt;The existing Chrome profile works because it already contains the things web apps use to recognize a real user:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cookies and session state,&lt;/li&gt;
&lt;li&gt;OAuth/MFA completion,&lt;/li&gt;
&lt;li&gt;extensions,&lt;/li&gt;
&lt;li&gt;device and enterprise context,&lt;/li&gt;
&lt;li&gt;user preferences,&lt;/li&gt;
&lt;li&gt;the exact app state the human already uses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why “use my actual browser” keeps showing up as a product request. It is also why “just copy the cookies” is an uncomfortable answer.&lt;/p&gt;

&lt;p&gt;A browser profile is not a loose credential bundle. It is a live authority surface.&lt;/p&gt;

&lt;p&gt;If the agent gets the same browser profile, it may inherit the same app permissions as the user. That can be useful for logged-in workflows like support, CRM, CMS, lead research, admin portals, or checkout. It also means the product has to answer ownership questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which agent, job, or human is allowed to use this profile right now?&lt;/li&gt;
&lt;li&gt;Can multiple automations touch it at once?&lt;/li&gt;
&lt;li&gt;Which actions are read-only?&lt;/li&gt;
&lt;li&gt;Which actions require review?&lt;/li&gt;
&lt;li&gt;What receipt proves what happened?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The existing Chrome profile solves auth, but it creates a new product problem: delegation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three lanes are emerging
&lt;/h2&gt;

&lt;p&gt;There are at least three browser-agent infrastructure lanes forming.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Cloud browser infrastructure
&lt;/h3&gt;

&lt;p&gt;Cloud browsers are useful for scale, clean environments, testing, extraction, crawling, and controlled remote execution.&lt;/p&gt;

&lt;p&gt;They are often the right answer when the workflow does not need the user's actual signed-in browser state.&lt;/p&gt;

&lt;p&gt;But many operator workflows are not just “open a browser.” They require the specific browser session where the user is already logged in and authorized.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Local or browser-resident agents
&lt;/h3&gt;

&lt;p&gt;Local browser agents and Chrome-extension agents solve a different problem: the agent lives with the browser.&lt;/p&gt;

&lt;p&gt;That can be excellent for privacy, current tabs, browser history, local page context, and direct UI access. It also keeps the agent and browser tightly coupled to one environment.&lt;/p&gt;

&lt;p&gt;This lane answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if the agent lives inside my browser?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3. Delegated real-browser access
&lt;/h3&gt;

&lt;p&gt;The delegated-access lane answers a different question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if my agent lives somewhere else, but needs my real browser session without copying the keys?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is BrowserMan's lane.&lt;/p&gt;

&lt;p&gt;The user's real Chrome stays local. Cookies and credentials stay in the browser. The agent can run elsewhere. Access is treated as something delegated, scoped, audited, approved, and revoked — not as a cookie jar to export or a headless browser pretending to be the user.&lt;/p&gt;

&lt;p&gt;Local browser agents solve “the agent lives in my browser.” Delegated browser access solves “my agent lives somewhere else, but needs my real browser session without copying the keys.”&lt;/p&gt;

&lt;p&gt;The wrong abstraction is “browser access.” The useful abstraction is “which session authority is being delegated?”&lt;/p&gt;

&lt;h2&gt;
  
  
  The browser is the execution boundary
&lt;/h2&gt;

&lt;p&gt;For browser agents, the browser is not just an input/output device.&lt;/p&gt;

&lt;p&gt;It is the execution boundary where identity, UI, session authority, and side effects meet.&lt;/p&gt;

&lt;p&gt;The UI matters because it encodes what the user can see, click, confirm, undo, and recover from. A web app's interface is often where permission stops being theoretical. The app shows the record. It labels the action. It asks for confirmation. It exposes the difference between viewing an order, drafting a refund, and submitting the refund.&lt;/p&gt;

&lt;p&gt;If an agent bypasses or guesses around that boundary, the system loses important context.&lt;/p&gt;

&lt;p&gt;This is why browser agents should not be evaluated only on whether they can click through the flow. The product has to understand the risk level of the action:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action class&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Default boundary&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Read-only lookup&lt;/td&gt;
&lt;td&gt;Check order status&lt;/td&gt;
&lt;td&gt;Usually allow within scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reversible update&lt;/td&gt;
&lt;td&gt;Add CRM note&lt;/td&gt;
&lt;td&gt;Log and sample-review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Draft&lt;/td&gt;
&lt;td&gt;Draft email/refund/social post&lt;/td&gt;
&lt;td&gt;Human review before send&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External side effect&lt;/td&gt;
&lt;td&gt;Send email, publish, refund, checkout&lt;/td&gt;
&lt;td&gt;Explicit approval&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Irreversible/high-risk&lt;/td&gt;
&lt;td&gt;Delete, spend, price change, account action&lt;/td&gt;
&lt;td&gt;Strong approval + receipt&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The useful browser agent is usually boring: check the order, update the CRM, draft the refund, stop before submit unless the rules say yes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Approval is not always friction
&lt;/h2&gt;

&lt;p&gt;Some agent products pitch “no approval queue” as the value.&lt;/p&gt;

&lt;p&gt;Sometimes that is right. Read-only data collection, private drafts, or low-risk internal automation should not force a human to approve every tiny step.&lt;/p&gt;

&lt;p&gt;But once an agent can publish, email, refund, buy, delete, or modify a customer record, the approval queue is not bureaucracy. It is the trust boundary.&lt;/p&gt;

&lt;p&gt;“No approval queue” sounds fast until the agent can publish, refund, email, or delete.&lt;/p&gt;

&lt;p&gt;The key is not to require approval everywhere. The key is to attach approval to action risk.&lt;/p&gt;

&lt;p&gt;A good approval surface should not simply ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Allow?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It should answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What changed?&lt;/li&gt;
&lt;li&gt;Which account/session/merchant/customer is involved?&lt;/li&gt;
&lt;li&gt;What authority will be used?&lt;/li&gt;
&lt;li&gt;What will happen next?&lt;/li&gt;
&lt;li&gt;Can this action be undone?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the human has to re-run the entire workflow mentally before approving, the product has not built an approval layer. It has only paused the agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side effects need receipts
&lt;/h2&gt;

&lt;p&gt;Approval is the gate before the side effect. A receipt is the proof after it.&lt;/p&gt;

&lt;p&gt;Browser agents need both.&lt;/p&gt;

&lt;p&gt;Once an agent can trigger checkout, publish a post, send an email, approve a refund, or mutate a customer record, a chat summary is not enough. The receipt should be outside the agent's own narration.&lt;/p&gt;

&lt;p&gt;The receipt might include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;who requested the action,&lt;/li&gt;
&lt;li&gt;which browser/session authority was delegated,&lt;/li&gt;
&lt;li&gt;the policy or approval state at the time,&lt;/li&gt;
&lt;li&gt;the app/merchant/customer context,&lt;/li&gt;
&lt;li&gt;what changed,&lt;/li&gt;
&lt;li&gt;the resulting URL, record ID, invoice, or confirmation,&lt;/li&gt;
&lt;li&gt;a timestamp,&lt;/li&gt;
&lt;li&gt;whether the action was reversible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the difference between “the agent says it posted” and “here is the post URL.” It is the difference between “the refund probably went through” and “here is the refund ID and customer record diff.”&lt;/p&gt;

&lt;p&gt;Checkout is a useful stress test because the agent is not only choosing an item. It is crossing from recommendation into execution. A serious checkout flow should show the spend scope, the approval checkpoint, retries and failure handling, the merchant context, the invoice or confirmation state, and whether the action can be cancelled or reversed.&lt;/p&gt;

&lt;p&gt;If the first audit log is a stranger replying “you posted this,” the agent did not have autonomy. It had unattended authority.&lt;/p&gt;

&lt;h2&gt;
  
  
  What BrowserMan changes
&lt;/h2&gt;

&lt;p&gt;BrowserMan exists for the delegated-access case.&lt;/p&gt;

&lt;p&gt;The agent does not need your password, a copied cookie jar, or a headless browser pretending to be you. It gets controlled access to your real signed-in Chrome session, with the browser session kept local and the authority treated as something you delegate, observe, and revoke.&lt;/p&gt;

&lt;p&gt;That distinction matters because authenticated browser work is not just about solving login. It is about preserving the boundary where real web authority lives.&lt;/p&gt;

&lt;p&gt;The browser session already has identity. The UI already represents what the user can see and do. The app already asks for confirmation at important moments. BrowserMan's job is to make that real browser session available to agents without turning it into loose, portable power.&lt;/p&gt;

&lt;p&gt;The category is still young. Cloud browsers, local browser agents, local bridges, and delegated real-browser access will all be useful. But for the workflows where the user says, “I need the agent to use the browser I already trust,” the product primitive is clear:&lt;/p&gt;

&lt;p&gt;Use the existing session. Delegate it deliberately. Put boundaries around risky actions. Leave receipts.&lt;/p&gt;

&lt;p&gt;That is how browser agents move from demos to production work.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>automation</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Delegated browser access vs cookie sync: the browser session is authority</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Sun, 03 May 2026 13:58:05 +0000</pubDate>
      <link>https://dev.to/eliofbm/delegated-browser-access-vs-cookie-sync-the-browser-session-is-authority-15p</link>
      <guid>https://dev.to/eliofbm/delegated-browser-access-vs-cookie-sync-the-browser-session-is-authority-15p</guid>
      <description>&lt;p&gt;For browser agents, the hard part is no longer just giving the model a logged-in browser.&lt;/p&gt;

&lt;p&gt;That part is getting solved from several directions. Cloud browser platforms can run managed browsers. Local browser tools can attach to a user’s existing Chrome profile. Agentic browsers can isolate the agent in a clean profile. Cookie-sync experiments can move authenticated state into a remote runtime.&lt;/p&gt;

&lt;p&gt;All of that is useful.&lt;/p&gt;

&lt;p&gt;But the production question is not only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the agent use a logged-in session?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where does browser-session authority live, how is it delegated, and what identity, policy, isolation, and audit trail follow the agent?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A logged-in browser is not just state. It is authority.&lt;/p&gt;

&lt;p&gt;It can contain your inbox, CRM, support queue, billing portal, admin dashboard, SaaS console, ad account, CMS, private docs, customer records, social accounts, and internal tools. That is why agents want browser access. It is also why the permission model matters.&lt;/p&gt;

&lt;p&gt;Once an agent can use a real browser session, “browser access” stops being a convenience feature. It becomes a delegation model.&lt;/p&gt;

&lt;p&gt;There are at least four different models emerging.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Cloud browser plus cookie sync
&lt;/h2&gt;

&lt;p&gt;The first model is the most infrastructure-friendly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Run the browser in the cloud, then move or copy enough session material into that browser so the agent can act as an authenticated user.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is appealing for obvious reasons. Cloud browsers are easy to schedule, scale, observe, reset, and integrate into server-side agent systems. They do not depend on the user’s laptop being online. They can be provisioned like infrastructure.&lt;/p&gt;

&lt;p&gt;Cookie sync adds the missing piece: authenticated state.&lt;/p&gt;

&lt;p&gt;Instead of asking the user to log into a fresh remote browser, the system can copy cookies or session state from the user’s local browser into a remote browser. The agent gets the convenience of a managed runtime with the usefulness of a logged-in session.&lt;/p&gt;

&lt;p&gt;That is powerful.&lt;/p&gt;

&lt;p&gt;It also changes the trust boundary.&lt;/p&gt;

&lt;p&gt;If the cookie jar is exported, copied, or synced into a remote runtime, the security and revocation story becomes about how that session material is moved, stored, scoped, expired, and destroyed.&lt;/p&gt;

&lt;p&gt;This model solves remote execution by exporting the jar.&lt;/p&gt;

&lt;p&gt;That may be a good tradeoff for some workflows. If the goal is high-scale cloud automation, a managed remote browser may be exactly right. But it is not the same as keeping the user’s credentials and cookies inside the browser they already use.&lt;/p&gt;

&lt;p&gt;The key question is not whether the agent can act. It can.&lt;/p&gt;

&lt;p&gt;The key question is what had to move to make that possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Isolated agent browser or profile
&lt;/h2&gt;

&lt;p&gt;The second model goes in the opposite direction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Put the agent in a separate browser profile so it cannot touch the user’s main cookies, logins, or browsing data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a strong security default.&lt;/p&gt;

&lt;p&gt;Agentic browsing has a prompt-injection problem. A page can contain instructions. The agent can misread them as task instructions. If that agent has access to the user’s real logged-in profile, the blast radius can be large.&lt;/p&gt;

&lt;p&gt;A clean or isolated profile limits that blast radius. The agent gets a browser, but not the user’s main browser. It can browse, search, test flows, fill public forms, read pages, or perform low-auth tasks without inheriting the user’s entire web authority.&lt;/p&gt;

&lt;p&gt;That is useful and often correct.&lt;/p&gt;

&lt;p&gt;But isolation has a tradeoff: it removes the very state that makes many work tasks valuable.&lt;/p&gt;

&lt;p&gt;A separate browser profile is safer because it is not logged into everything. But if the workflow requires the user’s actual SaaS dashboard, support inbox, ad account, internal tool, or customer portal, then the isolated profile still needs one of the other routes: a fresh login, an API, OAuth, cookie sync, or a controlled way to borrow the real session.&lt;/p&gt;

&lt;p&gt;So isolated profiles protect cookies. They do not automatically provide delegated access to the user’s real work surface.&lt;/p&gt;

&lt;p&gt;This distinction matters because “safe browser agent” and “use my actual logged-in workflow” are often in tension. A clean profile is good when isolation is the goal. It is less useful when continuity with the user’s real browser state is the goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Local attach to existing Chrome
&lt;/h2&gt;

&lt;p&gt;The third model says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do not create a separate browser. Attach to the browser the user already has.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This solves the login problem cleanly.&lt;/p&gt;

&lt;p&gt;The user is already logged into X, Gmail, Vercel, GitHub, Salesforce, Stripe, Notion, Linear, Intercom, Shopify, or whatever else they use. The agent does not need a separate login flow. It can operate in the same browser state the user already trusts.&lt;/p&gt;

&lt;p&gt;For local developer workflows, this is extremely attractive.&lt;/p&gt;

&lt;p&gt;It can also preserve a lot of context that cloud or isolated browsers do not have: existing tabs, extensions, cookies, permissions, session history, and the messy state of real work.&lt;/p&gt;

&lt;p&gt;But existing Chrome attach is not the same thing as delegation.&lt;/p&gt;

&lt;p&gt;It solves access. It may not solve boundaries.&lt;/p&gt;

&lt;p&gt;If the agent runs on the same machine and gets broad control over the user’s active browser profile, the trust model is often coarse. The user has granted local control, and now the question becomes: which tabs, sites, actions, files, tools, and workflows are actually in scope?&lt;/p&gt;

&lt;p&gt;Local execution is also not magic security. A browser agent may run locally, but the sites it acts on do not. Every logged-in action still sends requests to external services with the user’s session authority.&lt;/p&gt;

&lt;p&gt;Existing Chrome attach solves login.&lt;/p&gt;

&lt;p&gt;It does not automatically solve delegation.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Delegated real-browser access
&lt;/h2&gt;

&lt;p&gt;The fourth model is the one BrowserMan is built around:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let the agent run anywhere, but delegate access to the user’s real Chrome session while cookies and credentials stay in the browser.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent does not need the user’s password. It does not need the cookie jar exported into a cloud browser. It does not have to run on the same machine as the browser.&lt;/p&gt;

&lt;p&gt;Instead, the user’s browser stays local. The agent receives controlled browser access through a relay and extension. Commands move through the system; the browser session remains the authority source.&lt;/p&gt;

&lt;p&gt;This model is trying to solve a different problem from pure cloud browser infrastructure, isolated profiles, or local attach.&lt;/p&gt;

&lt;p&gt;The problem is not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do I give an agent any browser?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The problem is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do I let an agent use my real browser authority without handing over credentials or exporting the session?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That requires explicit delegation.&lt;/p&gt;

&lt;p&gt;The useful primitives are scope, gates, audit, approval, and revoke:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which browser is available;&lt;/li&gt;
&lt;li&gt;which sites or tabs are in scope;&lt;/li&gt;
&lt;li&gt;which task the agent is supposed to perform;&lt;/li&gt;
&lt;li&gt;which actions are safe to take automatically;&lt;/li&gt;
&lt;li&gt;which actions need human approval;&lt;/li&gt;
&lt;li&gt;what gets recorded as a receipt;&lt;/li&gt;
&lt;li&gt;how access can be revoked quickly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why “browser session” is the wrong abstraction by itself.&lt;/p&gt;

&lt;p&gt;The better abstraction is controlled browser authority.&lt;/p&gt;

&lt;h2&gt;
  
  
  The comparison is really about authority models
&lt;/h2&gt;

&lt;p&gt;These four patterns are not just implementation choices. They are authority models.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Cloud browser + cookie sync&lt;/th&gt;
&lt;th&gt;Isolated browser/profile&lt;/th&gt;
&lt;th&gt;Local attach / existing Chrome&lt;/th&gt;
&lt;th&gt;Delegated real-browser access&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Uses real logged-in state?&lt;/td&gt;
&lt;td&gt;Yes, via copied/imported cookies&lt;/td&gt;
&lt;td&gt;No, unless separately logged in&lt;/td&gt;
&lt;td&gt;Yes, current browser/profile&lt;/td&gt;
&lt;td&gt;Yes, current browser/session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent can run elsewhere?&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Usually local or managed runtime&lt;/td&gt;
&lt;td&gt;Usually local / setup-dependent&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cookies stay in the user’s browser?&lt;/td&gt;
&lt;td&gt;No, not if synced/exported&lt;/td&gt;
&lt;td&gt;Main cookies stay protected because they are absent&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main safety primitive&lt;/td&gt;
&lt;td&gt;Managed remote runtime&lt;/td&gt;
&lt;td&gt;Isolation&lt;/td&gt;
&lt;td&gt;Local trust / process boundary&lt;/td&gt;
&lt;td&gt;Explicit delegation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delegation is explicit?&lt;/td&gt;
&lt;td&gt;Depends on product&lt;/td&gt;
&lt;td&gt;Limited by isolated profile&lt;/td&gt;
&lt;td&gt;Often coarse&lt;/td&gt;
&lt;td&gt;Core product primitive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revocation model&lt;/td&gt;
&lt;td&gt;Revoke cloud session/token&lt;/td&gt;
&lt;td&gt;Delete or stop isolated profile&lt;/td&gt;
&lt;td&gt;Stop local process/access&lt;/td&gt;
&lt;td&gt;Revoke delegated access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Scalable remote browser automation&lt;/td&gt;
&lt;td&gt;Safe low-auth browsing and blast-radius reduction&lt;/td&gt;
&lt;td&gt;Local developer workflows and private tasks&lt;/td&gt;
&lt;td&gt;Controlled use of a user’s real browser authority&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;None of these models is universally best.&lt;/p&gt;

&lt;p&gt;Cloud browsers are excellent when the agent needs managed infrastructure and scale.&lt;/p&gt;

&lt;p&gt;Isolated profiles are excellent when the priority is protecting the user’s main browser from prompt injection and broad access.&lt;/p&gt;

&lt;p&gt;Local attach is excellent when the developer wants the agent to use their current machine and browser state directly.&lt;/p&gt;

&lt;p&gt;Delegated real-browser access is useful when an agent running elsewhere needs controlled access to the user’s actual logged-in browser, without exporting cookies or sharing credentials.&lt;/p&gt;

&lt;p&gt;The right choice depends on what kind of authority the workflow needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missing enterprise axis: identity and isolation
&lt;/h2&gt;

&lt;p&gt;There is another layer beyond the browser session itself.&lt;/p&gt;

&lt;p&gt;As soon as multiple agents enter the picture, the question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which agent acted, under whose authority, with what policy, and inside what isolation boundary?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is where agent identity, policy, and audit logs become more important than model capability.&lt;/p&gt;

&lt;p&gt;A company may not want one generic “AI agent” with broad browser access. It may want six agents, each with its own browser window, file scope, tool access, task boundary, and audit trail.&lt;/p&gt;

&lt;p&gt;The sales agent should not inherit the finance agent’s authority. The support agent should not be able to publish marketing pages. The research agent should not be able to issue refunds. A vendor’s agent should not get permanent access to the founder’s browser profile.&lt;/p&gt;

&lt;p&gt;This is not science fiction governance. It is basic operational hygiene.&lt;/p&gt;

&lt;p&gt;The agent needs a policy. The policy needs a scope. The scope needs an audit trail. The audit trail needs to trace back to a human or organization that intentionally delegated the authority.&lt;/p&gt;

&lt;p&gt;Without that, agents carry credentials but not identity.&lt;/p&gt;

&lt;p&gt;And credentials without identity are hard to govern.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions to ask before choosing a browser access model
&lt;/h2&gt;

&lt;p&gt;Before giving an agent browser access, ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the agent need a real existing login, or can it use a clean browser?&lt;/li&gt;
&lt;li&gt;Is the goal isolation from the user’s main profile, or controlled access to that real profile?&lt;/li&gt;
&lt;li&gt;Does the agent need to run in the cloud or from another machine?&lt;/li&gt;
&lt;li&gt;Are cookies exported, copied, synced, or kept inside the user’s browser?&lt;/li&gt;
&lt;li&gt;Which identity or policy is the agent acting under?&lt;/li&gt;
&lt;li&gt;Are multiple agents isolated by browser profile, browser window, file scope, and tool access?&lt;/li&gt;
&lt;li&gt;Can access be scoped by site, tab, task, or action class?&lt;/li&gt;
&lt;li&gt;Are high-risk actions gated before execution?&lt;/li&gt;
&lt;li&gt;Is there a receipt of what changed?&lt;/li&gt;
&lt;li&gt;Can the user revoke the delegation quickly?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The browser itself is only one part of the answer.&lt;/p&gt;

&lt;p&gt;The authority model is the product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where BrowserMan fits
&lt;/h2&gt;

&lt;p&gt;BrowserMan should not pretend every workflow needs delegated local Chrome.&lt;/p&gt;

&lt;p&gt;Some agents should use cloud browsers. Some should use isolated profiles. Some should attach locally during development. Some should use APIs or MCP servers instead of a browser at all.&lt;/p&gt;

&lt;p&gt;BrowserMan’s lane is narrower and more specific:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;an agent running anywhere, using the user’s real browser authority, without exporting cookies or sharing credentials.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The user’s signed-in Chrome stays local. Cookies and credentials stay in the browser. Access can be scoped, audited, approved, and revoked.&lt;/p&gt;

&lt;p&gt;That is the distinction.&lt;/p&gt;

&lt;p&gt;Browser agents do not just need sessions.&lt;/p&gt;

&lt;p&gt;They need a permission model for sessions.&lt;/p&gt;

&lt;p&gt;And once the browser session becomes authority, the product category is how safely that authority is delegated.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>automation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Use GitHub Gists as an AI Agent Skill Registry with gh skill</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Sat, 02 May 2026 03:52:18 +0000</pubDate>
      <link>https://dev.to/eliofbm/use-github-gists-as-an-ai-agent-skill-registry-with-gh-skill-5geb</link>
      <guid>https://dev.to/eliofbm/use-github-gists-as-an-ai-agent-skill-registry-with-gh-skill-5geb</guid>
      <description>&lt;p&gt;AI agent skills are becoming a useful packaging format.&lt;/p&gt;

&lt;p&gt;A good skill is not just a prompt. It is a small folder that usually contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;code&gt;SKILL.md&lt;/code&gt; instruction file;&lt;/li&gt;
&lt;li&gt;scripts;&lt;/li&gt;
&lt;li&gt;examples;&lt;/li&gt;
&lt;li&gt;docs;&lt;/li&gt;
&lt;li&gt;repeatable commands;&lt;/li&gt;
&lt;li&gt;tool-specific setup notes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes skills useful for real agent workflows. But it also creates a distribution problem.&lt;/p&gt;

&lt;p&gt;Where should a skill live?&lt;/p&gt;

&lt;p&gt;How should a user install it?&lt;/p&gt;

&lt;p&gt;How does the same skill reach OpenClaw, Hermes, Claude Code, Codex, Cursor, OpenCode, or other agent runtimes?&lt;/p&gt;

&lt;p&gt;One interesting answer is &lt;code&gt;gh skill&lt;/code&gt;, a GitHub CLI extension by Nicholas Spencer.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/nicholasspencer/gh-skill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use GitHub Gists as a lightweight registry for AI agent skills.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A Gist already supports multiple files, version history, forks, stars, and GitHub API access. &lt;code&gt;gh skill&lt;/code&gt; adds a convention on top so a Gist can behave like a skill package.&lt;/p&gt;

&lt;p&gt;This guide shows how to understand it, install it, and use it safely with an OpenClaw or Hermes agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;This is for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;skill authors who want a simple way to publish skills;&lt;/li&gt;
&lt;li&gt;agent builders who want to share skills across tools;&lt;/li&gt;
&lt;li&gt;OpenClaw or Hermes users who want reusable agent workflows;&lt;/li&gt;
&lt;li&gt;teams that want skills to be installable, inspectable, and versioned;&lt;/li&gt;
&lt;li&gt;operators who want their AI agent to reuse practical workflows instead of rewriting prompts every time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The job to be done is clear:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;publish or install an AI agent skill in a way that is easy for both humans and agents to inspect
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What &lt;code&gt;gh skill&lt;/code&gt; does
&lt;/h2&gt;

&lt;p&gt;According to the project README, &lt;code&gt;gh skill&lt;/code&gt; is a GitHub CLI extension for managing AI agent skills as GitHub Gists.&lt;/p&gt;

&lt;p&gt;The main commands are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh skill add https://gist.github.com/user/abc123
gh skill publish ./my-skill
gh skill search &lt;span class="s2"&gt;"git automation"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is designed around a simple convention:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;a skill is a Gist with a &lt;code&gt;SKILL.md&lt;/code&gt; file;&lt;/li&gt;
&lt;li&gt;subdirectories are flattened when stored in Gist files;&lt;/li&gt;
&lt;li&gt;install expands files back into a folder;&lt;/li&gt;
&lt;li&gt;the extension links skills into detected agent tool directories;&lt;/li&gt;
&lt;li&gt;unknown authors go through a trust gate before install.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last point matters.&lt;/p&gt;

&lt;p&gt;Skills may contain instructions and scripts. They should be reviewed before an agent uses them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install GitHub CLI
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;gh skill&lt;/code&gt; is a GitHub CLI extension, so you need &lt;code&gt;gh&lt;/code&gt; first.&lt;/p&gt;

&lt;p&gt;Check whether it is installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it is not installed, follow GitHub's official install guide:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://cli.github.com/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will also need GitHub authentication for commands that access your account, create Gists, or publish skills:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For read-only exploration, you may be able to inspect the repo without publishing anything. For real publishing, assume authentication is required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Install the extension
&lt;/h2&gt;

&lt;p&gt;Install &lt;code&gt;gh skill&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh extension &lt;span class="nb"&gt;install &lt;/span&gt;nicholasspencer/gh-skill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then check help:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh skill &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the command is available, you should see help for publishing, installing, or searching skills.&lt;/p&gt;

&lt;p&gt;If installation fails, check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whether &lt;code&gt;gh&lt;/code&gt; is authenticated;&lt;/li&gt;
&lt;li&gt;whether your GitHub CLI can install extensions;&lt;/li&gt;
&lt;li&gt;whether your network can reach GitHub;&lt;/li&gt;
&lt;li&gt;whether the extension repo is accessible.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Understand the skill folder format
&lt;/h2&gt;

&lt;p&gt;A minimal skill folder might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-skill/
  SKILL.md
  scripts/
    run.sh
  examples/
    input.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important file is &lt;code&gt;SKILL.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A simple &lt;code&gt;SKILL.md&lt;/code&gt; might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;weekly-competitor-check&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Check&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;fixed&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;list&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;of&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;competitor&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;pages&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;produce&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;cited&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;weekly&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;report."&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Weekly Competitor Check&lt;/span&gt;

Use this skill when the user wants a repeatable competitor monitoring workflow.

&lt;span class="gu"&gt;## Workflow&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Read &lt;span class="sb"&gt;`competitors.md`&lt;/span&gt;.
&lt;span class="p"&gt;2.&lt;/span&gt; Visit each public URL.
&lt;span class="p"&gt;3.&lt;/span&gt; Compare with the previous report.
&lt;span class="p"&gt;4.&lt;/span&gt; Summarize meaningful changes.
&lt;span class="p"&gt;5.&lt;/span&gt; Cite every source.
&lt;span class="p"&gt;6.&lt;/span&gt; Do not contact anyone or create accounts without approval.

&lt;span class="gu"&gt;## Output&lt;/span&gt;

Write a dated report with:
&lt;span class="p"&gt;-&lt;/span&gt; executive summary;
&lt;span class="p"&gt;-&lt;/span&gt; source list;
&lt;span class="p"&gt;-&lt;/span&gt; changes;
&lt;span class="p"&gt;-&lt;/span&gt; confidence labels;
&lt;span class="p"&gt;-&lt;/span&gt; recommended follow-up.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is enough to express a reusable agent workflow.&lt;/p&gt;

&lt;p&gt;It is much better than leaving the workflow as a one-off prompt in chat history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Publish a skill
&lt;/h2&gt;

&lt;p&gt;From the folder that contains your skill:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh skill publish ./my-skill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the extension packages the skill folder;&lt;/li&gt;
&lt;li&gt;creates or updates a GitHub Gist;&lt;/li&gt;
&lt;li&gt;stores &lt;code&gt;SKILL.md&lt;/code&gt; and related files;&lt;/li&gt;
&lt;li&gt;returns a Gist URL you can share.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exact output depends on the extension version and your GitHub authentication state.&lt;/p&gt;

&lt;p&gt;A good result should give you a URL like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://gist.github.com/your-user/abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That URL becomes the install target.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Install a skill from a Gist
&lt;/h2&gt;

&lt;p&gt;To install a skill:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh skill add https://gist.github.com/user/abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before using it, inspect what was installed.&lt;/p&gt;

&lt;p&gt;Ask your agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Please inspect the installed skill before using it.

Summarize:
1. what the skill does;
2. what files were installed;
3. whether it includes scripts;
4. what permissions or external services it may use;
5. whether it is safe to run as-is.

Do not execute scripts until I approve.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the right default posture.&lt;/p&gt;

&lt;p&gt;Skills are powerful because they can include operational instructions. That also means they deserve review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Use it with OpenClaw or Hermes
&lt;/h2&gt;

&lt;p&gt;Once installed, the skill should be available to your agent runtime or linked into a detected skill directory.&lt;/p&gt;

&lt;p&gt;For OpenClaw or Hermes, the practical workflow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;install skill → inspect SKILL.md → run a small first task → save output → refine workflow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example user message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use the weekly competitor check skill.

First, inspect the skill instructions.
Then create a `competitors.md` template for me.
Do not browse anything yet.
Do not contact anyone.
After I approve the competitor list, run the first report.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps the agent staged and controllable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Use ClawMama if you want a ready-to-use agent
&lt;/h2&gt;

&lt;p&gt;If you already run OpenClaw or Hermes, use your existing environment.&lt;/p&gt;

&lt;p&gt;If you want to try the workflow without maintaining an agent runtime first, create a ClawMama agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://t.me/clawmamarun_bot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ClawMama gives you a managed OpenClaw or Hermes agent. New users get $2 of AI credits and access to the latest ChatGPT model, so you can test a skill workflow before setting up infrastructure.&lt;/p&gt;

&lt;p&gt;A good first message is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I want to try a GitHub Gist-based AI skill workflow with `gh skill`.

Please:
1. check whether GitHub CLI is available;
2. explain what `gh skill` does;
3. install the extension only after asking me;
4. inspect any installed skill before running it;
5. do not execute scripts, publish Gists, or change external accounts without approval.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That gives the agent a clear permission boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to use this for
&lt;/h2&gt;

&lt;p&gt;Good skill candidates are repeatable workflows, not vague prompts.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;weekly competitor watch;&lt;/li&gt;
&lt;li&gt;sales call follow-up formatting;&lt;/li&gt;
&lt;li&gt;customer feedback tagging;&lt;/li&gt;
&lt;li&gt;release note drafting;&lt;/li&gt;
&lt;li&gt;GitHub issue triage;&lt;/li&gt;
&lt;li&gt;local Stripe emulator testing;&lt;/li&gt;
&lt;li&gt;browser QA checklist;&lt;/li&gt;
&lt;li&gt;support inbox routing;&lt;/li&gt;
&lt;li&gt;docs consistency checks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best skills have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a narrow job;&lt;/li&gt;
&lt;li&gt;clear inputs;&lt;/li&gt;
&lt;li&gt;clear outputs;&lt;/li&gt;
&lt;li&gt;safety rules;&lt;/li&gt;
&lt;li&gt;installable examples;&lt;/li&gt;
&lt;li&gt;minimal first-run path.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Safety notes
&lt;/h2&gt;

&lt;p&gt;Treat skills like small software packages.&lt;/p&gt;

&lt;p&gt;Before running a skill:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read &lt;code&gt;SKILL.md&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;inspect scripts;&lt;/li&gt;
&lt;li&gt;check who authored it;&lt;/li&gt;
&lt;li&gt;check whether it touches external APIs;&lt;/li&gt;
&lt;li&gt;check whether it needs credentials;&lt;/li&gt;
&lt;li&gt;prefer read-only or limited-scope tokens;&lt;/li&gt;
&lt;li&gt;require approval before sends, purchases, deletes, deployments, or account changes;&lt;/li&gt;
&lt;li&gt;keep logs of what the agent did.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is especially important when a skill can operate GitHub, Stripe, Cloudflare, email, CRM, or browser sessions.&lt;/p&gt;

&lt;p&gt;A useful rule:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The agent may inspect and draft by default.
The agent needs approval before external side effects.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;The interesting part of &lt;code&gt;gh skill&lt;/code&gt; is not only the CLI command.&lt;/p&gt;

&lt;p&gt;It is the distribution model.&lt;/p&gt;

&lt;p&gt;If skills are just local folders, they are hard to share.&lt;/p&gt;

&lt;p&gt;If skills are packaged as Gists, they become:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;linkable;&lt;/li&gt;
&lt;li&gt;inspectable;&lt;/li&gt;
&lt;li&gt;forkable;&lt;/li&gt;
&lt;li&gt;versioned;&lt;/li&gt;
&lt;li&gt;scriptable;&lt;/li&gt;
&lt;li&gt;easy for agents to install.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That helps skill authors reach users across multiple agent tools.&lt;/p&gt;

&lt;p&gt;It also helps agent users build a library of repeatable workflows instead of relying on chat history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;gh skill&lt;/code&gt; points to a useful direction for agent tooling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;skills should be small, inspectable, versioned, and easy for agents to install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For OpenClaw and Hermes users, that means workflows can become reusable capabilities.&lt;/p&gt;

&lt;p&gt;For ClawMama users, it means a ready-to-use agent can test a skill quickly, with human approval around anything risky.&lt;/p&gt;

&lt;p&gt;Start small:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh extension &lt;span class="nb"&gt;install &lt;/span&gt;nicholasspencer/gh-skill
gh skill &lt;span class="nt"&gt;--help&lt;/span&gt;
gh skill search &lt;span class="s2"&gt;"git automation"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then inspect before you run.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>github</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Test Stripe Checkout with an AI Agent Skill — No Stripe Account Needed</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Fri, 01 May 2026 05:05:42 +0000</pubDate>
      <link>https://dev.to/eliofbm/test-stripe-checkout-with-an-ai-agent-skill-no-stripe-account-needed-2mpp</link>
      <guid>https://dev.to/eliofbm/test-stripe-checkout-with-an-ai-agent-skill-no-stripe-account-needed-2mpp</guid>
      <description>&lt;p&gt;Vercel Labs released a useful agent skill for anyone building payments: a Stripe Emulator skill.&lt;/p&gt;

&lt;p&gt;The skill lets an AI agent test Stripe-like payment flows locally. It can create customers, products, prices, checkout sessions, payment intents, charges, payment methods, customer sessions, and webhooks without touching a real Stripe account.&lt;/p&gt;

&lt;p&gt;That is exactly the kind of skill that should be easy to try.&lt;/p&gt;

&lt;p&gt;This guide shows how to install Vercel Labs' Stripe Emulator skill in an OpenClaw or Hermes agent, run a first local Stripe test, and use ClawMama if you do not already have an agent runtime.&lt;/p&gt;

&lt;p&gt;No real Stripe account is required.&lt;/p&gt;

&lt;p&gt;No real Stripe secret key is required.&lt;/p&gt;

&lt;p&gt;No real payment is processed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;This guide is for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;founders testing a checkout flow before setting up production payments;&lt;/li&gt;
&lt;li&gt;developers who want a local Stripe-like API for app development;&lt;/li&gt;
&lt;li&gt;AI agent builders who want a safe payment-testing workflow;&lt;/li&gt;
&lt;li&gt;product teams that want agents to test checkout, customers, products, prices, and webhooks;&lt;/li&gt;
&lt;li&gt;skill authors who want users to try a GitHub-hosted agent skill quickly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The job is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let an AI agent test a Stripe checkout workflow locally before real payment credentials enter the system.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a good first workflow because the risk boundary is clear. The agent works against an emulator, not your production payment account.&lt;/p&gt;

&lt;h2&gt;
  
  
  The skill
&lt;/h2&gt;

&lt;p&gt;Skill / repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vercel-labs/emulate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/emulate &lt;span class="nt"&gt;--skill&lt;/span&gt; stripe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For OpenClaw, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/emulate &lt;span class="nt"&gt;--skill&lt;/span&gt; stripe &lt;span class="nt"&gt;--agent&lt;/span&gt; openclaw &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;--copy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it gives your agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a local Stripe emulator;&lt;/li&gt;
&lt;li&gt;a fake test key pattern such as &lt;code&gt;sk_test_emulated&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;realistic Stripe-like API responses;&lt;/li&gt;
&lt;li&gt;local customers, products, prices, checkout sessions, payment intents, charges, and webhooks;&lt;/li&gt;
&lt;li&gt;a hosted checkout UI for local testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The point is not to replace Stripe.&lt;/p&gt;

&lt;p&gt;The point is to let an agent test payment logic before the workflow touches real money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Create a ready-to-use agent
&lt;/h2&gt;

&lt;p&gt;If you already run OpenClaw or Hermes, use your existing agent.&lt;/p&gt;

&lt;p&gt;If you do not, create one with ClawMama:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://t.me/clawmamarun_bot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ClawMama gives you a ready-to-use OpenClaw or Hermes agent. New users get $2 of AI credits, access to the latest ChatGPT model, and a simple Telegram control surface, so you can test a skill before maintaining your own infrastructure.&lt;/p&gt;

&lt;p&gt;Think of it as creating a small agent workspace first, then giving that agent a specific skill.&lt;/p&gt;

&lt;p&gt;In ClawMama language, you create a small lobster — a focused agent that can receive a task, install a skill, run a local workflow, and report back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Ask the agent to install the Stripe Emulator skill
&lt;/h2&gt;

&lt;p&gt;Send this to your OpenClaw or Hermes agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I want to test Stripe checkout locally with Vercel Labs' Stripe Emulator skill.

Please install this skill:

npx skills add vercel-labs/emulate --skill stripe --agent openclaw -y --copy

After installing it, read the installed SKILL.md and summarize:
1. what the skill can do;
2. how to start the emulator;
3. what fake key to use;
4. which API endpoints are available;
5. any risks or setup notes.

Do not use any real Stripe API key.
Do not connect to a real Stripe account.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A good agent should first inspect the skill instructions.&lt;/p&gt;

&lt;p&gt;That matters. Skills run with agent permissions, so the agent should understand what it installed before it uses it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Start the local Stripe emulator
&lt;/h2&gt;

&lt;p&gt;The verified start command is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx emulate &lt;span class="nt"&gt;--service&lt;/span&gt; stripe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The emulator starts on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:4000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A typical startup output looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;emulate v0.5.0

  stripe  http://localhost:4000

  Tokens
  test_token_admin -&amp;gt; admin

  Config: defaults (run emulate init to customize)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first run may install the &lt;code&gt;emulate&lt;/code&gt; package from npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm warn exec The following package was not found and will be installed: emulate@0.5.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is expected for a local development tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Create a test customer
&lt;/h2&gt;

&lt;p&gt;Ask the agent to run a local request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:4000/v1/customers &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer sk_test_emulated"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"email=user@example.com"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"name=Jane Doe"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cus_Mpfm8dXJTRWa1o6e"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"customer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user@example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Jane Doe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"metadata"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"livemode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact customer ID will be different.&lt;/p&gt;

&lt;p&gt;The important field is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"livemode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That tells you this is not a real Stripe live transaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: List customers
&lt;/h2&gt;

&lt;p&gt;Now ask the agent to list customers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:4000/v1/customers &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer sk_test_emulated"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent should return a Stripe-like list response.&lt;/p&gt;

&lt;p&gt;This gives you a simple first loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create customer → list customers → inspect response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is enough to prove the emulator is running.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Create a product
&lt;/h2&gt;

&lt;p&gt;Next, test product creation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:4000/v1/products &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer sk_test_emulated"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"name=Widget"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"description=A useful widget"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"prod_6ftApyNURynBJZGu"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"product"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Widget"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A useful widget"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"active"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"metadata"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"livemode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again, the exact ID will differ.&lt;/p&gt;

&lt;p&gt;The useful part is that your agent can now test payment-related app behavior against a local API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Use it inside an app
&lt;/h2&gt;

&lt;p&gt;If your app uses the Stripe Node SDK, there is one important detail.&lt;/p&gt;

&lt;p&gt;The Stripe SDK does not automatically read an emulator base URL from an environment variable. You need to point the client at the local emulator when constructing it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Stripe&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stripe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Stripe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;STRIPE_SECRET_KEY&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2024-12-18.acacia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;localhost&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;protocol&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use a fake key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;STRIPE_SECRET_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;sk_test_emulated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This key is not from your real Stripe dashboard. It is a local test value for the emulator.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 8: Ask the agent to test a checkout flow
&lt;/h2&gt;

&lt;p&gt;Once the emulator is running, give your agent a task like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Using the local Stripe emulator at http://localhost:4000, help me test a basic checkout flow.

Use the fake key:
sk_test_emulated

Please:
1. create a customer;
2. create a product named "Starter Plan";
3. create a price for $19/month if the emulator supports recurring prices;
4. create a checkout session if supported;
5. show the local checkout URL or API response;
6. summarize what worked and what failed.

Do not use real Stripe credentials.
Do not call api.stripe.com.
Do not process a real payment.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the workflow that makes the skill useful.&lt;/p&gt;

&lt;p&gt;The agent is not just reading documentation. It is using the skill to test a real development path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 9: Add webhook testing
&lt;/h2&gt;

&lt;p&gt;The Stripe Emulator skill also supports webhooks.&lt;/p&gt;

&lt;p&gt;A good next task is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Help me test a local Stripe webhook handler with the emulator.

First, explain the webhook events this emulator can send.
Then create a minimal local webhook endpoint example.
Then show how to configure the emulator to send events to it.

Keep everything local.
Use fake keys only.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is especially useful for app teams.&lt;/p&gt;

&lt;p&gt;Webhook testing is one of the places where payment development becomes slow. A local emulator gives your agent a safe target to exercise the flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the agent should produce
&lt;/h2&gt;

&lt;p&gt;A useful result from the agent should include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;install confirmation;&lt;/li&gt;
&lt;li&gt;emulator startup command;&lt;/li&gt;
&lt;li&gt;local endpoint URL;&lt;/li&gt;
&lt;li&gt;fake key used;&lt;/li&gt;
&lt;li&gt;customer creation result;&lt;/li&gt;
&lt;li&gt;product creation result;&lt;/li&gt;
&lt;li&gt;checkout session or payment intent result;&lt;/li&gt;
&lt;li&gt;webhook notes;&lt;/li&gt;
&lt;li&gt;app integration changes;&lt;/li&gt;
&lt;li&gt;what remains untested;&lt;/li&gt;
&lt;li&gt;clear statement that no real payment was processed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That final statement matters.&lt;/p&gt;

&lt;p&gt;Payment workflows need a clean boundary between local testing and production money movement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this works well with ClawMama
&lt;/h2&gt;

&lt;p&gt;This kind of skill is a good fit for ClawMama because the user does not need to start by maintaining an agent server.&lt;/p&gt;

&lt;p&gt;The path is simpler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create a ClawMama agent → install the Stripe Emulator skill → run a local test → inspect output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a new user, that means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no VPS setup first;&lt;/li&gt;
&lt;li&gt;no custom agent runtime first;&lt;/li&gt;
&lt;li&gt;$2 of AI credits to test the workflow;&lt;/li&gt;
&lt;li&gt;access to the latest ChatGPT model;&lt;/li&gt;
&lt;li&gt;OpenClaw or Hermes as the agent runtime;&lt;/li&gt;
&lt;li&gt;Telegram as the control surface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a skill author, this also matters.&lt;/p&gt;

&lt;p&gt;A GitHub repo is powerful, but many users still need a first successful run. A ready-to-use agent gives the skill a shorter path from announcement to adoption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety notes
&lt;/h2&gt;

&lt;p&gt;A few rules keep this clean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review installed &lt;code&gt;SKILL.md&lt;/code&gt; files before using them.&lt;/li&gt;
&lt;li&gt;Do not give the agent real Stripe secret keys for this test.&lt;/li&gt;
&lt;li&gt;Do not point the app at &lt;code&gt;api.stripe.com&lt;/code&gt; while testing the emulator workflow.&lt;/li&gt;
&lt;li&gt;Remember that &lt;code&gt;npx skills add&lt;/code&gt; installs from GitHub.&lt;/li&gt;
&lt;li&gt;Remember that &lt;code&gt;npx emulate&lt;/code&gt; runs an npm package.&lt;/li&gt;
&lt;li&gt;Keep this as a local development workflow, not a production payment setup.&lt;/li&gt;
&lt;li&gt;If port &lt;code&gt;4000&lt;/code&gt; is busy, start the emulator on another port:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx emulate &lt;span class="nt"&gt;--service&lt;/span&gt; stripe &lt;span class="nt"&gt;--port&lt;/span&gt; 5000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also note that emulator state is local. If you restart it, assume you may need seed data unless you configure persistence or seed files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;Vercel Labs' Stripe Emulator skill is a strong example of what agent skills should do.&lt;/p&gt;

&lt;p&gt;It gives an agent a narrow, useful capability: test payment flows locally without real payment credentials.&lt;/p&gt;

&lt;p&gt;With ClawMama, a user can create a ready-to-use OpenClaw or Hermes agent, install the skill from GitHub, run a first test, and see a real Stripe-like response in minutes.&lt;/p&gt;

&lt;p&gt;That is the right shape for an agent skill:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;specific capability → easy install → safe first run → useful output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start with the smallest test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/emulate &lt;span class="nt"&gt;--skill&lt;/span&gt; stripe &lt;span class="nt"&gt;--agent&lt;/span&gt; openclaw &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;--copy&lt;/span&gt;
npx emulate &lt;span class="nt"&gt;--service&lt;/span&gt; stripe
curl http://localhost:4000/v1/customers &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer sk_test_emulated"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If that works, your agent has a safe local payment lab.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>testing</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Turn a Product Brief into a Launch Video with HeyGen Skills and OpenClaw</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Fri, 01 May 2026 03:38:30 +0000</pubDate>
      <link>https://dev.to/eliofbm/turn-a-product-brief-into-a-launch-video-with-heygen-skills-and-openclaw-2g2e</link>
      <guid>https://dev.to/eliofbm/turn-a-product-brief-into-a-launch-video-with-heygen-skills-and-openclaw-2g2e</guid>
      <description>&lt;p&gt;HeyGen's HyperFrames skill is a good example of why agent skills are getting interesting.&lt;/p&gt;

&lt;p&gt;It is not just another prompt.&lt;/p&gt;

&lt;p&gt;The promise is more practical: give an agent a reusable video creation workflow, then ask it to turn a product idea, website, or launch brief into video-ready assets.&lt;/p&gt;

&lt;p&gt;For a founder, marketer, or product operator, that means you can move from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I need a launch video, but I do not know where to start.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Here is my product brief. Create a short launch video plan, write the script, define the scenes, prepare the HTML-to-video workflow, and let me review before final generation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This guide shows a simple way to try that workflow with an OpenClaw or Hermes agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you will build
&lt;/h2&gt;

&lt;p&gt;You will create a small launch video workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start an OpenClaw or Hermes agent.&lt;/li&gt;
&lt;li&gt;Add the HeyGen HyperFrames skills.&lt;/li&gt;
&lt;li&gt;Give the agent a product brief.&lt;/li&gt;
&lt;li&gt;Ask it to create a launch video script.&lt;/li&gt;
&lt;li&gt;Ask it to turn the script into scenes and assets.&lt;/li&gt;
&lt;li&gt;Review the plan before generating or publishing anything.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The goal is not to promise a perfect one-click video.&lt;/p&gt;

&lt;p&gt;The goal is to use an agent to prepare the hard parts of a launch video: structure, copy, scenes, timing, and review steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is better than a normal AI chat
&lt;/h2&gt;

&lt;p&gt;A normal AI chat can write a video script.&lt;/p&gt;

&lt;p&gt;An agent with skills can do more useful work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;install or load a reusable video workflow;&lt;/li&gt;
&lt;li&gt;inspect the project files or website you provide;&lt;/li&gt;
&lt;li&gt;create structured scene assets;&lt;/li&gt;
&lt;li&gt;run commands in its workspace;&lt;/li&gt;
&lt;li&gt;produce files you can review;&lt;/li&gt;
&lt;li&gt;ask for approval before expensive or risky actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the difference between asking AI for an idea and giving an agent a job.&lt;/p&gt;

&lt;p&gt;OpenClaw and Hermes give the agent a runtime. Skills give it a method. ClawMama gives you a fast way to start testing this without maintaining the infrastructure yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an OpenClaw or Hermes agent;&lt;/li&gt;
&lt;li&gt;a short product brief, website URL, or launch idea;&lt;/li&gt;
&lt;li&gt;the HeyGen HyperFrames skills;&lt;/li&gt;
&lt;li&gt;a human review step before publishing or spending money.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want the fastest managed path, start with ClawMama:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://t.me/clawmamarun_bot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a trial agent, then use it as the place where you send the workflow below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Ask your agent to add HeyGen HyperFrames skills
&lt;/h2&gt;

&lt;p&gt;Send this to your OpenClaw or Hermes agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I want you to help me create a short product launch video workflow.

Please add the HeyGen HyperFrames skills if your environment supports agent skills:

npx skills add heygen-com/hyperframes

After installing, review the skill instructions before doing anything else.

Do not generate, publish, upload, or spend credits without asking me first.
First, prepare the script, scene plan, asset checklist, and review checklist.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;npx skills add heygen-com/hyperframes&lt;/code&gt; command installs the HyperFrames skill set.&lt;/p&gt;

&lt;p&gt;At the time of writing, the skills directory shows several related skills from &lt;code&gt;heygen-com/hyperframes&lt;/code&gt;, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;hyperframes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gsap&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hyperframes-cli&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;website-to-hyperframes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hyperframes-registry&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;remotion-to-hyperframes&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is useful because the workflow can start from a product brief or from an existing website.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Give the agent a product brief
&lt;/h2&gt;

&lt;p&gt;Use a short brief. Do not overcomplicate it.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a launch video plan for this product.

Product:
ClawMama

What it does:
ClawMama helps people launch managed OpenClaw or Hermes agents quickly, with Telegram as a simple control surface.

Audience:
Founders, marketers, operators, consultants, and small teams who want AI agents to do real work but do not want to maintain a VPS or agent runtime first.

Main benefit:
Start testing an AI agent workflow quickly, then expand later.

Tone:
Clear, practical, not hype.

Video length:
30 to 45 seconds.

Please create:
1. one simple video angle;
2. a 6-scene outline;
3. voiceover script;
4. on-screen text;
5. visual direction;
6. assets needed;
7. review checklist.

Do not generate the final video yet.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prompt keeps the agent focused.&lt;/p&gt;

&lt;p&gt;You are not asking for vague creative ideas. You are asking for a launch video production plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Review the first output
&lt;/h2&gt;

&lt;p&gt;A useful first output should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Launch Video Angle
"Your AI agent should do work, not just chat."

Scene 1: Problem
On-screen text: AI agents are useful, but setup is still too much work.
Voiceover: You want an AI agent to help with research, content, and workflows. But first you have to deploy, configure, connect, and maintain it.
Visual: messy terminal windows, server settings, scattered notes.

Scene 2: Shift
On-screen text: Start from the workflow, not the server.
Voiceover: ClawMama gives you a faster way to test an OpenClaw or Hermes agent.
Visual: product brief turning into an agent task list.

Scene 3: Control surface
On-screen text: Send tasks from Telegram.
Voiceover: Give the agent a task, review the result, and approve important actions before they happen.
Visual: chat message becoming a workflow.

Scene 4: Real work
On-screen text: Research. Content. Monitoring. Sales discovery.
Voiceover: The agent can use skills, tools, and repeatable workflows to help with real business work.
Visual: cards showing workflows.

Scene 5: Low-friction start
On-screen text: Try it before maintaining infrastructure.
Voiceover: Start with a managed runtime, then expand when the workflow proves useful.
Visual: simple start button, then workflow dashboard.

Scene 6: CTA
On-screen text: Launch your first agent workflow.
Voiceover: Start with ClawMama and test your first OpenClaw or Hermes agent.
Visual: clean end card.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is already useful before any video is generated.&lt;/p&gt;

&lt;p&gt;You now have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a clear angle;&lt;/li&gt;
&lt;li&gt;scene structure;&lt;/li&gt;
&lt;li&gt;voiceover draft;&lt;/li&gt;
&lt;li&gt;on-screen text;&lt;/li&gt;
&lt;li&gt;visual direction;&lt;/li&gt;
&lt;li&gt;a checklist for review.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 4: Ask for a HyperFrames-ready plan
&lt;/h2&gt;

&lt;p&gt;Now ask the agent to convert the creative plan into a more implementation-ready structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Turn this launch video plan into a HyperFrames-ready production outline.

For each scene, include:
- duration;
- layout;
- text blocks;
- animation idea;
- visual assets needed;
- notes for HTML/CSS implementation;
- what I should review before generation.

Keep the first version simple. Avoid complex effects unless needed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent should now think more like a production assistant.&lt;/p&gt;

&lt;p&gt;A good output might include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scene 1
Duration: 5s
Layout: split screen, left side messy setup, right side blank workspace
Text: "AI agents are useful. Setup is the bottleneck."
Animation: quick staggered appearance of terminal, config, server icons
Implementation notes: use simple cards, muted background, red/yellow friction accents
Review: confirm that the pain is setup friction, not AI quality
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where the skill workflow starts to matter.&lt;/p&gt;

&lt;p&gt;The agent is not just writing copy. It is preparing structured production inputs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Use a website as input if you already have one
&lt;/h2&gt;

&lt;p&gt;If you have a website, you can ask the agent to use it as source material.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use this website as input for the launch video:

https://clawmama.run

Create a 30-second launch video concept from the homepage.
Extract the main value proposition, audience, proof points, and CTA.
Then create the script and scene plan.

Do not submit forms or publish anything.
Ask before final generation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the &lt;code&gt;website-to-hyperframes&lt;/code&gt; skill is available in your agent environment, the agent may be able to use that path.&lt;/p&gt;

&lt;p&gt;If not, it can still read the website content through available browser or fetch tools and prepare the plan manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Add a human approval step
&lt;/h2&gt;

&lt;p&gt;Keep this rule in the workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before final video generation, show me:
1. final script;
2. scene list;
3. on-screen text;
4. assets required;
5. estimated commands or tools you will run;
6. any external services, credits, or API keys needed.

Wait for my approval.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This matters.&lt;/p&gt;

&lt;p&gt;Video generation may involve external tools, files, rendering time, or paid services. The agent should not treat that as a background action without your review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Reuse the workflow
&lt;/h2&gt;

&lt;p&gt;Once the workflow works, you can reuse it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;product launch videos;&lt;/li&gt;
&lt;li&gt;feature announcement videos;&lt;/li&gt;
&lt;li&gt;landing page explainer videos;&lt;/li&gt;
&lt;li&gt;release note videos;&lt;/li&gt;
&lt;li&gt;investor update clips;&lt;/li&gt;
&lt;li&gt;internal product demos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try prompts like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Turn this release note into a 20-second product update video plan.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Turn this landing page into a 30-second explainer video.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create three video angles for this product brief. Make one practical, one founder-led, and one feature-focused.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That repeatability is the point.&lt;/p&gt;

&lt;p&gt;You are not saving one prompt. You are building an agent workflow for launch assets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where ClawMama fits
&lt;/h2&gt;

&lt;p&gt;You can self-host OpenClaw or Hermes and run this yourself.&lt;/p&gt;

&lt;p&gt;But if your goal is to test the workflow quickly, ClawMama gives you a simpler path:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;start a managed OpenClaw or Hermes agent;&lt;/li&gt;
&lt;li&gt;send it the skill installation task;&lt;/li&gt;
&lt;li&gt;paste your product brief;&lt;/li&gt;
&lt;li&gt;review the script and scene plan;&lt;/li&gt;
&lt;li&gt;decide whether to generate final assets;&lt;/li&gt;
&lt;li&gt;expand the workflow later if it proves useful.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the right order for most teams:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;workflow first, infrastructure later
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Safety notes
&lt;/h2&gt;

&lt;p&gt;A few practical rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review installed skills before using them for real work.&lt;/li&gt;
&lt;li&gt;Do not give an agent unlimited access to paid services.&lt;/li&gt;
&lt;li&gt;Ask for approval before final generation, publishing, sending, or deleting.&lt;/li&gt;
&lt;li&gt;Keep source assets and brand claims accurate.&lt;/li&gt;
&lt;li&gt;Treat the first video as a draft, not a finished brand campaign.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent can help move faster. You still own the final creative decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;HeyGen HyperFrames is interesting because it shows what agent skills can become: reusable production workflows, not just better prompts.&lt;/p&gt;

&lt;p&gt;With OpenClaw or Hermes, you can ask an agent to install the skill, read a product brief, plan a launch video, prepare scene structure, and wait for your approval before final generation.&lt;/p&gt;

&lt;p&gt;That is a practical first step toward agent-powered launch workflows.&lt;/p&gt;

&lt;p&gt;Start small:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;product brief → script → scenes → review checklist → generation only after approval
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If that saves time, you have a workflow worth keeping.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Browser access is not one permission</title>
      <dc:creator>Eli</dc:creator>
      <pubDate>Fri, 01 May 2026 01:49:21 +0000</pubDate>
      <link>https://dev.to/eliofbm/browser-access-is-not-one-permission-f2</link>
      <guid>https://dev.to/eliofbm/browser-access-is-not-one-permission-f2</guid>
      <description>&lt;p&gt;Do not give an agent “browser access.”&lt;/p&gt;

&lt;p&gt;Give it read access. Give it draft access. Maybe give it update access with receipts. Put a gate in front of publish, refund, delete, merge, and spend.&lt;/p&gt;

&lt;p&gt;The browser is not the hard part anymore. A logged-in browser session is authority, and authority needs shape.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bug is the permission shape
&lt;/h2&gt;

&lt;p&gt;Most browser-agent demos compress the whole problem into one checkbox:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the agent use a browser?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question is too broad.&lt;/p&gt;

&lt;p&gt;A browser agent that reads public pages is one thing. A browser agent that operates inside your logged-in Chrome session is another. Once the agent can see private dashboards, submit forms, edit CRM records, issue refunds, publish content, or change ad budgets, “browser access” stops being a tool permission.&lt;/p&gt;

&lt;p&gt;It becomes delegated authority.&lt;/p&gt;

&lt;p&gt;And delegated authority should not be one permission.&lt;/p&gt;

&lt;h2&gt;
  
  
  A signed-in browser is authority
&lt;/h2&gt;

&lt;p&gt;A signed-in browser is where work actually happens.&lt;/p&gt;

&lt;p&gt;It has your CRM, support inbox, admin dashboards, analytics, CMS, ad accounts, billing portals, SaaS consoles, customer records, docs, and internal tools.&lt;/p&gt;

&lt;p&gt;That is why browser agents are useful. They can operate where APIs are incomplete, absent, fragmented, or too slow to integrate.&lt;/p&gt;

&lt;p&gt;But that is also why they are dangerous.&lt;/p&gt;

&lt;p&gt;If the agent can use the same browser session you use, it may be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read private customer data,&lt;/li&gt;
&lt;li&gt;draft replies from your account,&lt;/li&gt;
&lt;li&gt;update CRM fields,&lt;/li&gt;
&lt;li&gt;route tickets,&lt;/li&gt;
&lt;li&gt;submit refunds,&lt;/li&gt;
&lt;li&gt;cancel subscriptions,&lt;/li&gt;
&lt;li&gt;merge customer accounts,&lt;/li&gt;
&lt;li&gt;publish pages,&lt;/li&gt;
&lt;li&gt;launch posts,&lt;/li&gt;
&lt;li&gt;change ad budgets,&lt;/li&gt;
&lt;li&gt;buy things,&lt;/li&gt;
&lt;li&gt;or change admin settings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are not the same action.&lt;/p&gt;

&lt;p&gt;They should not share the same permission.&lt;/p&gt;

&lt;h2&gt;
  
  
  The action-class ladder
&lt;/h2&gt;

&lt;p&gt;The useful abstraction is not “browser access.”&lt;/p&gt;

&lt;p&gt;The useful abstraction is action class.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Read
&lt;/h3&gt;

&lt;p&gt;The agent can inspect pages, dashboards, tickets, records, reports, and private context.&lt;/p&gt;

&lt;p&gt;This is the lowest-risk class, but it is still not risk-free. Read access can expose customer data, internal metrics, private messages, and credentials visible in the UI.&lt;/p&gt;

&lt;p&gt;Still, for many workflows, read access can run with relatively broad autonomy.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Draft
&lt;/h3&gt;

&lt;p&gt;The agent can prepare a reply, CRM note, campaign edit, page change, support response, or internal summary, but it does not submit it.&lt;/p&gt;

&lt;p&gt;Drafting is where many agents should start. It saves time without crossing the line into irreversible action.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Annotate
&lt;/h3&gt;

&lt;p&gt;The agent can add non-destructive metadata: internal notes, tags, labels, comments, todo items, or follow-up tasks.&lt;/p&gt;

&lt;p&gt;This is more active than drafting, but usually less risky than changing core records or sending external messages.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Update
&lt;/h3&gt;

&lt;p&gt;The agent can change fields, statuses, owners, routing, priorities, labels, or internal records.&lt;/p&gt;

&lt;p&gt;This is where receipts start to matter. If an agent changes a CRM field or ticket state, you should know what changed, when it changed, and why.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Submit
&lt;/h3&gt;

&lt;p&gt;The agent can send a form, reply to a customer, create an external-facing record, or trigger a workflow.&lt;/p&gt;

&lt;p&gt;Submit actions need more care because they leave the internal system and affect other people.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Publish
&lt;/h3&gt;

&lt;p&gt;The agent can push content live: website pages, docs, social posts, changelogs, campaigns, or public updates.&lt;/p&gt;

&lt;p&gt;Drafting a page and publishing a page are different permissions.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Refund, cancel, merge, delete
&lt;/h3&gt;

&lt;p&gt;These actions can affect customers, accounts, money, history, or compliance.&lt;/p&gt;

&lt;p&gt;They are often hard to reverse, and sometimes impossible to reverse cleanly.&lt;/p&gt;

&lt;p&gt;Read access and refund access should never be the same permission.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Spend
&lt;/h3&gt;

&lt;p&gt;The agent can move money: ad budgets, purchases, paid APIs, wallets, subscriptions, cloud resources, or agent-to-agent payments.&lt;/p&gt;

&lt;p&gt;Viewing a budget and spending a budget are different permissions.&lt;/p&gt;

&lt;p&gt;Spend actions need explicit ceilings, approvals, and circuit breakers.&lt;/p&gt;

&lt;h2&gt;
  
  
  A better default policy
&lt;/h2&gt;

&lt;p&gt;A practical browser-agent policy can start simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read and draft&lt;/strong&gt; can often run freely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Annotate and update&lt;/strong&gt; need receipts and rollback awareness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Submit and publish&lt;/strong&gt; need approval gates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refund, cancel, merge, delete, and spend&lt;/strong&gt; need explicit gates, limits, and after-action receipts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This does not mean every workflow needs a heavy compliance system.&lt;/p&gt;

&lt;p&gt;It means the agent should not receive one ambient permission called “use browser.”&lt;/p&gt;

&lt;p&gt;A support triage agent might read tickets freely, draft replies freely, add internal notes with receipts, but require approval before refunding a customer.&lt;/p&gt;

&lt;p&gt;A marketing agent might draft posts freely, propose edits freely, but require approval before publishing.&lt;/p&gt;

&lt;p&gt;A sales agent might summarize a lead freely, draft a follow-up freely, but require confirmation before sending from a real inbox or updating a CRM opportunity stage.&lt;/p&gt;

&lt;p&gt;A finance agent might view invoices freely, extract data freely, but require explicit approval before paying, refunding, or changing billing settings.&lt;/p&gt;

&lt;p&gt;That is the difference between a useful agent and a risky one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Execution trace vs authority receipt
&lt;/h2&gt;

&lt;p&gt;Browser traces are useful.&lt;/p&gt;

&lt;p&gt;They tell you what the agent saw, clicked, requested, rendered, and logged. Screenshots, DOM snapshots, network requests, and CDP logs make browser agents easier to debug.&lt;/p&gt;

&lt;p&gt;But execution traces are not enough.&lt;/p&gt;

&lt;p&gt;If an agent submits a refund, publishes a page, changes an ad budget, or updates a CRM record, the important question is not only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What happened in the browser?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is also:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why was the agent allowed to do that?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the authority receipt.&lt;/p&gt;

&lt;p&gt;A good authority receipt should answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which browser session was delegated?&lt;/li&gt;
&lt;li&gt;Which site or app was in scope?&lt;/li&gt;
&lt;li&gt;What action class was attempted?&lt;/li&gt;
&lt;li&gt;Was the action reversible?&lt;/li&gt;
&lt;li&gt;Was approval required?&lt;/li&gt;
&lt;li&gt;Who or what approved it?&lt;/li&gt;
&lt;li&gt;What changed before and after?&lt;/li&gt;
&lt;li&gt;Can access be revoked?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The browser trace tells you what happened.&lt;/p&gt;

&lt;p&gt;The authority receipt tells you why it was allowed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real workflows make this obvious
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Sales workflow
&lt;/h3&gt;

&lt;p&gt;A sales agent may need to read LinkedIn, Gmail, HubSpot, Salesforce, call notes, and a company website.&lt;/p&gt;

&lt;p&gt;Summarizing the lead is low-risk.&lt;/p&gt;

&lt;p&gt;Drafting the follow-up is still fairly safe.&lt;/p&gt;

&lt;p&gt;Sending the email from a real inbox is a different action.&lt;/p&gt;

&lt;p&gt;Updating the CRM stage is another.&lt;/p&gt;

&lt;p&gt;Creating a discount, changing contract terms, or booking a customer-facing meeting may require approval.&lt;/p&gt;

&lt;h3&gt;
  
  
  Support workflow
&lt;/h3&gt;

&lt;p&gt;A support agent may read a ticket, inspect order history, summarize context, and draft a response.&lt;/p&gt;

&lt;p&gt;But issuing a refund, cancelling a subscription, merging accounts, or changing account status should cross a gate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Publishing workflow
&lt;/h3&gt;

&lt;p&gt;A content agent may draft a page, update a preview, generate screenshots, and check links.&lt;/p&gt;

&lt;p&gt;Publishing the page live is a separate permission.&lt;/p&gt;

&lt;p&gt;So is deleting a page, changing canonical URLs, editing pricing pages, or posting from a brand account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ads workflow
&lt;/h3&gt;

&lt;p&gt;An ads agent may inspect campaign performance and recommend budget movement.&lt;/p&gt;

&lt;p&gt;Changing the budget is different.&lt;/p&gt;

&lt;p&gt;Launching a campaign is different again.&lt;/p&gt;

&lt;p&gt;Turning on spend should have ceilings and circuit breakers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Coding workflow
&lt;/h3&gt;

&lt;p&gt;An in-browser PR testing agent may click through a product, reproduce bugs, and report findings.&lt;/p&gt;

&lt;p&gt;That is different from changing production settings, migrating data, or editing customer-facing configuration.&lt;/p&gt;

&lt;p&gt;Same browser, different authority.&lt;/p&gt;

&lt;h2&gt;
  
  
  What good infrastructure should expose
&lt;/h2&gt;

&lt;p&gt;Browser-agent infrastructure should expose action boundaries directly.&lt;/p&gt;

&lt;p&gt;At minimum:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;per-site scopes,&lt;/li&gt;
&lt;li&gt;per-action scopes,&lt;/li&gt;
&lt;li&gt;read vs write separation,&lt;/li&gt;
&lt;li&gt;approval gates,&lt;/li&gt;
&lt;li&gt;before/after diffs,&lt;/li&gt;
&lt;li&gt;receipts,&lt;/li&gt;
&lt;li&gt;revocation,&lt;/li&gt;
&lt;li&gt;loop detection,&lt;/li&gt;
&lt;li&gt;spend limits,&lt;/li&gt;
&lt;li&gt;and kill switches.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The boring pieces are the product.&lt;/p&gt;

&lt;p&gt;Not because autonomy is unimportant, but because autonomy without boundaries becomes operational debt.&lt;/p&gt;

&lt;p&gt;A browser agent that can do everything is impressive in a demo. In production, you want the agent to know when it can act, when it should draft, when it should ask, and when it must stop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where BrowserMan fits
&lt;/h2&gt;

&lt;p&gt;BrowserMan is built around delegated real-browser access.&lt;/p&gt;

&lt;p&gt;The point is not just to give an AI agent a browser. The point is to let agents use the real Chrome session you already use, while keeping cookies local and making access controllable.&lt;/p&gt;

&lt;p&gt;That matters because useful browser work happens inside logged-in tools.&lt;/p&gt;

&lt;p&gt;But logged-in tools need boundaries.&lt;/p&gt;

&lt;p&gt;BrowserMan’s category is controlled browser authority: agents can operate from anywhere, use real sessions when delegated, and work inside scopes that can be audited, gated, and revoked.&lt;/p&gt;

&lt;p&gt;That is the difference between “the agent has a browser” and “the agent has the right browser authority for this task.”&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical rule
&lt;/h2&gt;

&lt;p&gt;Do not ask whether an agent should have browser access.&lt;/p&gt;

&lt;p&gt;Ask what kind.&lt;/p&gt;

&lt;p&gt;Can it read?&lt;br&gt;
Can it draft?&lt;br&gt;
Can it annotate?&lt;br&gt;
Can it update?&lt;br&gt;
Can it submit?&lt;br&gt;
Can it publish?&lt;br&gt;
Can it refund?&lt;br&gt;
Can it delete?&lt;br&gt;
Can it spend?&lt;/p&gt;

&lt;p&gt;Those are different questions.&lt;/p&gt;

&lt;p&gt;They deserve different answers.&lt;/p&gt;

&lt;p&gt;Browser access is not one permission.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>automation</category>
      <category>security</category>
    </item>
  </channel>
</rss>
