Load a Browser Extension
Some jobs are easier with an extension in the browser - an ad blocker for cleaner pages, a cookie-banner dismisser so your automation never sees the popup, or your own internal tooling packed as a .crx. Import it once, then load it into any runtime by id.
📸 Content TODO: side-by-side screenshots of the same page with and without the extension loaded - run the recipe once with
extensionIdsand once without.
Your own extensions work the same way - upload a packed .crx as a Blob with browserExtensions.upload({ file, name }) instead of importing. That’s the only packaging format supported today.
Extensions load at launch, so extensionIds is part of runtime config - set it at create time, or update it while the runtime is stopped. On profile-backed runtimes extensions are managed by the platform for the life of the profile.
Mind the fingerprint
Extensions are detectable by the pages you visit, and a browser whose extension set contradicts its story is a signal - see Configure a Stealth Browser. For pure traffic savings, prefer the built-in networkTraffic blocking (Trim Network Traffic) - it works at the proxy layer and adds nothing detectable to the browser.
Next
- Extensions - upload, import, and manage
- Trim Network Traffic - blocking without an extension
- Runtime configuration - everything else in
config

