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 a DeepSeek Harness agent see and control your browser in real time: read, screenshot, navigate, click, and manage tabs via tool calls.
- Real-time browser visibility via screenshots and reads
- Tool-driven navigation, clicking, and tab management
- Integrates with DeepSeek Harness agent tool calls
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 github:chris-003/dsh-agent-in-browser#v0.2.0Install method: GitHub · 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
package manifest not collected — the declared range is unknown.
| plugin \ dsh | dsh 0.2.1-rc.2 current | dsh 0.2.1-alpha.4 | dsh 0.2.1-alpha.2 | dsh 0.2.0-rc.2 | dsh 0.2.0-rc.1 |
|---|---|---|---|---|---|
| v0.2.0 | ○ | ○ | ○ | ○ | ○ |
v0.2.0github○ 14 ecosystem plugin2026-10-19
https://github.com/chris-003/dsh-agent-in-browser
○dsh 0.2.1-rc.2current2026-10-19Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.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: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.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-11Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.2.1-alpha.2 · profile: l4-sandbox
Issued: 2026-10-11 · expires: 2026-10-18
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.0-rc.22026-10-09Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.2
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.2.0-rc.2 · profile: l4-sandbox
Issued: 2026-10-09 · expires: 2026-10-16
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.0-rc.12026-09-29Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.1
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.2.0-rc.1 · profile: l4-sandbox
Issued: 2026-09-29 · expires: 2026-10-06
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.1.7-rc.22026-09-25Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.2
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.1.7-rc.2 · profile: l4-sandbox
Issued: 2026-09-25 · expires: 2026-10-02
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.1.7-alpha.22026-09-23Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.7-alpha.2
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.1.7-alpha.2 · profile: l4-sandbox
Issued: 2026-09-23 · expires: 2026-09-30
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.1.6-alpha.22026-09-20Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.2
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.1.6-alpha.2 · profile: l3-fullscan
Issued: 2026-09-20 · expires: 2026-09-27
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.1.6-alpha.12026-09-17Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.1
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.1.6-alpha.1 · profile: l4-sandbox
Issued: 2026-09-17 · expires: 2026-09-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.1.5-rc.22026-09-12Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.5-rc.2
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.1.5-rc.2 · profile: l4-sandbox
Issued: 2026-09-12 · expires: 2026-09-19
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.1.3-alpha.22026-09-09Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.3-alpha.2
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.1.3-alpha.2 · profile: l4-sandbox
Issued: 2026-09-09 · expires: 2026-09-16
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.1.3-alpha.12026-09-07Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.3-alpha.1
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.1.3-alpha.1 · profile: l4-sandbox
Issued: 2026-09-07 · expires: 2026-09-14
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.1.2-rc.12026-09-05Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.2-rc.1
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dsh0.1.2-rc.1 · profile: l3-fullscan
Issued: 2026-09-05 · expires: 2026-09-12
View checks & evidence
ecosystem plugin: no dsh.bundle declaration
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○prehistory2026-10-04Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: unknown
- • Plugin artifact: github · https://github.com/chris-003/dsh-agent-in-browser#v0.2.0
ID: dsh-agent-in-browser@v0.2.0@dshunknown · profile: l4-sandbox
Issued: 2026-10-04 · expires: 2026-10-11
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.
Only the latest 3 published versions are shown; source-snapshot (commit hash) groups, unstated groups and older versions are omitted — the full archive stays in the data layer (snapshot/unstated groups appear only when a plugin has no published version).
Author badges
Embed the official badges in your README to showcase security & install-test status:
`[](https://www.dsh.so/artifact/dsh-agent-in-browser/)`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 medium — stricter wins → overall medium.
—v0.2.0git2026-10-21v0.2.0same versionclean · gitVet is an AST static scan (npm artifact or git source).
show static findings (7)
- warningchildProcess · code-exec
agent-in-browser/dynamic/bridge-smoke.mjs:13const child = spawn(process.execPath, [join(here, 'bridge-server.mjs')], { - warningnetIp · network
chrome-extension/src/options/main.tsx:8const [webuiUrl, setWebuiUrl] = useState('http://127.0.0.1:3080') - warningnetIp · network
chrome-extension/src/options/main.tsx:36<input value={webuiUrl} onChange={(e) => setWebuiUrl(e.target.value)} placeholder="http://127.0.0.1:3080" /> - warningnetIp · network
chrome-extension/src/sidepanel/main.tsx:9setSrc((v.webuiUrl as string) || 'http://127.0.0.1:3080') - warningnetIp · network
firefox-extension/src/options/main.tsx:9const [webuiUrl, setWebuiUrl] = useState('http://127.0.0.1:3080') - warningnetIp · network
firefox-extension/src/options/main.tsx:37<input value={webuiUrl} onChange={(e) => setWebuiUrl(e.target.value)} placeholder="http://127.0.0.1:3080" /> - warningnetIp · network
firefox-extension/src/sidepanel/main.tsx:10setSrc((v.webuiUrl as string) || 'http://127.0.0.1:3080')
show 2 audit findings
- mediumAuth falls back to a shared hard-coded default token that ships in all components
agent-in-browser/dynamic/bridge-server.mjs:21The same DEFAULT_TOKEN constant (lib/protocol/types.js line 33) is also the default in the host plugin Config (`token: z.string().min(3).default(DEFAULT_TOKEN)`), and it is baked into the Chrome/Firefox extensions. If the operator does not override it, the token is publicly known and identical for every install. Because the server (new WebSocketServer, line 23) does not check Origin, a page the user visits or a local process can open ws://127.0.0.1:38745, complete the handshake with the default token and impersonate the browser: it would receive every agent command and could feed fabricated re
- lowWebSocket auth token written in cleartext to stderr startup log
agent-in-browser/dynamic/bridge-server.mjs:109When the bridge is spawned by the dynamic plugin or run by hand, the shared secret guarding the browser channel is emitted to stderr. That stream is captured by the parent process/log aggregation, so the credential can be persisted or exposed wherever those logs are collected, weakening the only authentication boundary.
Loopback WS bridge is token-gated, but falls back to a shared hard-coded default token and prints it to stderr; the real server/tool-dispatch files were not harvested.
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-08-31 · activity: Stable
• Repo created: 2026-08-31
• Stars: ★ 0 · Forks: 0
• 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).
