Install the extension

Package the extension once for Chrome and Edge, distribute it to managed browsers and set the platform URL.

On this page

The shim extension checks prompts and attached files in Chrome and Edge version 140 or later. It appears in the browser as shim AI Protection (alpha).

Package for Chrome and Edge

Chrome and Edge install the same package. From the root of your checkout of the shim release, build it:

bun run package:extension

The archive is written to apps/extension/.output. Its extension version must match the console you deploy. See Upgrade and reset.

Distribute to managed browsers

  1. Publish the archive through your organization’s supported extension distribution channel to get a stable extension ID and update URL. A package you sign and host yourself keeps the same ID in Chrome and Edge; an extension store assigns its own ID.
  2. Force-install that ID on the managed Chrome and Edge browsers in your pilot group with the ExtensionInstallForcelist policy.
  3. Set the apiUrl managed setting to your console origin. See Managed settings.
  4. Enroll each browser with its own one-time code. See Enroll devices.

Limit. Enterprise installation, managed settings, updates, rollback and revocation propagation are still being validated in both browsers.

Managed settings

The extension reads one managed setting:

Setting Type Value
apiUrl string The HTTPS console origin. Localhost HTTP is allowed for development

When apiUrl is set by policy, the platform URL field in the extension’s settings is filled in and read-only. The setting does not enroll the browser and does not identify a user or organization; each browser still needs a one-time code.

Chrome reads extension settings from the 3rdparty policy for the extension’s ID. This JSON policy file, for example in /etc/opt/chrome/policies/managed/ on Linux, force-installs the extension and sets apiUrl. Replace EXTENSION_ID and the update URL with the values from your distribution channel:

{
  "ExtensionInstallForcelist": [
    "EXTENSION_ID;https://example.com/shim/updates.xml"
  ],
  "3rdparty": {
    "extensions": {
      "EXTENSION_ID": {
        "apiUrl": "https://security.example.com"
      }
    }
  }
}
  • On Windows, set apiUrl as a string value under HKLM\Software\Policies\Google\Chrome\3rdparty\extensions\EXTENSION_ID\policy.
  • On macOS, set apiUrl in the com.google.Chrome.extensions.EXTENSION_ID preferences domain with a configuration profile.
  • Edge uses the same policy names under its own locations, such as HKLM\Software\Policies\Microsoft\Edge\3rdparty\extensions\EXTENSION_ID\policy on Windows. Verify them on a test machine first.

Permissions

Permission Why
storage Keeps the enrollment credential, the cached policy and pending reports
alarms Syncs the policy and uploads reports every minute
declarativeNetRequest Blocks one ChatGPT request that can send a draft before Send is pressed
Site access to ChatGPT, Claude and Gemini Reads the draft, checks attached files and opens the review on chatgpt.com, chat.openai.com, claude.ai and gemini.google.com
Site access to the other AI apps shim lists Notes which of those apps the browser has open on each day for the console’s AI apps page, when the browser’s policy turns on AI app discovery. The extension reads only the tab’s address, to match it against the list, and runs nothing on those pages. See AI apps shim notes
Platform origin Requested at enrollment so the extension can reach your console

Site access is fixed in the extension’s manifest. The extension asks for access to the console origin only when someone enrolls the browser. The extension’s details page lists these sites under Site access and warns that “This extension can read and change your data on sites.” A force-installed extension receives this access without asking the employee, and an update that adds an AI app to the list adds its site the same way.

Tell employees

Tell employees before you roll the extension out. You can adapt this notice:

Our managed Chrome and Edge browsers run shim, which checks what you type into ChatGPT, Claude and Gemini, and files you attach there, before they are sent. The check runs in your browser. When a company rule matches, shim may warn you, block the prompt or ask you to edit or mask it, and our security administrators can see the matched prompt, any edited or masked version, your choice and any explanation you write, for 90 days. Prompts that match no rule are never captured.

When our policy turns on AI app discovery, shim also records which AI apps from its list the browser has open on each day, such as “Perplexity, 11 October”, for 90 days. It never records the web address, the page or what you type there, and nothing from incognito windows. Administrators can see which of these apps each browser used. The shim extension’s settings show whether discovery is on for your browser.

Monitor-only rules capture prompts without showing a review, so mention them in your own AI-use policy as well. If every policy turns AI app discovery off, leave out the second paragraph; if only some do, say which teams it covers.

Load for evaluation

To try the extension without a distribution channel, build the checkout and load the unpacked folder:

bun run build

In Chrome or Edge, load apps/extension/.output/chrome-mv3 as an unpacked extension.

After installing, reloading or updating the extension, refresh open ChatGPT, Claude and Gemini tabs so they receive the current content script.