Setting up a Chrome extension Surface

A Chrome extension Surface packages your Product’s AI as a downloadable Manifest V3 Chrome extension. Users chat with your AI from the browser side panel, and the extension can give it packaged browser tools for reading pages, filling forms, and navigating tabs. You build the extension ZIP from the Surface’s Ship tab with one click.

Before you begin, create a Product with at least one Capability — a Flow or Agent that handles user messages. The download requires a Capability on the Surface, so attach one first. See Adding Capabilities to a Product.

Chrome extension Surfaces are rolling out gradually, so this Surface type may not be available on your account yet.

Create the Chrome extension Surface

  1. Open the Product you want to ship as an extension.
  2. Go to Surfaces and click Add Surface.
  3. Select Chrome Extension as the Surface type.
  4. Give the Surface a name and click Save.

Configure the extension

The Surface’s configuration panel controls how the generated extension looks and what it can do:

  • Extension name — shown in the Chrome toolbar and extension manager. Defaults to the Surface name.
  • Extension description — shown in the extension manager and, if you publish, the Chrome Web Store listing.
  • Chat location — where the chat opens. Side panel (recommended) stays open while the user browses. Toolbar popup closes when it loses focus, which stops in-progress runs, so use it for quick one-shot questions only.
  • Browser tools — the tool categories available to your AI. See the next section.
  • Optional host permissions — match patterns (one per line, for example https://*.example.com/*) that users can grant at runtime for ambient access to specific sites. By default the extension only accesses the tab the user invokes it on.
  • First-run consent screen — on by default. Shows a disclosure before page content is sent to your AI. Keep it on; it is required for Chrome Web Store distribution because page content sent to an AI backend counts as sensitive user data under store policy.
  • Input placeholder — the placeholder text in the chat input.

Choose browser tools

Browser tools are fixed handlers packaged inside the extension. Your AI supplies only parameters — a CSS selector, a value, a URL — never code. Tools that change something on the page, such as clicking, filling forms, or navigating, always ask the user for confirmation in the chat before running. Read-only tools run automatically.

Enable only the categories your use case needs:

CategoryWhat your AI can doNotes
Page readingRead page text, HTML, the user’s selection, and metadata, and take screenshotsRead-only; runs automatically
Page interactionClick elements and read or fill formsEach action that changes the page asks the user first
Tab navigationList, open, close, and navigate tabsAdds the tabs permission, which Chrome labels as reading browsing history
ClipboardRead from and copy to the clipboard
NotificationsShow Chrome desktop notifications

By default the extension requests only activeTab and scripting, which grant temporary access to the tab the user invokes it on and trigger no install warnings. Broad site access only happens through the optional host permissions, which users grant explicitly at runtime.

If you enable no categories at all, the extension is chat-only.

Download the extension

Open the Surface’s Ship tab and click Download extension ZIP. The first download also sets up everything the bundle depends on, automatically:

  • A pinned extension ID. The bundle embeds a manifest key so every install of it gets the same extension ID and the same chrome-extension:// origin. The ID is shown in the Ship tab and the configuration panel.
  • A Client Token scoped to the Surface’s Capabilities, with the extension’s origin in its allowed origins. Runtype reuses a matching token if one exists, or creates one. See Client tokens and domain restrictions.
  • The Surface’s page-tool policy, so the API accepts tool results from the extension’s origin.

Repeat downloads keep the same extension ID, so you can rebuild the bundle after configuration changes without breaking installed copies.

Install for testing

  1. Unzip the downloaded file.
  2. Open chrome://extensions.
  3. Turn on Developer mode (toggle, top right).
  4. Click Load unpacked and select the unzipped folder.
  5. Click the extension icon in the toolbar to open the assistant.

Loading unpacked is a testing channel, not a distribution channel. Since Chrome 134, unpacked extensions are disabled whenever the Developer mode toggle is off, and they never auto-update. To reach end users, publish to the Chrome Web Store.

Distribute through the Chrome Web Store

The generated bundle includes a README with the full publishing checklist. The key requirements:

  1. Host a privacy policy that names Runtype (and its model providers) as data recipients, and link it in the Chrome Web Store developer dashboard.
  2. Complete the privacy practices tab — single-purpose description, a justification for every permission, and the data-usage certifications.
  3. Keep the first-run consent screen enabled. Prominent disclosure plus affirmative consent is required when page content is transmitted to an AI backend.
  4. Strip the key field from manifest.json for the first store upload. The store rejects bundles that include it and assigns its own extension ID. After publishing, add the store-assigned ID’s chrome-extension:// origin to your Client Token’s allowed origins in the Runtype dashboard.
  5. Prefer unlisted distribution for white-label or B2B deployments.

Expect manual review, which can take days to weeks for new developer accounts.

Next steps