TB

tencent/browserskill

Developer tools
9.8K stars Quality 73 Trend 95MIT

Your agent. Your browser. One connection. Turn the browser you already use into a workspace for your AI agent.

Overview

Your agent. Your browser. One connection. Turn the browser you already use into a workspace for your AI agent.

README

BrowserSkill

Your agent. Your browser. One connection. Turn the browser you already use into a workspace for your AI agent.

English · 中文 Website · Demo · Features · Website debugging · Documentation · Changelog

BrowserSkill connects your AI agent to Chrome or Microsoft Edge, using your existing logins. Give it a task to read, click, fill, or investigate. Work stays visible in a separate Agent Window, and you can take over when needed. Existing tabs can be explicitly borrowed and returned when the task ends.

See it in action

Click the cover to expand the video · Download MP4 Real browser actions on a local demo workspace, recorded from main.

Bring the agent you already use

These and other agents that can run shell commands use the same bsk CLI. DeepSeek Harness has a dedicated plugin with native browser tools and task previews. You choose the agent and model; BrowserSkill connects it to your browser.

What you can do

Your goal What BrowserSkill provides
Work where you are already signed in Read documents, search internal sites, and complete web workflows with the browser’s existing login state.
Turn instructions into browser actions Read page text and controls, click, type, fill forms, and manage tabs. Capture viewport or full-page screenshots; upload and download files in local mode.
Stay in control of the task Follow the agent in its own window, explicitly borrow an existing tab, or take over for login, verification, and other steps that need you.
Take web data with you Export loaded tables and lists as JSON/CSV, with column names, page/frame sources, merged-cell metadata, and explicit coverage. Structured extraction
Find the evidence behind a failure Connect actions to requests, response bodies, console messages, and page changes. Inspect performance, slow APIs, and suspected duplicate requests; test a hypothesis with explicit HTTP rules or request replay. Website debugging
Keep a replay of the work Record one authorized task tab as a silent MP4, then preview, save, or delete it from the extension. Task video recording
Continue when the page is ready Wait for a requested element condition with an explicit timeout before the next step. Element waits
Use the right browser for the job Name browser instances, bind a task to a specific profile, or pair a server-side agent with the browser on your computer. Browser profiles
Review what happened Reopen browser-local debugging history, export evidence as JSON, or enable a separate operation audit to review task activity. Operation audit

Quick Start

For local automation, you need an AI agent + the bsk CLI + the browser extension. The CLI includes the background daemon. The skill teaches your agent how to use it.

Component Supported environments
CLI / daemon macOS: Apple Silicon and Intel · Linux: x64 and ARM64 · Windows: x64
Extension Chrome and Microsoft Edge, based on Chromium 125 or later. Other Chromium browsers may work; compatibility is not guaranteed.
Agent integration A shell-capable agent with the BrowserSkill skill, or DeepSeek Harness with the DSH plugin.

Let your agent set it up

Send this to your agent:

Set up browser-skill on this machine by following https://raw.githubusercontent.com/Tencent/BrowserSkill/main/AGENT_INSTALL.md

The guide covers CLI installation, the correct skill or DSH plugin, connection checks, and a first browser task. You will still need to install the extension in the browser you want to use:

Install for Chrome · Install for Edge

Try your first task

Once connected, ask your agent:

Use browser-skill to open https://example.com, summarize the page, and end the browser session when finished.

The agent opens its own window in the background, reads the page, returns the summary, and stops its task. External links or manually created tabs that land in the task window are moved to your most recently used normal window; a user window is created if none remain. Routing happens after tab creation, so a tab may briefly appear in the task window. Page-opened tabs and human assistance or recording are preserved. Harnesses that support skill slash commands can also use /browser-skill.

Moving any controlled tab out of its original Agent Window ends the entire browser session, preserves every page in place, and removes its control indicators. Borrowed tabs also stay where they are. Moving a tab back does not resume the task; starting again requires a user decision. Reordering tabs within the same window is unaffected. Normal session stop still returns borrowed tabs and cleans up task pages.

Chrome can still activate a window when a page opens a native popup. For observed task popups, the extension restores the previous Chrome window or minimized state if you have not switched windows. Chrome’s public extension APIs cannot guarantee zero transient activation or restore focus to another application.

In WorkBuddy/CodeBuddy, or hosts that reap command children, the agent should reuse an existing daemon or run bsk daemon start --foreground in a managed background task, then verify it from a separate tool call. Follow the host setup guide for shared BSK_HOME, BSK_AUTO_START=0, and the independent-terminal fallback when the host cannot keep a task alive.

DeepSeek Harness plugin

The DSH plugin adds native bsk_* tools, browser task previews, and screenshot results to the DeepSeek Harness Web UI. It uses the same bsk CLI and extension and includes its own BrowserSkill skill.

Upgrading to 0.3.3: update the CLI and extension before the plugin. The six browser_* tools have been renamed to bsk_*, without aliases for the old names. Update custom tool calls and policies, restart the DSH profile, and invoke /browser-skill again in existing conversations. See the migration guide.

With DeepSeek Harness, pnpm, and bsk installed and the extension connected, add the plugin to your profile:

dsh plugin --profile web add @wxg-prc-cpg/browser-skill-dsh-plugin
dsh --profile web

Replace web with your profile name. Make sure bsk is available on the PATH used to start DSH, or set the plugin’s bskPath. In a conversation, invoke /browser-skill and describe the task. A separate bsk install-skill step is not needed.

Plugin usage and configuration · npm package

Website debugging

Give your agent the browser evidence behind a bug. Start capture before reproducing an issue on a website you are authorized to debug, then inspect the result in the extension or through the agent.

  • Follow an operation: see its requests, console output, form-field values, and immediate or delayed page changes. Capture includes supported manual actions as well as agent actions.
  • Inspect a request: read retained headers, submitted data, response bodies, timing, and errors. Filter traffic or inspect a specific JSON field.
  • Investigate performance: inspect page-load metrics, API timing summaries, and suspected duplicate requests. Missing or partial evidence is identified explicitly.
  • Test and keep evidence: configure task-local request modification, blocking, mock responses, or same-origin replay; save a JSON record to review or share later.

Try a task such as:

Use browser-skill to investigate why saving the form on http://localhost:3000 fails. Start website debugging before reproducing it, inspect the request, response and console, then export the evidence and end the session.

From the extension, open Quick Actions → Website debugging for an existing task. The evidence page connects the operation timeline, requests, Console, page context, Performance, and API analysis. Its history remains accessible after the task ends, even without a daemon connection. A new agent task needs a user-provided export to inspect an ended task’s history.

Request replay sends a new request using the page’s current session and can change server data. Capture and redaction have limits; retained evidence may still contain sensitive information. See website debugging for the workflow, CLI examples, and limits.

More workflows

Capture a full page

Use Quick Actions → Full-page screenshot for automatic scrolling, a long image you scroll yourself, or the visible area. This extension feature also works without an agent or daemon connection.

For a page in an agent session:

bsk screenshot --session  --full-page --out page.png

Agent capture supports background tabs without focusing the window and restores the original scroll position when the document remains available. Full-page capture follows the document’s scroll area; nested scrolling panels and virtualized lists have limitations. Screenshot guide

Choose a browser profile

Open the extension in the intended profile and choose Copy profile instructions, then send those instructions with your task. You can also assign a unique Browser name and select it explicitly:

bsk browsers
bsk session start --browser "Work profile" --no-focus --json

The name is set in BrowserSkill; it is not automatically taken from Chrome’s profile name. Each session stays bound to the selected instance. Profile selection guide

Add --incognito to isolate a task from the profile’s ordinary website login state. Enable the extension’s Allow in incognito setting first. Incognito tasks cannot borrow tabs, and all incognito windows in a profile share login state with each other. Incognito guide

Run the agent on a server

Keep the browser and its logins on your computer while the agent, CLI, and daemon run on a server. Pair the extension with that server over authenticated WSS; the browser initiates the connection, so your computer needs no inbound port.

The built-in server supports device pairing, renewal, and revocation. The bsk upload and bsk download file-transfer commands remain local-only. Authorized video exports can write to the CLI machine, including a remote server; Save MP4 as in the extension writes to the browser computer. Remote connection guide

Browser control and privacy

By default, an Agent Window shares the selected profile’s login state; it is not a separate account or security sandbox. Agents can act with the permissions of the signed-in websites, so choose the tasks and agent you trust.

The extension has two independent Automation settings, both enabled by default:

Setting What it controls
Confirm before borrowing tabs Ask before an agent takes control of one of your existing tabs. Turning it off permits borrowing without that prompt.
Allow requests for human help Let the agent ask you to handle login, verification, or another step that needs your participation.

These browser settings apply to existing and new sessions. Legacy --unattended, tab borrow --no-confirm, and BSK_REQUEST_HELP=off inputs cannot override them. Disabling human help does not mean the requested step was completed. Close the Agent Window to stop its tasks.

BrowserSkill does not operate a mandatory cloud service or collect product telemetry. Automation results go to your selected daemon or gateway and the agent using it; that agent or service may process or retain them under its own policies. The extension does not independently call an AI provider.

Optional history and recordings Where it is saved What to know
Website debugging The current browser profile, including in remote mode Retains captured evidence, including available bodies and field values. Stopped records expire after 30 days, with a 50-record / 50 MiB retention budget and earlier eviction when necessary. Stop capture before deleting a record.
Operation audit The daemon’s host, under BSK_HOME/audit Off by default. Records task and operation metadata, excluding input values, page bodies, screenshots, and file contents. Ended tasks expire after 30 days.
Task video The current browser profile; exported copies at the chosen destination Opt-in, silent capture of one authorized tab, limited to 10 minutes / 256 MiB per video. Recordings expire 24 hours after creation; the temporary video budget is 1 GiB. The library supports preview, export and deletion.

These features offer export and deletion. Stopping a task or disconnecting does not delete retained history or videos; expiration is applied during access or cleanup. Exported copies and copies already received by an agent or gateway must be managed separately. Known secrets are filtered from debugging evidence, but redaction cannot guarantee that all sensitive data is removed. Video frames are not automatically redacted; review visible content before sharing.

Privacy policy · Operation audit · Debugging retention and limits

Updating

Finish active browser tasks, then update the CLI:

bsk update --yes

For the default local setup, this installs the new executable and checks that it runs while the daemon keeps serving, then restarts the daemon from it on the same port. If the restarted daemon does not become ready, the previous executable is put back and the daemon is restarted from it. A daemon started with --foreground is left running on the previous version; restart it in its terminal or supervisor. So is a background daemon when bsk update runs where it could not start one again, such as inside a sandbox whose Windows Job forbids breakaway; restart it with bsk daemon restart outside the sandbox. If you use the installer to replace the binary, restart the daemon afterwards with bsk daemon restart.

A daemon that bsk started in the background also checks for a new release every 30 minutes and, while no agent session is active, installs it the same way. It then starts a daemon from the new executable and exits only once a daemon of the new version serves the same port. If the new daemon exits or is not ready within 20 seconds, it is stopped, and the running daemon puts the previous executable back, serves again on the same port, and retries that release after 6 hours. Browser connections drop for a moment during a handover and reconnect. A daemon that stops for another reason during an update, such as going idle, puts the previous executable back first. A daemon started with --foreground belongs to its terminal or supervisor, so it only reports new releases: run bsk update, then restart the daemon there. If bsk cannot write next to its executable, it only reports new releases; update it with the installer or package manager you used. Set BSK_AUTO_UPDATE=off to disable daemon-side auto-update while keeping manual bsk update available.

bsk doctor shows the last update attempt; update-state.json in the bsk home keeps its stage, result and error. Updates of one executable run one at a time, even from different bsk homes, through .bsk.update.lock (.bsk.exe.update.lock on Windows), which stays next to it. Until an update is confirmed, the previous executable stays next to the new one as .bsk.old-* (.bsk.exe.old-* on Windows); one that is still running remains until its process exits, and a later daemon start removes it. On Windows, self-update renames the running executable, which NTFS supports; where the file system refuses, the update fails and leaves the installation unchanged. bsk supports Windows 10 and Windows Server 2016 or later.

Update the extension through its browser store. Update the DSH plugin separately, then restart its profile:

dsh plugin --profile web update @wxg-prc-cpg/browser-skill-dsh-plugin --latest

Check bsk --version, bsk status, and bsk doctor. Keep the CLI, running daemon, extension, and optional DSH plugin on matching releases for new features. This README describes the current repository; store builds can lag during review. Check the changelog and releases for availability.

Managed CLI skills update on daemon startup, session start, or doctor while their files remain unchanged. Local edits and custom skills are preserved. Start a new agent session to load updated instructions; doctor reports any paused skill updates.

Documentation

Goal Guide
Install and verify with an agent Agent setup
Investigate a website or API Website debugging
Capture long pages Full-page screenshots
Record and save a task video Task video recording
Export tables or lists Structured extraction
Wait for an element condition Element waits
Use a specific account or profile Browser profiles
Connect a server-side agent Remote browser connections
Run in a sandbox Sandboxed agents
Review recorded task metadata Operation audit
Integrate with DeepSeek Harness DSH plugin
Understand the implementation Architecture · Protocol

For Developers

The repository is a Rust + pnpm workspace. For a source build, use Rust stable, Node.js 22, and the pnpm version declared in package.json:

pnpm install --frozen-lockfile
cargo build --release --locked
pnpm ext:build

The CLI is built under target/release/; load apps/extension/dist/chrome-mv3/ as an unpacked extension. For extension development, use pnpm ext:dev.

Directory Component
crates/bsk-cli CLI, daemon, and bundled agent skill
crates/bsk-protocol Wire types and JSON schemas
apps/extension Browser automation, debugging workspace, and extension UI
packages/dsh-plugin-browserskill DeepSeek Harness integration
packages/ui, packages/i18n, packages/vom Shared UI, localization, and page observation
evals/browser Local test pages and browser capability evaluations

Run cargo test --workspace --locked, pnpm ext:test, and pnpm lint for the relevant checks. See the browser evaluation guide for reproducible browser cases. Bug reports and focused contributions are welcome through GitHub Issues and pull requests; remove sensitive data before attaching browser evidence.

The extension interface supports English, Simplified and Traditional Chinese, Korean, Japanese, French, Italian, Spanish, German, and Brazilian Portuguese. See localization to contribute translations.

Contributors

Thank you to everyone who contributes code, documentation, translations, and feedback.

See contributions on GitHub · Share an issue or idea

License

MIT

View the full README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add tencent/browserskill
New to MCP? Start with the mcpskill.org guide →