Setting up a Chrome extension Surface
Use a Chrome extension Surface to package your Product’s AI as a downloadable Manifest V3 extension. Your users chat with your AI in the browser side panel. The extension can provide packaged browser tools for reading pages, filling forms, and navigating tabs. Build the extension ZIP from the Surface’s Ship tab.
Before you begin
Create a Product and attach at least one Capability. Use a Flow or Agent that handles user messages as the Capability. The download requires a Capability on the Surface. For instructions, see Adding Capabilities to a Product.
The Chrome extension Surface is behind a gradual rollout. If Chrome Extension does not appear in the Surface type list, the Surface is not available for your account.
Create the Chrome extension Surface
Create the Surface from the Product that you want to ship:
- Open the Product you want to ship as an extension.
- Open Surfaces and click Add Surface.
- Select Chrome Extension as the Surface type.
- Enter a name for the Surface and click Save.
Configure the extension
Use the Surface configuration panel to set the extension’s name, behavior, and tools. The panel includes these fields:
- Extension name: appears in the Chrome toolbar and extension manager. It defaults to the Surface name.
- Extension description: appears in the extension manager and, if you publish the extension, in the Chrome Web Store listing.
- Chat location: controls where the chat opens. Side panel is recommended and stays open while you browse. Toolbar popup closes when it loses focus and stops in-progress runs. Use it for quick, one-shot questions.
- Browser tools: define the tool categories available to your AI.
- Optional host permissions: accept match patterns, one per line. For example,
https://*.example.com/*. You can grant these permissions at runtime for matching sites. The extension otherwise accesses only the tab where you invoke it. - First-run consent screen: defaults to on. It shows a disclosure before page content is sent to your AI. Keep it on for Chrome Web Store distribution. Chrome Web Store policy requires prominent disclosure and affirmative consent when page content goes to an AI backend.
- Input placeholder: sets the placeholder text in the chat input.
Choose browser tools
Browser tools are fixed handlers that the extension packages. The extension passes parameters, such as a CSS selector, a value, or a URL. It does not pass code. Mutating tools ask for confirmation in the chat before they run. Read-only tools run automatically.
Enable only the categories that your use case needs. The available categories are:
The extension always requests storage. Side-panel mode also requests sidePanel. When you enable content tools, the extension adds activeTab and scripting. These permissions grant temporary access to the tab where you invoke the extension. They do not create install warnings. Tab navigation adds the tabs permission. Optional host permissions add access to matching sites after you grant them at runtime.
If you select no browser tool categories, the extension remains chat-only.
Download the extension
Open the Surface’s Ship tab and click Download extension ZIP to build the bundle. The first download also configures the resources that the bundle needs:
- A pinned extension ID: the bundle includes a manifest
key. Every unpacked install then uses the same extension ID andchrome-extension://origin. The ID appears in the Ship tab and the configuration panel. - A client token scoped to the Surface’s Capabilities: the download adds the extension’s origin to the token’s allowed origins. Runtype reuses a matching token for this Surface or creates one. For more information, see Client tokens and domain restrictions.
- The Surface’s WebMCP policy: the API accepts browser-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 the extension for testing
To test the extension, follow these steps:
- Unzip the downloaded ZIP.
- Open
chrome://extensions. - Turn on Developer mode.
- Click Load unpacked and select the unzipped folder.
- Open the extension from the Chrome toolbar.
Chrome 134 and later disables unpacked extensions when Developer mode is off. Treat an unpacked installation as a testing channel. To distribute the extension to end users, publish it through the Chrome Web Store.
Distribute through the Chrome Web Store
The generated bundle includes a README with the publishing checklist. Complete these requirements before you publish:
- Host a privacy policy that names Runtype and its model providers as data recipients. Link it in the Chrome Web Store developer dashboard.
- Complete the Privacy practices tab with a single-purpose description, a reason for every permission, the data-usage certifications, and the Limited Use certification.
- Keep the first-run consent screen enabled. Chrome Web Store policy requires prominent disclosure and affirmative consent when page content goes to an AI backend.
- Remove the
keyfield frommanifest.jsonfor the first upload of a new store item. Chrome rejects bundles that include this field. It assigns the store item its own extension ID. After publishing, add the store-assigned ID’schrome-extension://origin to the client token’s allowed origins in the Runtype dashboard. - Prefer unlisted distribution for white-label or business-to-business deployments.
Plan for manual review. Reviews for new developer accounts can take days to weeks.
Next steps
Follow these guides to continue:
- What are Surfaces?: understand how Surfaces expose a Product
- Adding Capabilities to a Product: attach a Flow or Agent
- Surface orchestration modes: route requests across multiple Capabilities
- Client tokens and domain restrictions: manage allowed origins for the client token
- Working with logs: inspect requests and tool activity