dsh-browser

omdsh-devMIT活跃维护

Chrome 侧边栏扩展,让 DeepSeek Harness 直接操控浏览器完成自动化任务,不依赖视觉模型也能操作网页。

Chrome sidebar extension that lets DeepSeek Harness operate your browser directly, no vision capabilities required. 一款 Chrome 侧边栏扩展程序,可让 DeepSeek Harness 直接操控您的浏览器,无需视觉能力。

v0.1.4发布于 2026-11-08 12:54 UTC1,035star +40 / 7 天84fork同步于 2026-11-10 11:51 UTC

怎么上手

由 README 提炼,执行前请确认
curl -fsSL https://raw.githubusercontent.com/Lum1104/dsh-browser/refs/heads/main/scripts/install.sh | bash
cd ~/.dsh/dsh-browser && pnpm start
硬件要求按 README 说明

README 未说明显存或 GPU 要求;软件环境需 Node.js >=24、Corepack/pnpm,浏览器需 Chrome 125+ 或 Firefox 140+,Windows 另需 PowerShell 5.1 或 7+。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

让 DeepSeek Harness 直接操控你正在用的 Chrome/Firefox 标签页,无需视觉能力

Chrome 侧边栏扩展,让 DeepSeek Harness 直接操控浏览器完成自动化任务,不依赖视觉模型也能操作网页。

核心能力

  • 把页面转成带编号控件的结构化文本快照
  • 支持点击、输入、按键、滚动、剪贴板与文件上传
  • 用 browser_list_tabs 和 browser_follow_tab 管理并绑定标签页
  • 密码与卡号始终以掩码渲染,不离开页面
  • 保留登录态、会话与 Cookie,操作真实浏览器

容易踩的坑

仅支持最新 dsh 版本(当前锁定 0.2.1-rc.5),旧版本不兼容;npm 上的 dsh-browser 包属于其他项目,本项目需用安装脚本;安装后需在 chrome://extensions 手动加载或重载扩展,并重启已运行的 dsh;Firefox 需手动把 ~/.dsh/ext-bridge-token 的令牌填入扩展设置。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

3 个版本v0.1.4
  1. v0.1.4dsh Browser Control v0.1.4 — Developer Tools, Browser Input, and DSH 0.2.1最新正式版2026-11-08 · 2026-11-08 12:54 UTC

    dsh Browser Control v0.1.4 adds developer tools, viewport screenshots, richer browser input, and tab management, with permission, model, and command controls directly in the side panel. The bridge and workspace now target DSH 0.2.1-rc.5.

    Highlights

    Developer tools and viewport screenshots

    • Added Chrome developer tools for inspecting elements, computed styles, box models, and matched CSS rules; editing styles and attributes; evaluating page JavaScript; and reading console output.
    • Added network capture with request lists, request details, and request/response bodies. Credential headers and bodies from authentication-related URLs are redacted by default.
    • Developer tools require separate consent through a per-call approval, a current side-panel session grant, or Allow developer tools in Settings. Session grants expire when the last panel closes or the background worker restarts.
    • Added browser_screenshot, which returns the controlled tab's visible viewport through DSH's durable image attachment service. Screenshots require the controlled tab to be active in a focused window and require approval unless unrestricted browser control is enabled.

    Screenshots capture visible pixels without masking sensitive fields. Text snapshots continue to mask password and payment-card values. Developer-tools consent is separate from unrestricted browser control and trusted origins.

    Richer input and page interaction

    • Added mouse-button and modifier support, keyboard chords, held keys, caret insertion, and per-character typing.
    • Added browser_clipboard for plain-text and rich-HTML clipboard writes and paste operations, plus browser_upload for attaching local files to file inputs in Chrome.
    • Added targeted element lookup through browser_snapshot queries and snapshots scoped to a single iframe.
    • Improved rich-text editor input and preserved caret placement in native fields and editable content.
    • Bound native input, file uploads, and developer tools to the selected frame and document, including nested cross-origin frames.
    • Prioritized visible dialog controls in the numbered element inventory and respected disabled controls and non-editable boundaries.

    Tab management and browser permissions

    • Added browser_list_tabs, browser_follow_tab, and browser_close_tab for discovering, selecting, and closing browser tabs.
    • browser_open_tab({ active: false }) now opens and follows a page in the background while keeping the current tab visible.
    • Added an explicit Allow unrestricted browser control setting for page reads, browser actions, and tab management. Disabling it revokes pending operations and waits for already-dispatched actions to settle.
    • Added Jump back to the assistant page to the tab-handoff prompt, alongside the choices to keep the assistant on its original page or follow the current page.
    • Browser-protected pages support tab metadata and browser-level navigation, back, forward, and reload. Their page DOM remains inaccessible.

    More controls in the side panel

    • Added session permission presets, model selection, and reasoning-effort controls in the composer. Model choices can be changed during a running turn for the next turn, and new-chat selections are applied before the first prompt.
    • Added a / menu for host commands and user-invocable skills. Unknown commands preserve the draft and report the error.
    • Added image paste and drag-and-drop alongside the existing image picker.
    • Added a persistent interface-language setting with English, Chinese, and browser-language options, shared by the panel, approval notifications, and tool errors.
    • Added a scroll-to-latest button. Streaming follows new content while the conversation is at the bottom; reading earlier messages preserves the current scroll position.
    • Improved restored assistant streams, persisted session model choices, and question-card layout and accessibility.

    DSH 0.2.1 and local service discovery

    • Updated the workspa
  2. v0.1.3dsh Browser Control v0.1.3 — Firefox, Cross-Platform Setup, and Contextual Sessions2026-09-04 · 2026-09-04 06:47 UTC
    查看更新说明

    dsh Browser Control v0.1.3 expands the project from a Chrome-first browser assistant into a cross-platform Chrome/Firefox integration with safer session continuity, richer side-panel workflows, and support for the current DSH transport architecture.

    Highlights

    Firefox and cross-platform setup

    • Added a Firefox MV3 build with a native sidebar, event-page background, runtime-port recovery, and Firefox-specific authentication safeguards.
    • Added a Windows PowerShell installer alongside the macOS/Linux installer.
    • Improved Chrome and Chromium discovery, clipboard fallbacks, browser launch behavior, and installation guidance across macOS and Linux.
    • Added automatic discovery of DSH Desktop’s recommended fixed port, 43189.
    • The bridge now displays a copyable WebSocket address in DSH General settings.

    Firefox is currently distributed as a source build and requires Firefox 140 or later. Because moz-extension:// UUIDs are not stable add-on identities, Firefox must authenticate with the token stored at ~/.dsh/ext-bridge-token.

    Faster browser workflows

    • Highlighted page text now appears as a removable quote in the side-panel composer and is sent inside the existing untrusted-content boundary.
    • New conversations automatically capture and inject the current page snapshot before the first prompt.
    • Added browser_open_tab, allowing the assistant—with approval—to open an HTTP(S) URL in a new tab, follow it, and return its page snapshot.
    • Hardened new-tab cancellation and readiness handling, including Firefox’s initial blank document.
    • Added a persistent text-size control with steps from 90% to 175%.
    • Fixed Settings sections being compressed or clipped in short side panels.

    Browser operation remains text-only. User-attached images continue through the separate DSH multimodal conversation path.

    Safer and more flexible sessions

    • Conversation restoration is now scoped to the same browser tab, window, origin, and pathname. Query strings and fragments do not split a page session.
    • Opening the same URL in a new tab creates a new conversation.
    • Navigating while the panel is closed starts fresh, while navigation during an open panel or a successful assistant action remains part of the current conversation.
    • Automatic restoration no longer falls back to unrelated global history; older conversations remain available through the history picker.
    • Sessions can be created or switched while another agent turn is running, with independent per-session tab affinity and cancellation state.
    • Added “Stay & stop asking” for users who want the assistant to keep controlling its original tab while they browse elsewhere.
    • Added session deletion through archive-then-purge handling with persisted-ID validation and running-session protection.
    • Added side-panel configuration for Claude-, OpenAI-, and Codex-compatible API relay profiles, with credentials stored in the DSH credential store.
    • Preserved provisional sessions, pending questions, approvals, and page-scoped recovery across panel and bridge lifecycle changes.

    DSH 0.1.2 bridge architecture

    • Migrated the primary bridge transport to the DSH 0.1.2 Typert Gateway, Connection, and Remote APIs.
    • Added a capability-selected compatibility adapter for DSH 0.1.1-rc.2.
    • Kept Desktop-owned ask_user_question waterfalls in the native Desktop UI while routing extension-owned sessions to the browser panel.
    • Corrected older-history pagination by using the real Host follow cursor and preserving paging options.
    • Malformed history pages and records now fail closed instead of appearing as valid but incomplete history.
    • Improved follower replacement, tool cancellation, and session-scoped approval behavior.

    Compatibility

    • Primary runtime: @deepseek-ai/[email protected]
    • Temporary compatibility runtime: DSH 0.1.1-rc.2
    • Earlier DSH releases are no longer supported.
    • Chrome requires version 116 or later.
    • Firefox requires version 140 or later and a bridge token.
    • Regu
  3. v0.1.1dsh Browser Control v0.1.1 — First Public Release2026-08-21 · 2026-08-21 08:33 UTC
    查看更新说明

    This is the first public release of dsh Browser Control.

    dsh Browser Control connects DeepSeek Harness to the Chrome tab you are already using. It combines a Chrome MV3 extension, a local dsh bridge plugin, and a focused side-panel conversation interface.

    The assistant can read structured page content, operate controls, fill forms, scroll, and navigate while preserving your existing browser login state, cookies, and sessions.

    Highlights

    Operate your real browser

    The assistant works with the Chrome tab you already have open instead of launching a separate headless browser.

    Included browser tools:

    • Read the current page as structured text.
    • Click links, buttons, checkboxes, and other controls.
    • Fill forms with React- and Vue-compatible input handling.
    • Press keyboard keys.
    • Scroll pages and read specific regions.
    • Navigate, reload, go back, and go forward.
    • Wait for page loading and DOM changes to settle.

    Pages opened before the extension was installed or reloaded are instrumented automatically on the first action.

    Text-first browser interface

    Browser pages are exposed as bounded structured text with numbered interactive elements.

    • Stable element references across snapshots.
    • Delta snapshots that return only relevant changes.
    • Automatic post-action page context to reduce browser round trips.
    • Cross-frame snapshots and frame-local actions, including cross-origin frames.
    • Accessible names, form state, main content, and navigation changes.
    • Strict per-frame and aggregate output budgets.

    Browser tools never capture screenshots. User-attached images use a separate multimodal chat path and do not change this browser privacy boundary.

    Multimodal conversations

    The side panel supports PNG, JPEG, WebP, and GIF attachments when the connected dsh host advertises image capability.

    • Mixed text-and-image prompts.
    • Image-only prompts.
    • Image preview and removal before sending.
    • Durable image rendering in conversation history.
    • Host-negotiated limits for image count, size, and dimensions.
    • Localized validation and admission errors.

    Image support remains model-dependent. If the selected model cannot process images, the host rejects the prompt before model I/O and the side panel restores the complete draft.

    Side-panel conversation experience

    The extension provides a complete browser-assistant workspace inside Chrome:

    • Streamed user and assistant messages.
    • Dedicated browser-tool activity display.
    • Session history with dsh-generated titles.
    • Resume previous conversations after reopening Chrome or the side panel.
    • A dedicated New Chat action.
    • Answer ask_user_question interactions directly from the side panel.
    • Stop an active turn without discarding the session.
    • Restore running turns, pending questions, and approvals.
    • English, Simplified Chinese, and Traditional Chinese interfaces selected from the browser language.

    Controlled-tab continuity

    Browser work remains bound to one explicit tab.

    • Normal tab switches do not silently retarget the assistant.
    • The controlled tab can continue operating in the background.
    • Starting a new chat explicitly binds control to the currently active tab.
    • Closing the controlled tab pauses browser tools until the user chooses how to recover.
    • Tab identity survives MV3 service-worker restarts and Chrome tab replacement.
    • Asynchronous browser actions revalidate the tab, frame, document, and approval state before dispatch.

    The extension never changes the visible tab on its own.

    Approval and trust controls

    State-changing browser actions fail closed until approved unless their origins are explicitly trusted.

    • Page reads can be set to automatic, ask every time, or disabled.
    • Click, type, keypress, navigation, history, and reload actions support explicit confirmation.
    • Allow once, trust for the current side-panel session, or permanently trust an origin.
    • Wildcard trusted origin

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    dsh Browser Control dshfind

    English | 中文

    Connect DeepSeek Harness to the Chrome or Firefox tabs you are already using. The model can read page content, operate controls, navigate, and manage tabs while preserving your login state, session, and cookies. A side panel or sidebar provides the conversation UI.

    dsh is DeepSeek AI's open-source, plugin-based agent harness. This repository provides a companion browser bridge plugin and Chrome/Firefox MV3 extension as one standalone pnpm workspace.

    Pages become structured text with a numbered inventory of interactive elements. Tools address elements by number or selector; browser_screenshot captures the controlled tab's viewport after approval. The side panel also accepts PNG, JPEG, WebP, and GIF attachments when the host advertises image support.

    [!IMPORTANT] The workspace targets the latest public dsh release, currently pinned to 0.2.1-rc.5. Older DSH releases are not supported.

    Quick install

    The standard dsh plugin command alone cannot install this project. The integration contains both a dsh bridge plugin and a browser extension. The one-line installer currently sets up the Chrome build.

    macOS and Linux:

    curl -fsSL https://raw.githubusercontent.com/Lum1104/dsh-browser/refs/heads/main/scripts/install.sh | bash
    

    Windows, in PowerShell:

    $s="$env:TEMP\dsh-install.ps1"; irm https://raw.githubusercontent.com/Lum1104/dsh-browser/refs/heads/main/scripts/install.ps1 -OutFile $s; powershell -NoProfile -ExecutionPolicy Bypass -File $s
    

    When the installer opens chrome://extensions, follow its instructions to load or reload dsh Browser Assistant. If dsh is already running, restart it after installation. See Detailed installation and usage for prerequisites, startup commands, updates, and developer installation.

    [!IMPORTANT] The unscoped dsh-browser package on npm belongs to a different project and is not affiliated with this repository. This project is not currently published as an npm package; use the installer above.

    Performance

    In a paired 60-run end-to-end benchmark on August 18, 2026, both backends completed all 30 assigned runs successfully, while dsh Browser Control required fewer model/tool round trips and finished faster:

    BackendSuccessMean end-to-end latencyMean browser tool calls
    dsh Browser Control30/305.32 s3.4
    Matched Playwright baseline30/306.67 s4.7

    The paired Playwright / extension duration ratio was 1.24 (95% CI 1.16–1.34): Playwright took about 24% longer, or equivalently, dsh Browser Control reduced latency by about 20% and saved 1.35 seconds per task on average. The suite used six browser tasks, five deterministic seeds, the same DSH profile and model (deepseek-v4-flash), and independently validated page state. See the benchmark methodology and reproduction guide.

    Core capabilities

    CapabilityToolNotes
    Read pagebrowser_snapshotStructured text snapshot: title, URL, main text, numbered controls, and masked form fields; delta: true returns only changes, frame reads one iframe, and query locates any element by text/selector/role and returns its selector
    Clickbrowser_clickClick or double-click by index or selector; supports mouse buttons and modifiers
    Textbrowser_typeReact/Vue-compatible input; replace clears the field first, and mode selects caret insertion or per-character key events
    Press keysbrowser_pressSingle keys or chords (modifiers); action: down/up holds a key across calls and repeat repeats it
    Scrollbrowser_scrollScroll the page or selected iframe up, down, to the top, or to the bottom
    Clipboardbrowser_clipboardwrite puts text/HTML on the system clipboard; paste delivers it as a paste event or a real platform shortcut
    Filesbrowser_uploadAttach local files to an input[type=file] (Chrome)
    Navigatebrowser_navigate / browser_open_tab / browser_back / browser_forward / browser_reloadNavigation inside the controlled tab, or open a URL in a new tab and follow it (active:false keeps the current tab in front)
    List tabsbrowser_list_tabsList accessible tabs with stable IDs, titles, URLs, window/index metadata, and active/controlled state
    Follow tabbrowser_follow_tabBind later browser tools to a tab returned by browser_list_tabs; it stays in the background unless activate: true
    Close tabbrowser_close_tabClose a tab returned by browser_list_tabs
    Read regionbrowser_get_textLazy-loaded or partial page text
    Wait for stabilitybrowser_waitPage-load and render-settle detection
    Send imagessession.prompt / session.attachmentHost-capability-gated image drafts, image-only prompts, and durable history previews
    Quote a selectionside panel composerText you highlight in the page appears in the composer and is sent with your next message as fenced, attributed page content

    Clicks, text entry, and scrolling run in the selected document, including cross-origin iframes. Chrome uses its debugger for native keyboard events, caret insertion, system paste, and file uploads. Screenshots require an active tab in a focused window; browser_follow_tab { activate: true } brings the controlled page to the front.

    Repository layout

    packages/browser/bridge-browser/
      cordis.patch.yml
    extensions/dsh-browser/
    scripts/install.sh
    scripts/install.ps1
    

    Why this design

    • Your real browser, not a headless copy: the model works in the page you already have open, retaining logins, sessions, and cookies.
    • A text-first page interface: numbered controls, stable IDs across snapshots, delta updates, and masked sensitive values make pages operable without screenshots; user-attached chat images use dsh's separate multimodal message path.
    • Pointing instead of describing: highlight the passage you mean and the side panel quotes it, so "explain this" needs no page tour. The quote is captured only while a panel is open, and nothing is sent until you send the message.
    • A narrow privacy boundary: passwords and payment-card values are always rendered as •••• and never leave the page.
    • A guarded bridge: authenticated handshakes protect remote connections, privileged gateway methods reject non-loopback callers, and the extension binds tools to one user-controlled tab.

    Detailed installation and usage

    Requirements: Node.js >=24, Corepack/pnpm, and Chrome 125+ or Firefox 140+. Windows additionally needs Windows PowerShell 5.1, which ships with Windows, or PowerShell 7+.

    Install or update

    For a managed installation, run:

    curl -fsSL https://raw.githubusercontent.com/Lum1104/dsh-browser/refs/heads/main/scripts/install.sh | bash
    

    or, on Windows:

    $s="$env:TEMP\dsh-install.ps1"; irm https://raw.githubusercontent.com/Lum1104/dsh-browser/refs/heads/main/scripts/install.ps1 -OutFile $s; powershell -NoProfile -ExecutionPolicy Bypass -File $s
    

    The installer downloads main, builds and registers the bridge plugin, builds the Chrome extension into ~/.dsh/browser-extension, and opens chrome://extensions. On the first install, load that directory as an unpacked extension; on updates, click Reload. Restart dsh if it is already running.

    scripts/install.sh covers macOS and Linux, and scripts/install.ps1 covers Windows; both write the same managed workspace and the same install metadata. The installer copies the extension path to the clipboard when a clipboard tool is available (pbcopy, wl-copy, xclip, xsel, or PowerShell's Set-Clipboard), and prints the path either way. When no Chrome or Chromium install is found, it prints the command that installs one; set DSH_INSTALL_BROWSER=1 to let the installer attempt that install itself.

    The Windows command downloads install.ps1 and runs it rather than piping it into Invoke-Expression: the script is UTF-8 with a byte order mark so Windows PowerShell renders its Chinese output, and Invoke-Expression rejects a leading mark. Local checkout paths may contain spaces; the installer registers the bridge through a profile-local directory junction so the package spec never contains the absolute Windows path.

    To install the current branch from a source checkout instead:

    git clone https://github.com/Lum1104/dsh-browser.git
    cd dsh-browser
    ./scripts/install.sh
    

    On Windows, run .\scripts\install.ps1 from the checkout instead. After pulling or switching revisions, rerun the installer and reload the extension.

    Firefox source build

    Firefox uses a separate MV3 manifest, event-page background, and sidebar. Build it from a checkout, then open about:debugging#/runtime/this-firefox, choose Load Temporary Add-on, and select extensions/dsh-browser/dist-firefox/manifest.json:

    pnpm install
    pnpm --filter dsh-browser-extension run build:firefox
    

    The bridge address is still auto-discovered. Firefox's moz-extension:// UUID does not authenticate an add-on, so copy the bearer token from ~/.dsh/ext-bridge-token into the extension settings (the dsh startup log reports that file's path). Signed distribution can package the same dist-firefox/ output.

    Start and use

    Start the managed installation with:

    cd ~/.dsh/dsh-browser && pnpm start
    

    From a source checkout, run pnpm start in the repository root. The exact supported public runtime is:

    npx @deepseek-ai/[email protected] web
    

    Local Chrome use requires no configuration; Firefox requires the local bridge token described above. Open a page, click the DeepSeek whale icon, and wait for Connected. Existing HTTP(S) tabs are instrumented on the first action. On browser-protected pages and extension stores, the model can read tab metadata and use browser-level HTTP(S) navigation, back, forward, and reload, but it cannot inspect or operate the protected page DOM.

    Troubleshooting

    Side panel stays "Not connected"

    • Make sure dsh web is running locally (default http://127.0.0.1:3080).
    • Verify the bridge is loaded: open http://127.0.0.1:3080/ext/bridge-config. It should return JSON such as {"wsUrl":"ws://127.0.0.1:3080/ext/bridge"}. If it returns a web page instead of JSON, the running dsh predates the bridge registration — restart dsh and refresh the page; the extension reconnects on its own.
    • Discovery runs once when the panel opens. A filled-in address is tried first; if a loopback address does not answer, the panel makes one automatic pass (last working URL → dsh web defaults → the plugin's fixed beacon ports 43189–43198). When that pass finds nothing the status reads No service found and nothing retries until you reopen the panel or press Detect.
    • DSH Desktop assigns a random local Web port on every launch, which is why the bridge plugin also listens on a fixed loopback beacon port. If the panel cannot find it, open Settings → Detect to list every local instance and click the one to use; the address can still be typed by hand. Remote --host deployments need the address and token filled in manually; Firefox always requires the token.

    Development

    The bridge plugin and Chrome/Firefox extension are both members of this repository's workspace. Run all commands from the repository root. For the first development installation, run pnpm install.

    pnpm run build
    pnpm run typecheck
    pnpm run test
    pnpm run check:runtime
    pnpm run test:smoke
    
    pnpm --filter @yuxianglin/dsh-bridge-browser run build
    pnpm --filter @yuxianglin/dsh-bridge-browser run typecheck
    pnpm --filter @yuxianglin/dsh-bridge-browser run test
    
    pnpm --filter dsh-browser-extension run build
    pnpm --filter dsh-browser-extension run build:firefox
    pnpm --filter dsh-browser-extension run test
    

    Notes:

    • The bridge plugin must have a built lib/ before startup because the loader consumes it; both scripts/install.sh and the root pnpm run build build the plugin before the extension.
    • The bridge build copies its browser client with Node.js copyFileSync, so the same package script works without a Unix cp executable.
    • The dependencies of @deepseek-ai/dsh and the bridge plugin are pinned to the same tested public release line. An upgrade must update the manifests and lockfile together and rerun the root checks.

    check:runtime checks the resolved DSH dependencies and lockfile; test:smoke starts the real web host in a temporary DSH home and verifies the bridge and session reads after a restart, without model credentials. CI runs these checks after a clean installation.

    After building, run pnpm test:browser with a Playwright Chromium installation, or set CHROMIUM_PATH to a Chromium executable that supports loading unpacked extensions. This starts real DSH and Chromium instances to verify sharing controls, developer-tools consent, input, iframe uploads and targeting, and CSS edits. Site isolation is enabled and verified for cross-site frames; element clicks, input, and scrolling cover same-origin, cross-origin, and nested frames. It needs no model credentials and saves results under .artifacts/browser-smoke/.

    If you encounter cache.hydratePrepared is not a function, update the repository, rerun pnpm install --frozen-lockfile and pnpm run build, then restart pnpm start. Session data and the global package cache can be kept.

    Security

    • The bridge path sits outside the /api trust boundary and performs its own bearer-token authentication.
    • Local Chrome extension origins retain zero-configuration loopback access; Firefox origins are per-install UUIDs and must present the bearer token.
    • Privileged gateway methods such as settings.*, credentials.*, and host.open* reject non-loopback sources.
    • Text snapshots mask password and payment-card values. Screenshots capture visible pixels without field masking and require approval unless unrestricted control is enabled; page sharing set to off blocks screenshots under restricted control. Screenshots and attached chat images use dsh's durable attachment service. Developer tools have a separate high-privilege consent gate.
    • When work begins, the assistant binds to the active tab (at prompt submission, or at the first direct browser-tool call). If you switch tabs manually, later browser actions pause and the side panel asks whether the assistant should stay on the original page or follow the current one, and offers "jump back to the assistant page" to move your own tab back to the assistant's page. Choosing the original page permits background operation; apart from that button the extension never silently retargets or changes your visible tab. Closing the controlled tab also pauses tools until you explicitly select the current page.
    • Text you highlight is captured only while a side panel is open and page sharing is not off, and never from password or payment-card fields. It stays inside the extension until you send the message, is dropped when you dismiss it or its page navigates or closes, and reaches the model inside the same untrusted-content boundary as page snapshots — including its source title and URL, which the page also controls.
    • Page-authored text is wrapped as untrusted input. The default auto mode reads only the controlled tab without an extra prompt; privacy-sensitive users can select ask for per-read confirmation or off to block reads entirely. In ask mode, the read dialog can allow one read or persistently switch back to auto; this can be reversed in Settings. Read page text is sent to the selected model.
    • Click, type, keypress, navigation, history, and reload calls fail closed until the user approves them. An origin may be trusted for the current side-panel session (cleared when the last panel closes or the service worker restarts), while permanent trust is managed explicitly in Settings. Explicit cross-origin browser_navigate calls and unknown history destinations always prompt again.
    • Allow unrestricted browser control is an explicit global opt-in. It becomes active only after the setting is saved successfully; while enabled, page reads, page actions, and tab list/follow/close operations run without approval prompts. Calls capture their access mode when received, so enabling unrestricted control never retroactively elevates an existing restricted call. Disabling it takes effect immediately, cancels calls that have not dispatched an action, waits for already-dispatched browser operations to settle, and only then saves the restrictive setting. A rapid re-enable remains restricted until that revocation finishes, and concurrent saves persist in request order. Browser-protected DOM content remains inaccessible in either mode.