---
title: Kortix in Chrome
description: Add the Kortix extension to Chrome so a session can open pages, read them and click, with your logins, while you watch and can stop it.
---

Kortix in Chrome is a Chrome extension that connects your own browser to Kortix. You add the extension to Chrome and sign in once. After that, any of your sessions can drive that browser, including the sites you are already signed in to. This page is for members who connect a browser, decide what agents may reach, and stop an agent that uses it.

The extension is not a sandbox browser and not [a computer](/docs/guide#computers). The pages open in your real browser, as you. It works in Chrome, Edge, Brave and Arc on a computer. Safari, Firefox, the Kortix desktop app and phones cannot run the extension.

## How to install

The Chrome Web Store listing is not public yet. Until it is, load the extension from the Kortix repository:

1. Build it: run `bun run build` in `apps/chrome-extension`. The build writes `apps/chrome-extension/dist`.
2. In Chrome, Edge, Brave or Arc, open `chrome://extensions` and turn on **Developer mode**.
3. Select **Load unpacked** and choose the `dist` folder.

When the listing is public, **Add to Chrome** replaces these steps.

## Connect the browser

1. Open **Settings → Kortix in Chrome**, or select **Kortix in Chrome** in the sidebar. The dialog **Add Kortix to Chrome** shows three steps.
2. **Add the extension.** The step turns green when the page finds the extension. If it does not, reload the Kortix page.
3. **Sign in.** Select **Connect**. Chrome opens a Kortix tab: check the **Kortix server**, then select **Connect to Kortix**. The tab goes to the Kortix sign-in page. Select **Allow**.
4. **Connected.** The tab comes back, and you name the browser and choose its access. The browser appears with an online dot. Select **Done**.

The extension stays signed in. In a browser that cannot run the extension, the dialog tells you to open Kortix in Chrome, Edge, Brave or Arc, and offers **Copy link**.

A browser belongs to you. Each browser you connect appears under **Settings → Kortix in Chrome**, and only your own sessions can use it. To add a second browser or Chrome profile, select **Add another browser**, then open Kortix in that browser and connect it there.

## Manage your browsers

**Settings → Kortix in Chrome** lists every browser you connected under **Connected browsers**. Each row shows the name, the profile and extension version, whether the browser is online, and how many sessions use it now. Two browsers with the same default name show the profile or a number after it.

| Setting | Values | Effect |
| --- | --- | --- |
| **Name** | Any text, up to 255 characters | Select the name to rename the browser. A session selects a browser by this name. |
| **Access** | **Without asking**, **Ask first**, **Off** | **Without asking** lets a session attach at once. **Ask first** shows a prompt in Chrome for each session. **Off** refuses every session. |
| **Tabs** | **All tabs** (default), **Only tabs it opens** | The tabs a session can reach. See [What agents can reach](#what-agents-can-reach). |

Select **Add another browser** to add a second browser or profile. Select **Disconnect** to remove a browser. Disconnecting ends every session that uses it. To use the browser again, connect it from Chrome.

## What agents can reach

A session drives a browser in one of two scopes:

- **All tabs** (the default). The session reaches every `http`, `https` and `file` tab in the browser, and blank tabs.
- **Only tabs it opens.** The session reaches only the tabs in its own tab group: tabs it opened, tabs you shared into the group, and tabs those tabs opened. Your other tabs are invisible to it.

In both scopes, these are never reachable:

- `chrome://` pages
- the Chrome Web Store
- extension pages

A session never resizes or closes your browser. The extension uses the Chrome debugger to control tabs, so Chrome shows its debugging notice while a session is attached.

## Consent and Stop

You always see when a session uses your browser:

- Each session gets one tab group named **Kortix · &lt;session title&gt;**.
- Every tab in the group shows a glow, the agent's cursor, and a control bar.
- The cursor glides to each place the agent clicks or types, and the click or the text lands only when it arrives. Its label says **Typing…** or **Scrolling…** while the agent types or scrolls.
- **Take over** pauses the agent on that tab, so you can use it yourself. The agent's input commands fail until you resume it.
- **Stop** ends the session's access at once. The Chrome notice's **Cancel** does the same.

With **Ask first**, Chrome asks before a session attaches. You answer for this session, for every session in the project, or **Deny**. With **Without asking**, a session attaches without a prompt, unless it asks for one.

After you press **Stop** or **Deny**, that session cannot attach again unless it asks again. The next attach then shows a fresh prompt in Chrome. If nobody answers a prompt within 90 seconds, the attach fails.

## Chat from the side panel

Select the Kortix icon in the toolbar, or press `Alt+K`, to open the side panel. It opens on a new chat every time:

1. Pick the project at the top. The panel remembers your choice.
2. The tab you look at rides along as a chip, and the chip follows you when you switch tabs. Select **×** on the chip to leave the tab out, or **+ Tab** to add more tabs, for example to compare two pages. Select **Screenshot** to also send an image of what the tab shows, for charts and pictures that page text misses. A model that cannot read images keeps the message in the box and says so.
3. Type your message, or select a page action: **Summarize this page**, **Extract the tables**, **Compare with another tab** or **Draft an email about this**.
4. Choose how Kortix uses the tab, then send:
   - **Read** (the default) sends the text of each tab in the chips as a Markdown file with the message. Kortix reads a tab only when you send.
   - **Act** puts the tab in the session's **Kortix** tab group, so the agent can click and type there. The usual consent, glow and **Stop** apply.

The session opens in the panel and appears in your project like any other session.

To ask about part of a page, select the text, right-click, and choose **Ask Kortix about this selection**. The panel opens with the text as a quote. Kortix gets only the quote, the page title and the address. Select **+ Whole page** to send the page text too. **Ask Kortix about this page** opens a new chat with that tab.

Chrome lets no extension read its own pages or the Chrome Web Store. Their chips are greyed out and are not sent.

## Use it from a session

A session attaches a browser with the `kortix chrome` command in its sandbox:

```bash
kortix chrome ls                 # your connected browsers
kortix chrome use                # attach your most recently seen online browser
kortix chrome use "Chrome · Work"   # attach one by name or id
kortix chrome use --ask          # force a fresh prompt in Chrome
kortix chrome status             # is a browser attached?
kortix chrome release            # detach when the task is done
```

Every subcommand takes `--json`. After `kortix chrome use`, the browser answers on port `9333` inside the sandbox, and any Chrome DevTools Protocol client can drive it. With `agent-browser`:

```bash
agent-browser --cdp 9333 open https://example.com
agent-browser --cdp 9333 snapshot -i
agent-browser --cdp 9333 click @e3
```

Ask the agent in plain words, for example "Use my browser to check the invoices in my billing dashboard." The agent runs `kortix chrome use` itself. If you have no connected browser, the command fails and links to **Settings → Kortix in Chrome**.

### Files and dialogs

- **Uploads.** A session uploads files from its sandbox into a page's file field (`agent-browser --cdp 9333 upload <field> <path>`), up to 10 MB in total. The extension sends the file's bytes; nothing is read from your disk.
- **Downloads.** A file a page downloads lands in your browser's download folder on your computer, not in the session.
- **Page dialogs.** The agent answers `confirm()` and `prompt()` dialogs itself. If a dialog blocks one of its commands for more than a second, the extension answers **OK** so the session does not hang.

## Troubleshooting

| Message | Meaning | Fix |
| --- | --- | --- |
| `chrome_not_connected` | You have no connected browser. | Connect one in **Settings → Kortix in Chrome**. |
| `chrome_offline` | The browser is connected but did not answer in the last 75 seconds. Chrome may be closed or asleep. | Open Chrome and check that the extension is signed in. |
| `chrome_access_off` | **Access** for this browser is **Off**. | Set **Access** to **Without asking** or **Ask first**. |
| `chrome_denied` | You selected **Deny** or **Stop** for this session. | Run `kortix chrome use --ask` to get a fresh prompt. |
| `chrome_consent_timeout` | Nobody answered the prompt in Chrome within 90 seconds. | Run `kortix chrome use --ask` and answer in Chrome. |
| `chrome_not_found` | No connected browser has that name. | Run `kortix chrome ls` and pass a listed name. |

If the dialog does not show the extension as added, finish in the Kortix tab Chrome opened, or reload the Kortix page. If you leave the sign-in page without **Allow**, select **Connect to Kortix** again. A server that does not offer the Chrome extension yet is named on the Kortix tab before any sign-in.
