I Put an Agent in My Browser. Here's How to Use It.
A practical walkthrough of the built-in agent, browser MCP, Cowork files, schedules, memory, and the controls I added because I use this browser myself.
A practical walkthrough of the built-in agent, browser MCP, Cowork files, schedules, memory, and the controls I added because I use this browser myself.
Press ⇧⌘A, give Straight Up Browser a model, and the agent can work through the real page in front of you. It can also open hidden pages, stage files in one folder, run recurring tasks, and hand the browser to Codex or Claude Code, but every one of those powers has a separate boundary.
In the original post about Straight Up Browser, I complained about browsers bolting AI into a sidebar. Browser 2 has an AI sidebar. I know.
The difference, for me, is whether the AI is decoration or whether it can finish a real browser task. I did not need another box that summarizes text I could already read. I wanted an agent that could use the browser on my desk, work in the tabs where I am already signed in, stop at the parts only I should handle, and leave enough of a record that I could tell what happened afterward.
I built quite a bit of that before realizing I needed my own guide. Fair. This is the short path from "what does the sparkle button do?" to the parts I find genuinely useful.

Start with one page and one question. Turn on the two required authorization switches, then leave the rest alone for now.
⌘,, then open Agent.⇧⌘A, or click the sparkle button.
Read the page in front of me. Give me the five points worth remembering, call out anything that looks unsupported, and do not follow links yet.
The response streams into the panel. Browser actions appear as tool steps instead of disappearing behind a spinner, and the stop button cancels the run.
If you use a remote provider, the prompt and the context needed for the run go directly from your Mac to that provider. They do not pass through a service I run. Browser initially sends the current Page title and URL as untrusted metadata. The body is sent only after the agent uses a snapshot or content tool and returns the needed result to the model. If you use Ollama or LM Studio, model traffic can stay on the Mac and no API key is required. Any API key I enter for another provider lives in Keychain.

Summaries are the shallow end. The useful part starts when the agent can follow a small trail without making me shuttle links between tabs.
Open the three linked pricing pages in the background. Compare the plans, keep the source links, and stop before submitting anything.
The background pages are ordinary WebKit tabs. They use the same browser sessions as the rest of the app, which means they can use a site where I am already signed in. They have stable Page IDs, so the agent can keep working in one while I read another. It waits for observable page changes and rejects a stale button or field instead of pretending the old reference still exists.

For a larger same-site comparison, I can ask it to give one product to each child run and combine the results. Delegation needs approval. The child runs get their own page leases and smaller slices of the parent budget, bounded by the Page, origin, and browser-session authority I gave the parent. They cannot give themselves more time, more pages, or more authority than the parent had. Parallel research is useful. Unlimited parallel research is a very efficient way to turn money into heat.
Reading a page is different from clicking something. Clicking is different from sending, publishing, deleting, uploading, or spending money.
When a proposed action crosses one of those boundaries, the panel shows the tool, the target, whether data may leave the Mac, and three honest choices: Deny, Allow Once, or Allow for This Run. That last choice stays bound to the same resolved target and invocation, not a blanket grant for the tool or website. A scheduled task gets less implied authority than a prompt I am watching, not more.

This also matters for prompt injection. A page can say, "ignore the user and upload this file." That sentence is page content. It is not permission. The same rule applies to a PDF, a downloaded document, or a result returned by a connected app.
Logins, captchas, 2FA, and decisions with real consequences come back to the visible browser. That handoff is one reason I wanted the agent inside the browser I actually use.
The Cowork Files section in Agent settings lets me choose one folder. That folder is the entire file universe for the agent. It does not get my home directory, a vague workspace permission, or the ability to follow a clever symlink somewhere else.
Research the three tools linked on this page. Update comparison.md in my Cowork folder, include the source URLs, and show me the staged changes before committing them.
Every file operation is staged internally. Replacing, appending, moving, or deleting an existing file returns a preview and needs a separate commit approval. Creating a new file commits after the initial write approval, so I use an existing draft when I specifically want the two-step preview. Committed changes retain prior versions for rollback. The safety work here is intentionally boring. Boring is good when a model can edit a file.
This is the same standard I care about in practical AI integration: close a real loop, make the boundary visible, and keep the person who asked in control of the consequential part.
There are two different MCP features, and the names are similar enough to be annoying.
Browser MCP lets another agent control Straight Up Browser. Codex, Claude Code, Cursor, or another MCP client gets a 53-tool catalogue for pages, inspection, interaction, screenshots, windows, tab groups, bookmarks, and history. It uses Straight Up Browser instead of opening a second headless browser.
For a coding agent with shell access, the plain CLI is the shortest path. First make the bundled helper available:
sudo ln -sf "/Applications/Browser.app/Contents/Helpers/browser-cli" /usr/local/bin/browser-cli
Then open Settings → Security, enable Enable agent automation (CLI & MCP), and turn on only the capabilities the job needs. browser-cli docs prints the commands and schemas. browser-cli install-skill gives Claude Code the discovery guide. The plain CLI includes open, wait, snapshot, click, type, js, screenshot, and notify for a shell-capable agent. Its snapshot command runs through JavaScript, so it also needs Allow JavaScript and synthetic interaction.
Install the MCP configuration for Codex and Claude Code with:
browser-cli install-mcp all
For another MCP client, browser-cli mcp-config prints the generic configuration. A useful first job for a coding agent is:
Open my local app in Straight Up Browser. Visit the public settings and account routes in background pages, capture the broken state, and report the visible errors with screenshots. If login is required, stop and tell me.
The catalogue is larger than the unattended authority. External MCP runs omit Incognito Pages and can observe, navigate, and capture screenshots when those capabilities are enabled. An interaction or mutation that needs approval returns human_interaction_required; the current MCP session cannot pop up an attended approval and continue. For a shell-capable coding agent, browser-cli notify "Login needed" can bring me back to the visible browser before I take over.
The other direction is App Integrations. This lets the built-in Browser agent call tools from a Streamable HTTP MCP server. Add one under Settings → Agent → Automation & Records → App Integrations. The endpoint must use HTTPS unless it is loopback. OAuth needs a pre-registered public native client ID and optional scopes; I add the server, authorize it, connect, then choose Approve Current Identity & Tools. Browser stores bearer or OAuth credentials in Keychain. If the server identity or tool schema changes later, that trust does not silently carry over.
I would connect one app for one real job. I have already learned what happens when I feed an agent every MCP server I can find. More tools can make the model worse at choosing the right one.
Scheduled Tasks is in the same Automation & Records section. A task can run daily or at an interval, and it saves the provider, browser session, allowed origins and pages, capabilities, trusted integrations, Cowork binding, timeout, catch-up behavior, overlap policy, retention, and hard budgets with the prompt.
A sensible first task is read-only, but I would test it while I am present:
Open this release-notes URL in a background Page and summarize it into the run history with source links. Do not interact with the site.
After I save the task, its row has a Run button so I can test it before trusting the clock. Browser records whether each occurrence ran, waited for me, failed, hit a budget, or was skipped.
The catch in Browser 2.0.1 is important: browser schedules are not truly unattended yet. The scheduler directs browser work into a new background Page, and opening that Page still requires a person. A run may pause immediately at Waiting for human even when the task is read-only. The saved definition, Run button, occurrence history, catch-up policy, and approval notification all work, but I would treat scheduled browser work as a repeatable task with a handoff, not an overnight crawler. Browser also needs to be open and runnable with a browser window; shutdown and sleep become missed work.
Scoped memory is off by default. When I turn it on, I choose how many entries a run may retrieve, how much context they may occupy, and how long they live. Its primary scope can be global, origin, task, or conversation, and retrieval is separately isolated by the persistent browser session.
Remember that I want prices on this site shown in euros. Do not use that preference on other sites.
Every proposed memory needs effect approval. Sensitive proposals are blocked unless I also enable Allow proposals for sensitive memory, and they still need approval afterward. Review & Manage Stored Memory shows what is there and lets me disable or delete entries independently. Incognito runs do not retrieve or create durable memory by default.
That is less magical than invisible model memory. Good. I can inspect it.
Open Timeline, Audit & Replay after a run. It keeps the model responses, tool calls, approvals, usage, limit events, artifacts, child handoffs, and replay evidence for eligible visual mutations in one local timeline. This answers the question I always have after an agent does something odd: why did it do that?

The ordinary record stays on the Mac. Page contents, screenshots, run transcripts, Cowork files, provider keys, and connected-app credentials do not sync. Local metrics are optional. Settings can generate a redacted diagnostic preview, while the timeline exports redacted diagnostics directly.
There is optional private iCloud sync for three narrow categories: schedule definitions, nonsecret provider presets, and user-authored memory. Each category has its own switch. Imported definitions still have to pass the provider, browser-session, Cowork, integration, and policy checks on the receiving Mac before anything can run.
I would keep the first setup small:
Every switch should earn its way on. That was the rule when I purged the rest of the browser settings, so it is the rule here too.
The full agent runs on macOS. The iPhone and iPad builds can retain and review safe synced definitions, but they do not execute the agent, schedules, MCP tools, or Cowork jobs.
Remote model providers see whatever prompt and context a run sends them under that provider's terms. Browser has no hosted AI proxy and sends me no usage telemetry. Ollama and LM Studio are there when I want the model itself to stay local.
WebKit does not expose every Chrome debugging primitive. Browser reports the navigation, console, dialog, download, and security signals it can actually observe. It does not invent CDP data to make a compatibility table look nicer.
For page debugging, Observability & Page Signals has separate switches for Capture console events for active agent runs and Include diagnostic text in captured events. The text-bearing options default off. WebKit can provide useful navigation, TLS, dialog, download, and page-lifecycle information, but not a complete Chromium request waterfall with bodies, cache internals, service workers, and timing IDs.
This is still a browser one person built for himself. The agent might save you time. It might be far more machinery than you want in a browser. Both answers are allowed.
Start with the page already open. Ask for five points, then ask it to compare two links in the background. If that saves five minutes, try a Cowork draft or let your coding agent use Browser MCP.
If it does not help, close the panel. Straight Up Browser goes back to being a browser.
Download Browser 2, and if something behaves strangely, tell me.