Let Claude use your Zen Browser, like Claude in Chrome. No extension, only sites you allow.
Let Claude use your Zen browser. Works with Claude Desktop and Claude Code, kind of like Claude in Chrome but for Zen.
There's no browser extension. zenpilot opens Zen with its remote control turned on and talks to it directly.
Alpha. Only tested on macOS with Zen 1.23.
You need a Mac with Zen in /Applications.
Claude Desktop: download zenpilot-<version>.mcpb from the
latest release and open it. That's it.
Claude Code (or both): with uv installed, run:
uv tool install zenpilot
zenpilot setup
Setup asks which Zen profile to use and which sites Claude may visit. Then it connects zenpilot to Claude Code (and Claude Desktop, if you have it) and opens Zen. Restart Claude Desktop afterwards.
Just ask Claude: "order a large pizza with bacon on httpbin.org/forms/post for Sam, then submit it".
The first time, a few popups may show up. Only you see them, not Claude:
zenpilot is a fresh profile that isn't logged in to anything. Pick
your own profile if you want Claude to use sites you're logged into.Pressing Enter always picks the safe answer.
Claude can open, switch and close tabs, go to a URL, read the page, click, type, scroll and take screenshots. It can't touch cookies, passwords or downloads, and it can't run its own JavaScript.
zenpilot allow github.com.zenpilot profile if you can. It's logged out of everything. On your main
profile, a shady page could try to trick Claude into doing stuff in your accounts, so only
allow sites you trust.read_only = true and Claude can look but not click or type.~/.local/state/zenpilot/audit.jsonl.zenpilot also stops Zen from switching off its own protections (Safe Browsing, the popup blocker and so on), which would otherwise happen when remote control is on.
| Command | What it does |
|---|---|
zenpilot setup | Set everything up (see above) |
zenpilot allow [site...] | Allow sites. --remove takes them off. No sites lists them. |
zenpilot launch | Open Zen with remote control on |
zenpilot doctor | Check your setup and say how to fix anything that's broken |
They live in ~/.config/zenpilot/config.toml, and changes apply right away.
allowlist = ["localhost", "127.0.0.1"] # "example.com" covers its subdomains too
read_only = false # true: Claude can look but not click or type
profile = "zenpilot" # which Zen profile Claude uses
auto_launch = true # open Zen when Claude needs it
prompts = true # show the popups above
port = 9222
audit_log = "~/.local/state/zenpilot/audit.jsonl"
dangerously_allow_all_sites = false # skips the allowlist. Please don't.
zenpilot doctor. If Zen says it already has a session after a crash, restart Zen.git clone https://github.com/beSaif/zenpilot.git && cd zenpilot
uv sync && uv run zenpilot setup # points Claude at your clone
uv run pytest -m "not integration" # unit tests
uv run pytest # all tests, needs Zen running (zenpilot launch)
Pushing a v* tag that matches pyproject.toml publishes to PyPI and makes a GitHub
release with the .mcpb.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx zenpilotMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-besaif-zenpilot": {
"command": "uvx",
"args": [
"zenpilot"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencezenpilotpypiio.github.beSaif/zenpilot works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.