DEV Community

Eli
Eli

Posted on

Existing Chrome profiles are becoming a product primitive for agents

AI agents are getting better at planning, calling tools, and running longer workflows.

But the boring part keeps winning: the agent still has to log in.

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.

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

That is the right direction. But it is only half the product.

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.

The real product question is no longer:

Can the agent open a browser?

It is:

Which browser authority did the agent receive, and what boundary stops it before the risky action?

The browser-auth tax is becoming visible

For simple demos, authentication looks like a setup step. Log in once, save state, run the flow.

For real workflows, authentication becomes an ongoing tax:

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

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.

None of that is model intelligence. It is browser-auth infrastructure.

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

Why agents collapse back to the existing Chrome profile

The existing Chrome profile works because it already contains the things web apps use to recognize a real user:

  • cookies and session state,
  • OAuth/MFA completion,
  • extensions,
  • device and enterprise context,
  • user preferences,
  • the exact app state the human already uses.

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.

A browser profile is not a loose credential bundle. It is a live authority surface.

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:

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

The existing Chrome profile solves auth, but it creates a new product problem: delegation.

Three lanes are emerging

There are at least three browser-agent infrastructure lanes forming.

1. Cloud browser infrastructure

Cloud browsers are useful for scale, clean environments, testing, extraction, crawling, and controlled remote execution.

They are often the right answer when the workflow does not need the user's actual signed-in browser state.

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.

2. Local or browser-resident agents

Local browser agents and Chrome-extension agents solve a different problem: the agent lives with the browser.

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.

This lane answers:

What if the agent lives inside my browser?

3. Delegated real-browser access

The delegated-access lane answers a different question:

What if my agent lives somewhere else, but needs my real browser session without copying the keys?

This is BrowserMan's lane.

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.

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.”

The wrong abstraction is “browser access.” The useful abstraction is “which session authority is being delegated?”

The browser is the execution boundary

For browser agents, the browser is not just an input/output device.

It is the execution boundary where identity, UI, session authority, and side effects meet.

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.

If an agent bypasses or guesses around that boundary, the system loses important context.

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:

Action class Example Default boundary
Read-only lookup Check order status Usually allow within scope
Reversible update Add CRM note Log and sample-review
Draft Draft email/refund/social post Human review before send
External side effect Send email, publish, refund, checkout Explicit approval
Irreversible/high-risk Delete, spend, price change, account action Strong approval + receipt

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

Approval is not always friction

Some agent products pitch “no approval queue” as the value.

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.

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.

“No approval queue” sounds fast until the agent can publish, refund, email, or delete.

The key is not to require approval everywhere. The key is to attach approval to action risk.

A good approval surface should not simply ask:

Allow?

It should answer:

  • What changed?
  • Which account/session/merchant/customer is involved?
  • What authority will be used?
  • What will happen next?
  • Can this action be undone?

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.

Side effects need receipts

Approval is the gate before the side effect. A receipt is the proof after it.

Browser agents need both.

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.

The receipt might include:

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

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.”

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.

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

What BrowserMan changes

BrowserMan exists for the delegated-access case.

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.

That distinction matters because authenticated browser work is not just about solving login. It is about preserving the boundary where real web authority lives.

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.

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:

Use the existing session. Delegate it deliberately. Put boundaries around risky actions. Leave receipts.

That is how browser agents move from demos to production work.

Top comments (0)