Key takeaways
- A browser profile is a credential store, and an agent given one inherits all of it.
- The danger is the combination: your sessions plus instructions from strangers.
- A dedicated profile makes a compromise cost a job board session rather than your email.
- An egress allowlist defeats exfiltration without needing to detect the attack.
- Verify from recorded actions, not from the agent’s own account of what it did.
What you actually hand over
A browser profile is a credential store. It holds session cookies for your email, your bank, your employer’s systems and everything else you have not signed out of — which is everything.
Running an agent in that profile grants it all of them at once. Nothing about the job-application task required access to your inbox, but the profile does not distinguish, and neither does an agent that has been persuaded by something it read.
A password manager extension raises the ceiling further. It will autofill on request, which means the agent’s reach extends beyond the sessions currently open to anything the vault can unlock — and nothing about filling a job application needed that.
The combination that makes it dangerous
On its own, a browser with your sessions is just your browser. On its own, an agent that follows instructions in text is a curiosity. Together they are a system that holds your credentials and takes instructions from strangers.
Every web page it visits is untrusted input. A page can contain text directed at the agent, invisible to you, and the agent has no reliable way to distinguish page content from your instruction.
A job board is a particularly exposed surface for this, because much of its content is written by third parties. A job description is a document from someone you have never met, rendered on a site you trust, read by an agent holding your sessions.
Use a dedicated profile, always
The single most effective step is a separate browser profile that has never been signed into anything except what the task requires. Not a private window in your main browser — a genuinely separate profile with its own cookie store.
Sign it into the job boards it needs and nothing else. If it is compromised, the loss is a job board session rather than your email, and that difference is the entire security posture.
A container or virtual machine is better again where the task warrants it, because it bounds what a compromise reaches beyond the browser — the filesystem, the local network and anything else running on the machine.
- A separate profile, not an incognito window of your main one
- Signed into only the sites the task requires
- No password manager extension installed
- Cleared between sessions where practical
- Never the profile you use for banking or work systems
| Setup | Exposed | Effort |
|---|---|---|
| Your normal profile | Every session you hold | None |
| Incognito window | Still the same installation and extensions | None |
| Dedicated profile | Job board sessions only | Minutes |
| Container or VM | A disposable environment | An afternoon |
| VM plus egress allowlist | Almost nothing worth taking | An afternoon |
Restrict where it can go
Exfiltration requires reaching an attacker-controlled destination. An allowlist of domains the agent may navigate to turns a successful injection into a failed one, because the instruction to send data somewhere cannot be carried out.
This is more effective than trying to detect malicious instructions, and considerably easier to reason about. You do not need to anticipate the attack; you need to make the payoff unreachable.
Enforce it below the browser as well. A page can issue a request without navigating anywhere, so restricting outbound traffic at the container or network level covers the channels a navigation allowlist does not see.
Give it the narrowest task you can
Access is not only about the profile. An agent that can read a posting and fill a form needs no ability to send email, download files or install anything, and every capability it does not have is one an injected instruction cannot reach for.
Keep reading separate from acting where the tooling allows. Content the agent reads should inform a proposal, and a separate validated path should decide whether that action is permitted — so page text can influence the suggestion and not the outcome.
Prefer a session the agent cannot extend. An expiring session scoped to the sites it needs is much better than a stored password, because the worst case is bounded in time as well as in reach.
Watch what it did, not what it said
Record the navigation history, every form submission with its values, and screenshots at decision points. The agent’s own account of what it did is not evidence — it is output from the same system you are investigating.
Review those records the first several runs rather than trusting the summary. This is where people discover their agent logged into something they did not expect, or submitted a form twice, and it is cheap to catch early.
Watch for the shapes that suggest steering rather than difficulty: navigation outside the expected domains, an unusual number of steps on one page, the same action repeated, or an attempt to use something the task should not require. Any of those is worth halting on.
Frequently asked questions
Can I run a browser agent in my normal browser profile?
You should not. That profile holds live sessions for your email, bank and work systems, and the agent inherits all of them while also taking instructions from every page it reads.
Is an incognito window enough isolation?
No. It shares the browser installation and often extensions, and it is not a credential boundary. Use a genuinely separate profile with its own cookie store.
What is the most effective single control?
A domain allowlist for navigation, enforced below the browser too. Exfiltration needs a destination, so making it unreachable defeats the attack without detecting it.
How do I verify what the agent did?
From navigation history, recorded form submissions and screenshots — not from the agent’s own summary, which comes from the same system you are trying to check.
Why is a password manager extension a problem here?
It autofills on request, extending the agent reach beyond currently open sessions to anything the vault can unlock. Filling a job application never needed that.
What signals suggest the agent is being steered?
Navigation outside the expected domains, unusual step counts on one page, repeated identical actions, or attempts to use capabilities the task does not require.
Check this against your own resume
Scan your CV against a real job description, or build a parse-safe one from scratch. Your first scan costs nothing.
