Skip to main content
Cory Trimm
5/11/2026 · 12 min read · aisecurityagentsbrowser-usegovernmentagentic-auth

TLDR: The most dangerous thing about a compromised browser-use agent session is that the system on the other end will never know it wasn’t you. The session can be manipulated by the pages it visits. Your dry run doesn’t fully replicate what happens live. And the credentials an agent uses to act on your behalf are also the credentials that make you responsible for everything it does. Here’s how to build sessions that are actually safer - and what honest guarantees you can make.

This is Part 2 of a three-part series. Part 1 covers the NIST IAL/AAL identity framework for agents. Part 3 covers what system owners need to build to be agent-aware.


The Session Model That Breaks Everything

In a traditional web session, the threat model is: someone unauthorized might steal your credentials and impersonate you. Defenses - MFA, session timeouts, behavioral anomaly detection - assume a human is on the other end and that behavior deviating from that human’s norms is a signal.

Browser-use agents break that model in both directions.

The agent is you, by design - using your credentials, your session, your scope. Its behavior may look very different from your human browsing patterns: longer uninterrupted sessions, more sequential navigation, fewer erratic mouse movements, more systematic form interaction. The anomaly detection tuned to catch credential theft might not flag an authorized agent at all - or might flag legitimate agent sessions constantly.

The threat model built for human credential theft doesn’t map to the agent case. You need to build a different one - one where the threat isn’t an unauthorized party gaining access, but an authorized session doing things the authorizing human never intended.

Prompt Injection: The Threat Inside the Page

This is the most underappreciated risk in browser-use deployments, and it’s acute for government sites specifically.

Here’s the attack: an agent is navigating a web page as part of its task. That page contains content - visible or hidden - that looks like instructions to the agent. The agent follows them. Actions that were never in the user’s original task now happen under the user’s credentials.

The variations:

For government sites specifically: federal websites are maintained by many different teams with highly variable security posture. Third-party analytics scripts, content management systems, form libraries, and accessibility overlays are common. Any of them is a potential injection surface. A compromised CDN or a reflected XSS in a benefits calculator is all it takes.

The core mitigation principle: the agent’s permitted action set should be defined entirely by the user’s original instructions - not by content encountered on the page. Any action the page suggests that wasn’t derivable from the original task should require explicit human step-up before execution. This single rule eliminates entire categories of injection attacks.

Additional layers worth implementing:

None of these are bulletproof. Prompt injection is an unsolved problem in the research community. The goal is defense in depth - making the attack expensive enough that it isn’t the path of least resistance.

The Dry Run Problem

Dry-run mode is the right instinct. Before an agent takes a real action in a real system, it should rehearse the flow and show the human what it plans to do. The human approves, the agent executes.

The problem: the dry run and the live run are not the same session. For government web forms specifically, the gap can be significant.

The sitemap instinct is a reasonable starting point - government sitemaps surface public page structure, Last-Modified timestamps, and known URL patterns. But authenticated pages, where the real consequence lives, are almost never in sitemaps. The public structure tells you relatively little about the authenticated flow.

What actually helps:

Form structure fingerprinting - rather than comparing screenshots, the agent extracts the semantic structure of a form: field names, types, required validators, action endpoints, hidden field values that don’t contain session-specific tokens. It compares that canonical structure between dry run and live execution. If the structure has changed beyond a defined threshold, it surfaces to the human before proceeding. This survives minor UI and style changes but catches structural drift - new required fields, changed endpoints, added validation steps.

HTTP freshness signals - before live execution, the agent checks Last-Modified and ETag headers on key pages. If a page has changed since the dry run, it pauses. Not comprehensive, but a low-cost trip wire for significant updates. Public government pages often have inconsistent cache headers, but it’s worth checking.

Staged step-by-step execution - rather than full dry-run then full live execution, the agent advances one meaningful step at a time, shows the human the actual live page state, and waits for confirmation before the next action. The human sees the real session, not a rehearsal. Trades speed for fidelity. For high-consequence flows, that trade is worth making.

Shadow credentials - run the dry run against a test account with identical permissions to the target account. Some government systems support test environments (many IRS and SSA developer sandbox programs exist for this reason); most don’t for end-user flows. Where available, this is the closest approximation to production fidelity without touching real data.

Known system manifests - for frequently-accessed government systems (SAM.gov, Pay.gov, Benefits.gov, state benefits portals), maintain a community-curated manifest of expected form structures, known endpoint patterns, and common page sequences. The agent validates its current session against the manifest before executing. Think of it like a browser extension blocklist - not perfect, but systematically maintained and improvable over time. The governance question matters: an out-of-date manifest that fails to flag a structural change creates false confidence rather than safety. Treat any manifest as a supplement to staged execution, not a replacement for it.

There’s no perfect dry-run solution. Layer what you can, be upfront with users about what it does and doesn’t cover, and build step-up triggers for the moments where live execution diverges from the plan.

A Different Model of Human Presence

Standard authentication asks: was the human present at login? The agent makes that question awkward - the human was present at login, but the agent is present at action.

Browser-use agents make a different question worth asking: was the human actually present and consenting when this specific action happened?

That’s closer to what high-assurance auth is really trying to guarantee than a stored credential an agent replays for hours.

The baseline: the browser session running remotely streams back to the supervising human via WebSocket. The human watches the agent work in real time - literally watching over its shoulder. The agent pauses and surfaces to the human at defined trigger points: an MFA prompt, a CAPTCHA, a submit button on a consequential form. The human steps in, completes the sensitive step, and hands control back. The agent never had unilateral authority over the actions that matter most.

Extensions of this pattern worth thinking through:

Cryptographic intent signing - before a high-stakes action, the agent presents a structured summary of the proposed action (form data, target endpoint, expected outcome) to the human for explicit approval, signed with Face ID, fingerprint, or hardware key. The agent cannot proceed without a valid signature. You get hardware-backed assurance on individual actions even though the agent did all the preparation. The patent landscape for the AI-agent-specific case is genuinely thin - this is open ground for anyone building in this space.

Biometric step-up on consequential actions - a defined action type (submit, pay, delete, modify a record) triggers a push to the human’s phone. Face ID or fingerprint required to release a short-lived action token. The agent cannot proceed without it. For that specific action, you get strong evidence of human presence at the moment of decision - which is the intent behind high-assurance authentication, even if it doesn’t satisfy NIST’s AAL3 technical requirements (hardware-bound authenticator, verifier impersonation resistance).

Split-brain maker-checker - the agent holds read credentials. The human holds write credentials. The agent navigates, extracts, and presents the proposed action in plain language. The human reviews and executes independently. The downstream system only ever sees a human-initiated write. This is the cleanest architectural pattern for IAL3 systems - the agent never touches the write surface at all. The practical constraint: it requires either the human to re-navigate to the same point in the form flow, or the system to accept agent-prepared data via an API. Most government web forms support neither. It’s the right model to design toward and to advocate for in new system procurement.

Temporal scoping with mandatory re-authorization - tokens handed to agents expire on a short clock: 15 minutes, 30 minutes. The agent must surface to the human and request re-authorization to continue. Creates mandatory human checkpoints without requiring continuous supervision. Limits blast radius if the session is compromised mid-task.

Each of these moves the question from “who started this session” to “who authorized this specific action.” That’s the right frame for agent security - build toward it intentionally.

What This Means Operationally

If you’re building browser-use agent sessions against government or regulated systems:

  1. Define your navigation scope before deployment - what URLs will the agent visit? What third-party scripts run on those pages? Is there a known XSS history for the target site? The permitted navigation set should be as narrow as the task allows.
  2. Lock the action scope to the original task - any action not derivable from the user’s original instructions requires step-up confirmation. Build this as a policy, not a heuristic.
  3. Be explicit about dry-run guarantees - tell users what the dry run does and doesn’t cover. Implement form fingerprinting and HTTP freshness checks as minimum trip wires. Don’t imply the dry run is a full preview of live behavior.
  4. Define step-up triggers explicitly - which actions pause for human confirmation? Which require biometric approval? Document and enforce these before deployment.
  5. Log what the agent sees, not just what it does - if something goes wrong, you need to reconstruct what content the agent was exposed to, not just which actions it took. The page content at the time of action is part of the evidence.

The goal isn’t a perfectly safe browser-use session - that doesn’t exist yet. The goal is a session where the failure modes are known, the blast radius is limited, and the human is present for the decisions that actually matter. Most of the hard problems here are solvable with architecture, not just tooling. Define the scope. Lock the actions. Verify the plan against the live session. Make the human present at the consequential moments.

Part 3 covers the other side of this: what needs to change in the systems being accessed so they can actually apply policy when an agent shows up. Read Building AI Agent-Aware Systems.


Working on browser-use agent security for government or regulated systems? I’d love to hear what you’re running into. Reach out.

Enjoyed this? Get the occasional post in your inbox.

Engineering leadership, AI experiments, and things worth sharing. No weekly cadence — just signal.

No spam. Unsubscribe anytime. · Prefer a reader? RSS Feed

Related Posts

← Back to Blog