Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions AGENT_INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,18 @@ for Chrome and other Chromium browsers,
[Edge Add-ons](https://microsoftedge.microsoft.com/addons/detail/browserskill/emacgiaaaiojkkpkddmmdfhmokgmnikg)
for Microsoft Edge — and ask them to install it on the computer with that browser.

- **Local:** ask the user to open the popup, enable the connection and confirm the
port matches the local daemon; wait for the connected status.
- **Local:** enable the connection and continue when connected. Pairing is optional;
an unpaired warning does not block installation or browser use. Do not make the
user pair or update the other component just to complete setup. Explain the
warning and offer pairing when the user wants connection identity verification.
Run `bsk daemon pair` with the intended daemon's `BSK_HOME` and ask the user to
paste its private link into **Connection settings → Pairing link**. The command
reuses or starts the daemon; with `BSK_AUTO_START=0`, the host must start it first.
Keep the link out of logs, issues and shared transcripts. Successful pairing
shows **Connected · Verified**. On `already_paired`, retain the current pairing;
use `--replace BROWSER_ID` only for an intended replacement. An already-paired
browser must not automatically skip verification after an authentication failure.
See [local pairing](docs/local-pairing.md).
- **Remote:** ask the user to select **Remote connection**, paste the pairing link
and save it. Follow the [remote verification steps](docs/remote-extension-connection.md#pair-and-verify);
installing the extension or generating a link alone does not establish a connection.
Expand Down
31 changes: 30 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,36 @@
All notable changes to BrowserSkill will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/).

Starting from 0.2.0, CLI / Extension / DSH Plugin share the same version number.
CLI, Extension and DSH Plugin may release separately during staged rollouts;
protocol compatibility determines which versions can connect.

## [Unreleased]

### Added

- Local pairing with mutual proofs, durable key rotation and interruption recovery.
Paired connections verify the daemon before sending business traffic; activation
invalidates the original link. Device revocation and browser registration are
serialized, and successful revocation completes live connection cleanup.
- `bsk daemon pair --replace`, local device listing/revocation, `daemon rotate`
and `daemon trust-local on|off`; status and doctor expose pairing guidance.
- Extension 0.4.2 pairing settings, staged verification, ten-language guidance,
explicit bypass confirmation and retained remote grants when using local mode.
Pairing is optional for new installs and upgrades; unpaired connections remain
usable with an identity warning and a link to the official security overview.
Paired connections and saved recovery candidates never automatically downgrade.
- `bsk daemon pair` reuses or starts the daemon before returning a usable link.
Explicit Required mode remains available; unverified connections cannot claim
an existing paired identity under the default policy.

### Changed

- Extension 0.4.3 removes obsolete migration flags and version gates while keeping
pairing optional. There is no automatic enforcement deadline.

- Initial pairing-capable CLI defaults to Warn during distribution. Required mode
and extension 0.4.3 migration retirement have separate release prerequisites;
see the [local pairing rollout](docs/local-pairing.md#release-prerequisites).

## [0.4.1] - 2026-11-02

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ If an already-running agent cannot find `bsk`, restart it to pick up the new PAT

#### 2. Connect the extension

Install it from the [Chrome Web Store](https://chromewebstore.google.com/detail/hhcmgoofomhgciiibhipgmgkgnoenaoi) or [Edge Add-ons](https://microsoftedge.microsoft.com/addons/detail/browserskill/emacgiaaaiojkkpkddmmdfhmokgmnikg). Open its popup, enable the local connection, and check its status after starting the CLI.
Install it from the [Chrome Web Store](https://chromewebstore.google.com/detail/hhcmgoofomhgciiibhipgmgkgnoenaoi) or [Edge Add-ons](https://microsoftedge.microsoft.com/addons/detail/browserskill/emacgiaaaiojkkpkddmmdfhmokgmnikg), enable the connection and start using it. Local pairing is optional: an unpaired connection stays usable and shows an identity warning. To verify the connection, run `bsk daemon pair` and paste its link into **Connection settings → Pairing link**. Pairing is remembered across restarts and upgrades; a paired connection never automatically skips verification after a failure. See [local pairing](docs/local-pairing.md).

#### 3. Install the skill for your agent

Expand Down
2 changes: 1 addition & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ bsk --version

#### 2. 连接扩展

从 [Chrome Web Store](https://chromewebstore.google.com/detail/hhcmgoofomhgciiibhipgmgkgnoenaoi) 或 [Edge 加载项商店](https://microsoftedge.microsoft.com/addons/detail/browserskill/emacgiaaaiojkkpkddmmdfhmokgmnikg) 安装扩展。打开弹窗,开启本地连接,在 CLI 启动后检查连接状态。
从 [Chrome Web Store](https://chromewebstore.google.com/detail/hhcmgoofomhgciiibhipgmgkgnoenaoi) 或 [Edge 加载项商店](https://microsoftedge.microsoft.com/addons/detail/browserskill/emacgiaaaiojkkpkddmmdfhmokgmnikg) 安装扩展,开启连接后即可使用。本机配对是可选的:未配对仍可正常使用,扩展会提示连接身份未经验证。如需配对,运行 `bsk daemon pair`,将链接粘贴到**连接设置 → 配对链接**并保存。重启和升级后无需重复配对;已配对后验证失败不会自动跳过验证。详见[本机配对指南](docs/local-pairing.zh-CN.md)。

#### 3. 给 Agent 安装 skill

Expand Down
12 changes: 8 additions & 4 deletions apps/extension/PRIVACY.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# BrowserSkill — Privacy Policy

**Last updated:** October 30, 2026
**Last updated:** November 2, 2026

This Privacy Policy describes how the **BrowserSkill** browser extension (the "Extension") handles information when you install and use it. BrowserSkill is published as part of the open-source [BrowserSkill](https://github.com/Tencent/BrowserSkill) project. The source code is publicly auditable.

Expand Down Expand Up @@ -65,7 +65,7 @@ The Extension requests the following Chrome permissions. Each is used solely for
- **`notifications`** — Request user approval before borrowing a user-owned tab when browser confirmation is enabled, alert the user when an active task requests human assistance when enabled, and notify the user when an incompatible running daemon prevents connection. Notifications support the user's browser task and are not used for advertising or promotional messages.
- **`downloads`** — Save screenshots, including full-page captures, and recorded MP4 videos when the user explicitly exports them. Track the requested video's download to distinguish successful saves from canceled or failed saves and release its temporary download URL. Also correlate and route the one browser download initiated by an active `bsk download` command. If that claimed transaction fails, BrowserSkill cancels an in-progress file or removes its completed temporary browser file. It is not used to enumerate download history or alter unrelated downloads.
- **`offscreen`** — Run the video encoder worker and manage temporary video download URLs in an extension-owned offscreen document, allowing explicitly started recording and MP4 finalization to continue when the popup closes. This does not capture other tabs, the desktop or audio.
- **`storage`** — Persist a random instance ID, optional label, and feature preferences in `chrome.storage.local`, and track pending video exports in `chrome.storage.session`. Remote credentials, website debugging history and the video catalog are stored separately in extension-origin IndexedDB; video files and recovery fragments use the origin-private file system (OPFS).
- **`storage`** — Persist a random instance ID, optional label, and feature preferences in `chrome.storage.local`, and track pending video exports in `chrome.storage.session`. Local and remote credentials, local verification settings, website debugging history and the video catalog are stored separately in extension-origin IndexedDB; video files and recovery fragments use the origin-private file system (OPFS).
- **Host permission `<all_urls>`** — Inject a small status overlay (showing "Agent Active") on pages controlled by the agent, and enable automation across whatever sites the user directs the agent to. Remote connections also use this permission for the selected endpoint. Remote page-content access requires a task-created or explicitly borrowed tab.

## 6. Where Data Goes
Expand Down Expand Up @@ -98,7 +98,7 @@ When explicitly configured by the user or agent during an active capture, HTTP r

- Operation audit is separate from website debugging and is off by default. When enabled, the selected daemon stores task and operation metadata in `BSK_HOME/audit` (by default `.bsk/audit` under the user home directory). Records include timestamps, tool types, website origins, element names with basic redaction, statuses, and error codes. Input values, page bodies, screenshots, scripts, and file contents are excluded from operation audit; these exclusions do not apply to website debugging history described above. Ended tasks are retained for 30 days and pruned when history is loaded, audit is enabled, a task starts, or the task list is queried. Users can export or delete ended tasks from the audit page. Exported copies are not automatically removed.

- Remote endpoint and device credentials remain in extension-origin IndexedDB until the user selects Local connection, clears extension storage or uninstalls. The server retains device grants until revoked; expired grants cannot connect. Disconnecting does not delete results or audit records already held by a server.
- Local and remote credentials remain in extension-origin IndexedDB when switching modes, until replaced, extension storage is cleared or the extension is uninstalled. Uncommitted staged local records expire after ten minutes. Local mode does not renew retained remote grants. The server retains device grants until revoked; expired grants cannot connect. Disconnecting does not delete results or audit records already held by a server.

## 8. User Control

Expand All @@ -122,7 +122,11 @@ The Extension is a developer tool and is not directed at children under 13.

## 10. Security

Local mode trusts processes able to bind the configured loopback port. Remote mode requires explicit pairing and encrypted transport, except for loopback development. The built-in server stores credential hashes, validates connections, supports rotation and closes connections on revocation or expiration. Third-party gateways are responsible for implementing the same authorization lifecycle and isolating device routing.
Paired local connections require mutual cryptographic proofs before browser control. Local keys and pending rotation candidates are stored in extension-origin IndexedDB, inaccessible to website content scripts; the daemon stores private local pairing records in its bsk home. Pairing-link secrets stay in the URL fragment and are never sent as request paths, query parameters or headers.

Local pairing is optional for fresh installs and upgrades. Unpaired connections remain usable and show an identity warning; they retain the risk of local peer impersonation. Once paired, verification failures never automatically fall back to an unverified connection. Explicitly skipping verification is a separate user choice and keeps a warning visible. Pairing credentials survive mode switches, and retained remote grants are not renewed while using local mode. See [local pairing](../../docs/local-pairing.md).

Remote mode requires explicit pairing and encrypted transport, except for loopback development. The built-in server stores credential hashes, validates connections, supports rotation and closes connections on revocation or expiration. Third-party gateways are responsible for implementing the same authorization lifecycle and isolating device routing.

Remote page reads and operations require task-owned tabs; merely moving a user tab into an Agent Window does not authorize it. Borrowing follows the confirmation preference controlled in the browser. Treat a paired server as trusted to operate your browser profile and signed-in websites. Browser profile files, server data and TLS keys must remain private to trusted local users. See [remote browser connections](../../docs/remote-extension-connection.md) for deployment details.

Expand Down
Loading
Loading