Install verification: Ecosystem plugin: installs via dsh plugin add but declares no dsh.bundle and mounts no plugin capability — the L1-L5 install ladder does not rate it; the security scan still runs.Install verification details →
What it doesAI
Lets Pi, Codex and DSH agents drive your real Chrome/Edge profile, logins and tabs via an MV3 extension and local loopback bridge.
- Controls your real browser profile, login state and tabs
- MV3 Chrome/Edge extension plus local loopback Bridge
- Native CDP with AX-first semantics, no separate browser
Capability tags are AI-inferred or rule-extracted from the README (see badge) — vocabulary-limited, not install-verified. AI = inferred; README = literal keyword from the readme.
Installation
dsh plugin --profile web add pi-control-chromeInstall method: npm · runtime test inconclusive (L5 unknown)
Verification & Compatibility○ Ecosystem plugin
Grouped by plugin version: each card lists the dsh versions actually tested against that artifact version and their install verdicts (L5 wins). Untested combinations are omitted — absence means untested, never assumed compatible. L1–L3 are a plugin-level static archive (independent of the dsh version — the same verdict on every dsh row): they sit in each row's level grid next to L4/L5, marked "static", while their evidence is stored once per plugin inside that row's "checks & evidence" instead of being duplicated per version.
External credentials (plugin-level): none detected
○ The author declares no dsh version requirement — install is not blocked by version.
| plugin \ dsh | dsh 0.2.1-rc.2 current | dsh 0.2.1-alpha.4 | dsh 0.2.1-alpha.2 |
|---|---|---|---|
| 0.8.0 | ○ | ○ | ○ |
| v0.8.0 | · | · | · |
0.8.0npm○ 3 ecosystem plugin2026-10-19
pi-control-chrome
○dsh 0.2.1-rc.2current2026-10-19Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • Plugin artifact: npm · pi-control-chrome@0.8.0
ID: pi-control-chrome@0.8.0@dsh0.2.1-rc.2 · profile: l4-sandbox
Issued: 2026-10-19 · expires: 2026-10-26
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○dsh 0.2.1-alpha.42026-10-17Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.4
- • Plugin artifact: npm · pi-control-chrome@0.8.0
ID: pi-control-chrome@0.8.0@dsh0.2.1-alpha.4 · profile: l4-sandbox
Issued: 2026-10-17 · expires: 2026-10-24
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○dsh 0.2.1-alpha.22026-10-15Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • Plugin artifact: npm · pi-control-chrome@0.8.0
ID: pi-control-chrome@0.8.0@dsh0.2.1-alpha.2 · profile: l3-fullscan
Issued: 2026-10-15 · expires: 2026-10-22
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
v0.8.0github2026-10-14
https://github.com/lyd123qw2008/pi-control-chrome
Ecosystem plugin: installs via dsh plugin add but declares no dsh.bundle and mounts no plugin capability — its level reads L5 · Ecosystem plugin.
Author badges
Embed the official badges in your README to showcase security & install-test status:
`[](https://www.dsh.so/artifact/pi-control-chrome/)`Security Report
Two automated layers, neither a manual review: a static scan (per-plugin rule checks) and a model-driven dynamic security audit that covers only the subset static-flagged at warn or above and never executes plugin code.
Static low, dynamic high — stricter wins → overall high.
v0.8.00.8.0npm2026-10-210.8.0same versionclean · npmVet is an AST static scan (npm artifact or git source).
show static findings (5)
- warningnetIp · network
bridge/server.mjs:1341const requestUrl = new URL(req.url || "/", `http://127.0.0.1:${port}`); - warningnetIp · network
bridge/server.mjs:1372const requestUrl = new URL(request.url || "/ws", `http://127.0.0.1:${port}`); - warningchildProcess · code-exec
mcp/mcp-server.mjs:556const child = spawn(process.execPath, [ - warningchildProcess · code-exec
pi-extension/index.ts:373const child = spawn(process.execPath, [ - warningnetIp · network
skills/pi-control-chrome/scripts/browser.mjs:50node browser.mjs view http://127.0.0.1:3000/ --session example-session --turn 1 --screenshot C:\\Temp\\page.png
show 4 audit findings
- highUnauthenticated /pair endpoint discloses Bridge bearer token to any extension or local process
bridge/server.mjs:946The token is the only WebSocket authentication. extensionCorsHeaders reflects any chrome-extension://[a-p]{32} origin, and local processes can omit Origin. A malicious extension or local user can obtain the token and open /ws as role=pi, then issue browser evaluate, CDP, upload, and download commands.
- highbrowser_upload sends arbitrary local file paths to page file inputs without confirmation
mcp/mcp-server.mjs:300The tool accepts any string or array of local paths and forwards it to the CDP upload path. Untrusted page content can prompt-inject the agent to upload ~/.ssh/id_rsa or credentials to an attacker-controlled file input and submit it; no path allow-list or explicit user confirmation is present.
- highbrowser_cdp and browser_evaluate expose unrestricted CDP and page JavaScript to model-driven page content
mcp/mcp-server.mjs:328Any CDP method is accepted. A malicious page can prompt-inject the agent to call Network.getAllCookies, then Runtime.evaluate or fetch to send session cookies to an attacker. No method allow-list or explicit confirmation gates evaluate/CDP.
- mediumbrowser_screenshot writes to any resolved path without overwrite confirmation
mcp/mcp-server.mjs:560The path argument is model/user controlled and is not restricted to a downloads directory. A prompt-injected call can overwrite user-writable configuration or scripts with attacker-influenced screenshot bytes, causing data corruption or denial of service.
High-risk issues found: /pair leaks the Bridge token to any extension/local process, browser_upload can exfiltrate arbitrary local files, and unrestricted CDP/evaluate can steal session cookies; screenshot path write adds medium risk.
Rule: the dynamic audit can only raise risk, never lower it (raise-only, never an exemption); a wrong raise is withdrawn by human review and the tier falls back to the static verdict. Overall verdict = the stricter of the two layers.
Disclaimer: the static scan and the dynamic security audit are both automated analysis, not a security guarantee. Always review what you install.
Activity
Last commit 2026-09-18 · activity: Stable
• Repo created: 2026-08-17
• Stars: ★ 5 · Forks: 2
• Health: Stable — committed within 90 days
Source
Author README
View on GitHub ↗The author's original README from the repository — fetched live, unedited (the English page loads the default README).
