> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://platform.bctrl.ai/llms.txt.
> For full documentation content, see https://platform.bctrl.ai/llms-full.txt.

# Browser Extensions

> Upload and manage browser extensions that can be loaded into runtimes.

Browser extensions can be loaded into browser runtimes to add capabilities such as ad blocking, authentication helpers, or custom internal tools.

Access extensions through `bctrl.browserExtensions`.

## List extensions

```ts
const extensions = await bctrl.browserExtensions.list();
```

## Upload an extension

```ts
import { readFileSync } from "node:fs";

const extension = await bctrl.browserExtensions.upload({
  file: readFileSync("./internal-tools.zip"),
  filename: "internal-tools.zip",
});
```

## Import an extension from a URL

```ts
const extension = await bctrl.browserExtensions.importFromUrl({
  url: "https://example.com/extension.crx",
});
```

## Launch with extensions

```ts
const runtime = await space.runtimes.browser.launch({
  name: "extension-test",
  extensionIds: [extension.id],
});

const connection = await runtime.connections.create({
  protocol: "cdp",
});
```

## Delete an extension

```ts
await bctrl.browserExtensions.delete(extension.id);
```

## Related

* [Browser Runtimes](/sdk/browser-runtimes/overview)
* [Connect with CDP](/sdk/browser-runtimes)