# Browser extension

> Record what people send to ChatGPT, Claude.ai, Gemini and other AI chat sites in Chrome, and what comes back, with the Golem extension.

The Golem browser extension covers AI use that never touches a coding agent: people pasting into chat sites. It reads each prompt as the page sends it and each reply as it streams back, and hands both to the Golem agent on the same machine, which signs them into the record. It records. It does not block.

## What Golem adds

The extension appears in Chrome as **Golem agent**. It runs only on these sites:

| Site | Address |
|---|---|
| ChatGPT | `chatgpt.com`, `chat.openai.com` |
| Claude.ai | `claude.ai` |
| Gemini | `gemini.google.com` |
| Grok | `grok.com` |
| Perplexity | `perplexity.ai` |
| Proton Lumo | `lumo.proton.me` |
| Cursor Cloud Agents | `cursor.com` |

It sends what it captures to the Golem agent at `http://127.0.0.1:39393`, over the machine's loopback address. Nothing goes from the browser to Golem's servers directly. The Golem agent must be [installed](/install) and running on the same machine.

### Install it across a fleet

Under managed Chrome policy, Chrome installs the extension with no clicks, keeps it updated, and does not let the user remove it. The extension is not in the Chrome Web Store; each Golem release publishes a signed package and an update manifest, and the policy points Chrome at them. The extension id is permanent, because Chrome derives it from Golem's signing key:

```json
{
  "ExtensionSettings": {
    "fagmdkaickjgbfijgaknbckijhjpcnae": {
      "installation_mode": "force_installed",
      "update_url": "https://storage.googleapis.com/golem-releases/browser-ext/updates.xml",
      "toolbar_pin": "force_pinned"
    }
  }
}
```

| OS | Where the policy goes |
|---|---|
| macOS | A configuration profile payload for `com.google.Chrome`, pushed through Jamf, Kandji or Intune. Do not hand-edit `/Library/Managed Preferences/`. |
| Windows | The same `ExtensionSettings` keys, through Intune or Group Policy. |
| Linux | `/etc/opt/chrome/policies/managed/golem.json` |

A policy naming the wrong id fails silently: Chrome ignores the entry and reports no error. After deploying, check `chrome://policy` on a managed machine for the `ExtensionSettings` entry with status OK, and `chrome://extensions` for **Golem agent** marked as installed by your organization. See [Roll out to a fleet](/fleet) for the rest of the rollout.

### Install it on one machine

```bash
golem install browser-extension
```

Or fold it into the install, which also adds the editor extension:

```bash
curl -fsSL https://app.golem.team/install.sh | GOLEM_WORKSPACE_KEY=glk_... sh -s -- --with-extensions
```

Either way the extension is downloaded, checked against the release checksums and unpacked to `~/.golem/browser-ext`. Chrome cannot be scripted into loading an unpacked extension, so three steps remain:

1. Open `chrome://extensions`.
2. Turn on **Developer mode**.
3. Click **Load unpacked** and choose the folder the command printed.

To update it, run `golem update browser-extension`, press **Reload** on the Golem card in `chrome://extensions`, and refresh any open chat tabs.

## What a block and a hold look like

There are none. A prompt is recorded as it is sent, and the extension cannot stop, change or delay it. Your [rules](/rules) cannot refuse or hold anything on these sites. To keep a person from using a chat site at all, use your browser or network controls.

## What is recorded

- Each prompt, with the site and the page address.
- Each reply, assembled from the streamed response.
- Files attached to a prompt, as their own entries, where the site exposes them.
- Estimated token counts for each exchange (characters divided by four, since the sites report none). An estimated cost is kept only when **Cost estimates** is turned on in the console.

Prompts and replies go through the Golem agent like any other call, so the content goes to [your storage](/data) and the [record](/record) holds its hash and signature. Entries are filed under the agent `browser-extension` and against the machine whose Golem agent received them.

Proton Lumo encrypts chats end to end, so a Lumo prompt or reply is recorded as a placeholder that says it was encrypted, with the token counts Lumo reports when it reports them.

The extension records whichever account is signed in to the site, work or personal. Tell people before you roll it out. Web chat use is part of the [Shadow AI](/coverage#shadow-ai) picture in the console.

## Check that it is working

1. Click the extension's icon. The popup shows a green dot and **Connected** when it can reach the Golem agent.
2. Send a short prompt in ChatGPT.
3. In the console at [app.golem.team](https://app.golem.team), open **Events** and look for a `web_ai_prompt` entry from that machine.

If the dot is red, check that the Golem agent is running with `golem doctor`. If the Golem agent listens on another port, set **Golem agent URL** on the extension's Options page.

## Limits

- **It cannot block.** It records what was sent and what came back; nothing more.
- **Chrome only.** The policy above is Chrome's. Firefox and Safari are not supported.
- **A person can pause it.** The popup's **Capture enabled** switch stops recording in that browser, even under policy, and Golem is not told.
- **Nothing is kept while the Golem agent is down.** The extension sends each entry once; if the Golem agent does not answer, that entry is lost.
- **Settings are per user.** The Options page cannot be set by policy. This matters only if your fleet moved the Golem agent off its default port.
- **A site change can break capture.** When a site changes how it sends chats, capture for that site can stop until a new extension release. Under policy, Chrome picks the release up on its own.
- **Only the sites above.** Desktop chat apps, and AI features built into other sites, are outside what the extension sees.

More in [Coverage](/coverage) and [Limits](/limits).

## Remove it

Under policy, remove the `ExtensionSettings` entry and Chrome uninstalls the extension. On one machine, click **Remove** on the Golem card in `chrome://extensions`. To remove Golem entirely, see [Uninstall](/install#uninstall).
