Legal
Privacy Policy
Effective July 25, 2026 · applies to the Web Butler browser extension and butler.swerdlow.dev
The short version. Web Butler sends the pages you ask about, and the questions you ask, to the AI provider you signed in with (ChatGPT, Claude, or Grok). Your tasks, reports, and page alterations are stored in our database so they work across sessions. Data is stored under a random anonymous ID, not your name or email, but it is not otherwise anonymized. We do not sell your data, we do not run ads, and we do not track your browsing when you are not using the butler. You can wipe everything from Settings at any time.
1. Who we are
Web Butler is an open source browser extension built and operated by Ben Swerdlow. The full source code, including the server, is public at github.com/theswerd/web-butler, so everything described in this policy can be verified by reading the code. The extension talks to a service hosted at butler.swerdlow.dev.
This is an independent side project, not a company with a legal department. This policy is written in plain language and describes what actually happens, as accurately as possible.
2. What Web Butler does
Web Butler is an in-page assistant. You summon it on a page, type a request, and it uses the AI subscription you already have (ChatGPT, Claude, or Grok) to answer questions about that page, run errands in your tab, write long-form reports, and apply persistent page alterations you asked for. Every one of those features involves handling some of your data. This policy explains which data, where it goes, and how long it stays.
3. What we collect
Web Butler only handles data when you actively use it. Here is the complete list.
3.1 Your prompts and tasks
Every request you type into the prompt box is sent to our server and stored in our database as part of a task record. A task record includes the prompt text, the URL and title of the page you asked about, the activity feed of what the agent did, the outcome, and timestamps. Task history exists so you can review past work, retry failed tasks, and reference earlier tasks in follow-up requests.
3.2 Page content
When you send a request, a snapshot of the current page is included as context: the page URL, the title, a trimmed copy of the page HTML, and any elements you explicitly selected with the element picker. This is what lets the AI actually answer questions about the page in front of you. Page content is forwarded to your chosen AI provider and passes through the sandbox that runs your agent. It is not collected in the background; it is captured only for pages where you invoke the butler, at the moment you send a request.
3.3 Browser errands
When you ask the butler to do something in your tab, like filling a form or clicking through a flow, the agent drives the page through Chrome's debugger API behind a visible on-page cursor. During such a task the agent can take screenshots of the tab, read the page, and inspect the tab's network requests when the task requires it. That material is used as working context for the task and can appear in the task's stored activity feed. This only happens inside a task you started, and detaches when the task ends.
3.4 Reports and artifacts
Long-form outputs the agent produces, such as reports, tables, and drafts, are stored in our database so they survive reloads and can be reopened later from the Artifacts view.
3.5 Page alterations
Persistent page alterations you request, like hiding sponsored posts on a site, are stored in our database with a name, description, the script itself, and the URL patterns they apply to. They are also registered locally in your browser through Chrome's user scripts API so they run on later visits.
3.6 Account and settings
Web Butler uses anonymous accounts. When the extension first connects, our server issues a random identifier and a session token. There is no email, no name, no password, and no sign-up form. Everything we store is keyed to that random ID. Your provider choice and a small amount of state are stored alongside it. Purely cosmetic settings, like theme and accent color, stay in your browser's local extension storage.
3.7 Provider credentials
Signing in to ChatGPT, Claude, or Grok happens through each provider's own device authorization flow. The resulting credentials are stored inside your personal sandbox virtual machine, not in our database. We never see or store your provider password.
3.8 Server logs
Like almost every web service, our infrastructure providers produce operational logs (request paths, status codes, timestamps, IP addresses as part of standard HTTP handling). We use them for debugging and abuse prevention, not for profiling.
4. What we do not collect
- No browsing history. The extension does not watch, record, or report the pages you visit. It only sees a page when you summon the butler on it and send a request.
- No keystroke logging. Nothing you type outside the Web Butler prompt box is captured.
- No identity. We do not ask for or store your name, email address, or any account profile.
- No advertising or analytics trackers. The extension and the homepage contain no ad networks and no third-party analytics.
- No selling of data. We do not sell, rent, or trade your data with anyone, full stop.
5. Where your data goes
When you send a request, your data moves through a short, fixed chain. Each hop exists to make the product work, and nothing else is in the loop:
| Hop | What it is | What it handles |
|---|---|---|
| Cloudflare | Hosts our API and this website | All requests between the extension and our service |
| Neon Postgres | Our database | Tasks, reports, alterations, anonymous account records |
| Freestyle | Runs your personal sandbox VM | Executes your agent; holds your provider credentials and per-task working files |
| Your AI provider | OpenAI, Anthropic, or xAI, whichever you signed in with | Receives your prompts and page context to produce answers |
The most important hop is the last one. Your prompts and the page content you ask about are processed by the AI provider you connected, under their terms and privacy policy, on the subscription you already have with them. Web Butler does not add any AI provider you did not choose.
6. How we use your data
We use the data described above for exactly one purpose: making Web Butler work for you. Concretely, that means running your tasks, keeping your history and artifacts available across sessions, reapplying your page alterations, and debugging when something breaks. We do not use your data to build advertising profiles, we do not sell or share it for marketing, and we do not use it to make decisions about you.
Because the project is open source and the operator can access the database, treat Web Butler like any small hosted service: do not run tasks over content you would not be comfortable existing in a database row. Stored data is keyed to a random ID rather than your identity, but the content itself, such as prompts and page snapshots, is stored as-is and is not further anonymized.
7. Data retention and deletion
Stored data stays until you delete it. There is currently no automatic expiry. You are in control of deletion at several levels:
- Individual tasks can be deleted from the Tasks view, and there are bulk options to clear old tasks or all tasks.
- Page alterations can be switched off or deleted from the Extensions view, which also unregisters them from your browser.
- Full reset. Settings includes a reset that clears the extension's local state and returns it to first-run. Because accounts are anonymous, a reset effectively orphans the server-side data tied to your old ID; nothing links it back to you or your new session.
- Complete server-side deletion of an orphaned account's data can be requested through the contact channel below.
Uninstalling the extension removes all locally stored data and registered user scripts from your browser.
8. Chrome permissions, explained
The extension asks for several Chrome permissions. Each one maps to a visible feature:
| Permission | Why |
|---|---|
| Host access | The butler is an overlay you can summon on any site, so it cannot list hosts in advance. It only touches pages where you invoke it. |
| storage | Settings, session token, and local task state. |
| sidePanel | Reports and live task activity open in the side panel. |
| userScripts | Runs the page alterations you asked for on the sites you chose. |
| tabs | Applies alterations to matching open tabs and routes results back to the right tab. |
| debugger | Drives browser errands with the visible cursor; attached only during a task you started. |
| notifications | One notification when a task finishes while the panel is closed. |
| scripting | Injects the assistant into tabs that were already open when the extension installed or updated. |
| contextMenus | The right-click "Ask Web Butler" shortcut for selected text. |
| alarms | Wakes the extension to re-attach to a still-running task if Chrome suspends it. |
9. Security
All traffic between the extension, our server, and the sandbox uses HTTPS. Each user's agent runs in its own isolated virtual machine, and API routes enforce that you can only read and manage your own tasks, reports, and alterations. Provider credentials live in your sandbox rather than the shared database.
Honesty section: this is a small open source project. It has not undergone a formal third-party security audit. The code is public precisely so anyone can inspect how data is handled, and security reports are very welcome through GitHub.
10. Cookies and local storage
The extension stores its session token and settings in Chrome's extension storage, which is not readable by websites. The butler.swerdlow.dev homepage sets no cookies and runs no analytics. Your AI provider's own pages, used during sign-in, are governed by their own cookie policies.
11. Children
Web Butler is not directed at children under 13, and we do not knowingly collect data from them. Since accounts are anonymous we have no way to verify age; if you believe a child has used the service and want associated data removed, contact us below.
12. Your rights
Depending on where you live, you may have legal rights to access, correct, export, or delete your data. Because accounts are anonymous, the practical route for all of these is the same: use the in-product deletion controls described in section 7, or contact us with enough detail to locate the data in question. We will honor any reasonable request; there is no data we have an interest in keeping against your wishes.
13. Changes to this policy
If the way Web Butler handles data changes, this page will be updated and the effective date at the top will move. Meaningful changes will also be visible in the project's public commit history, which is a level of transparency most privacy policies cannot offer.
14. Contact
Questions, deletion requests, or security reports: open an issue at github.com/theswerd/web-butler/issues or reach the author at @benswerd.