Off by default
A fresh install connects to nothing. An unpaired extension never contacts the daemon at all, and pairing takes a single-use code you redeem yourself.
Security model
Everything below is a property of how it is built, not a promise in a policy document. It is a local daemon, an extension that dials out to it, and no third party in between.
Properties, not promises
A fresh install connects to nothing. An unpaired extension never contacts the daemon at all, and pairing takes a single-use code you redeem yourself.
Any web page can open a WebSocket to loopback, so the daemon first classifies the peer by handshake Origin, which browsers set themselves and pages cannot forge, then requires a pairing token or a session key bound to that same origin. A web page can never reach the control path.
Approval prompts appear in the side panel with the action named. Form submission is gated by default, because it is the one effect that reaches someone other than you. Cancelling a run stops it mid-flight.
A recording stores the identity of each field and a placeholder for its value. Keeping literal values is per-recording and off by default. Recording only ever starts from your own click or your own words.
No model is bundled and nothing is downloaded. Chrome’s Web Speech API streams audio to Google to transcribe it, and replacing the speech engine is a one-file change.
Pairing keys, logs, config, skills and screenshots live under ~/.browsentic and ~/browsentic. Never in your checkout, never in a commit.
Stated plainly
Neither of these is a bug with a fix pending. They are the shape of the problem, and you should know them before you rely on any of this.
Anything running as your user can read the daemon lockfile and drive an already-paired browser.
An agent reading one is susceptible to prompt injection. Treat page content as data, never as instructions.
On disk
Pairing keys, logs, config, skills and screenshots go under your home directory. Never in your repository, never in a commit.
~/.browsentic
Config, the daemon lockfile, pairing keys and session keys, and logs. This is the private half.
~/browsentic
Skills, site maps, recordings, screenshots and files you attached. The half you are meant to read and edit.
Disclosure
Report it privately through GitHub security advisories rather than a public issue, and it gets looked at before it gets published.
Free and MIT licensed. Nothing to sign up for, no key to paste, and a fresh install connects to nothing until you redeem a pairing code yourself.
claude mcp add browsentic -- browsentic-mcp