Introduction

When performing browser-related tasks in DSH, a common problem arises: the model needs to access a logged-in website, but the browser session is not in the model’s control, or different clients maintain their own login state. dsh-plugin-browser addresses this problem by wrapping Playwright + CDP browser automation into a DSH plugin, allowing the model to operate the same logged-in Chrome through 15 browser_* tools.

What is this

q35888/dsh-plugin-browser is a DeepSeek Harness (DSH) plugin. Its positioning is:

  • Native browser automation for DeepSeek Harness
  • Provide 15 browser_* tools on ctx.tools
  • Use Playwright + CDP
  • Share the same logged-in Chrome across DSH / pi / MCP clients

Maintainer is q35888, license is MIT. Repository address:

https://github.com/q35888/dsh-plugin-browser

The dependency version constraints provided in the package are as follows:

{
  "peerDependencies": {
    "@deepseek-ai/dsh-tools": "^0.1.0-rc.7",
    "@deepseek-ai/cordis": "^4.0.1"
  },
  "dependencies": {
    "playwright": "^1.61.1"
  }
}

Core Features

Below are the capabilities most directly related to daily use.

Session Mode

  • browser_session:Start or switch session
  • real:Use logged-in Chrome
  • isolated:Use independent incognito session
  • Chrome will automatically launch when not running
  • Default directory settings can share the same logged-in Chrome as agentic-browser-mcp

Page Interaction

The following tools are mainly based on ref positioning:

browser_navigate
browser_snapshot
browser_click
browser_type
browser_select_option
browser_hover

First open the page, then use browser_snapshot to obtain manipulatable elements, and then perform clicks, input, selection, or hover.

Tabs, Dialogs, Page State

  • browser_tabs:Manage tabs
  • browser_handle_dialog:Handle JS dialogs
  • browser_eval:Execute page JS
  • browser_storage:Read cookies/localStorage
  • browser_console:Read console logs
  • browser_screenshot:Screenshot to file
  • browser_wait_human:When encountering CAPTCHAs or login, pop up a card in the DSH interface to wait for manual operation, with a 5-minute timeout

Installation

Choose one of Installation Method A or Method B; mixing them will cause duplicate plugin entries leading to DSH startup failure. This article is written based on the dsh CLI method.

dsh CLI installation command:

dsh plugin --profile web add github:q35888/dsh-plugin-browser

If you plan to use the isolated mode, also install Chromium:

npx playwright install chromium

isolated mode requires npx playwright install chromium (approx. 95MB); using only real mode can skip this.

After the above steps, the plugin will register browser_* tools in DSH’s ctx.tools.

Typical Usage

An example from the documentation:

You: Help me check what notifications are on github today
Model: browser_navigate → browser_snapshot → Read notification list → Report to you

In actual operation, usually follow this order:

  1. First call browser_session, choosing real or isolated session.
  2. Call browser_navigate to open the target page.
  3. Call browser_snapshot to get page elements and ref.
  4. Use tools like browser_click, browser_type, browser_select_option, browser_hover to operate the page.
  5. When you need to pin a specific tab, use switch from browser_tabs.

A few usage points:

  • ref is temporary; after the page changes, re-run browser_snapshot before operating
  • When encountering CAPTCHAs or 2FA, call browser_wait_human, confirm in the DSH interface after finishing the manual operation
  • Newly opened tabs follow automatically; when you need to pin a specific tab, use switch from browser_tabs
  • isolated mode requires npx playwright install chromium (approx. 95MB); using only real mode can skip this

Use Cases and Considerations

This plugin is suitable for scenarios where you need to access logged-in websites within a DSH session: you have already logged into a site in your browser, so the model can continue to read or operate the page within the browser provided by this plugin.

Before use, please note:

  • The plugin runs with the current dsh process permissions; browser_eval and browser_storage can read cookies and login credentials in the browser, please only use this plugin in sessions you trust
  • You should check the source code and license before installation; the license is MIT
  • Multiple sessions/sub-agents in the same DSH process share the same browser tabs; concurrent use will interfere with each other
  • In isolated mode, if DSH exits unexpectedly, the independent browser process may remain
  • It depends on DSH’s rc phase tool API; if it fails after a major DSH version upgrade, deleting the two lines in the machine-level configuration will allow for a complete rollback
  • In macOS headless isolated mode, setting AGENT_BROWSER_ISOLATED_CHANNEL=chrome might block the daily Chrome

Conclusion

The value of dsh-plugin-browser is to integrate browser automation back into DSH’s tool invocation chain: the model can directly navigate, read pages, and operate elements, and hand over the operation back to the user when manual verification is required.

Repository address:

https://github.com/q35888/dsh-plugin-browser

The directory page URL has not been confirmed in the facts of this article, so it is not provided here.