Install verification: runtime verified (L5) · tested on dsh 0.2.1-rc.2 · last checked Install verification details →
What it doesAI
dsh plugin for Kimi WebBridge: manages the daemon and registers browser-control skills.
- Auto-downloads missing daemon from CDN with SHA-256 check
- Registers bundled skill.md as a runtime skill at startup
- Exposes 25 browser actions via HTTP (navigate, click, screenshot, etc.)
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 kimi-webbridge-dshInstall method: npm · runtime verified (L5)
Verification & Compatibility
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
Based on 1 requirement(s) across 2 @deepseek-ai/dsh-* packages. raw ranges
^0.1.0-rc.7 || ^0.1.1-rc.2 || ^0.1.2-rc.1 || ^0.1.5-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 ×2
✓ Running dsh 0.2.1-rc.2 is within the declared range — install is not blocked by version.
Whether it actually runs is a separate question → see the measured matrix below (L1–L5).
| 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 |
|---|---|---|---|---|---|
| 1.4.12 | · | · | · | · | · |
| 1.4.11 | ✓ | ✓ | · | · | · |
| 1.4.10 | · | · | ✓ | ✓ | ✓ |
| 1.4.9 | · | · | · | · | · |
| 1.4.8 | · | · | · | · | · |
1.4.12npm2026-10-21
kimi-webbridge-dsh
No runtime install test for this version (static scan only) — compatibility unknown, never assumed.
1.4.11npm✓ 2 runtime-verified2026-10-19
kimi-webbridge-dsh
✓dsh 0.2.1-rc.2current2026-10-19L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • Plugin artifact: npm · kimi-webbridge-dsh@1.4.11
ID: kimi-webbridge-dsh@1.4.11@dsh0.2.1-rc.2 · profile: l4-sandbox
Issued: 2026-10-19 · expires: 2026-10-26
View checks & evidence
active in loader tree (150 entries)
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-16L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.4
- • Plugin artifact: npm · kimi-webbridge-dsh@1.4.11
ID: kimi-webbridge-dsh@1.4.11@dsh0.2.1-alpha.4 · profile: l4-sandbox
Issued: 2026-10-16 · expires: 2026-10-23
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
1.4.10npm✓ 4 runtime-verified2026-10-11
kimi-webbridge-dsh
✓dsh 0.2.1-alpha.22026-10-11L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • Plugin artifact: npm · kimi-webbridge-dsh@1.4.10
ID: kimi-webbridge-dsh@1.4.10@dsh0.2.1-alpha.2 · profile: l4-sandbox
Issued: 2026-10-11 · expires: 2026-10-18
View checks & evidence
active in loader tree (150 entries)
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-09L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.2
- • Plugin artifact: npm · kimi-webbridge-dsh@1.4.10
ID: kimi-webbridge-dsh@1.4.10@dsh0.2.0-rc.2 · profile: l4-sandbox
Issued: 2026-10-09 · expires: 2026-10-16
View checks & evidence
active in loader tree (150 entries)
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-30L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.1
- • Plugin artifact: npm · kimi-webbridge-dsh@1.4.10
ID: kimi-webbridge-dsh@1.4.10@dsh0.2.0-rc.1 · profile: l4-sandbox
Issued: 2026-09-30 · expires: 2026-10-07
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓prehistory2026-10-04L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: unknown
- • Plugin artifact: npm · kimi-webbridge-dsh@1.4.10
ID: kimi-webbridge-dsh@1.4.10@dshunknown · profile: l4-sandbox
Issued: 2026-10-04 · expires: 2026-10-11
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
1.4.9npm2026-09-26
kimi-webbridge-dsh
No runtime install test for this version (static scan only) — compatibility unknown, never assumed.
1.4.8npm✓ 4 runtime-verified2026-09-26
kimi-webbridge-dsh
✓dsh 0.1.7-rc.22026-09-26L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.2
- • Plugin artifact: npm · kimi-webbridge-dsh@1.4.8
ID: kimi-webbridge-dsh@1.4.8@dsh0.1.7-rc.2 · profile: l4-sandbox
Issued: 2026-09-26 · expires: 2026-10-03
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓dsh 0.1.7-rc.12026-09-24L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.1
- • Plugin artifact: npm · kimi-webbridge-dsh@1.4.8
ID: kimi-webbridge-dsh@1.4.8@dsh0.1.7-rc.1 · profile: l4-sandbox
Issued: 2026-09-24 · expires: 2026-10-01
View checks & evidence
active in loader tree (150 entries)
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-20L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.2
- • Plugin artifact: npm · kimi-webbridge-dsh@1.4.8
ID: kimi-webbridge-dsh@1.4.8@dsh0.1.6-alpha.2 · profile: l4-sandbox
Issued: 2026-09-20 · expires: 2026-09-27
View checks & evidence
active in loader tree (150 entries)
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-17L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.1
- • Plugin artifact: npm · kimi-webbridge-dsh@1.4.8
ID: kimi-webbridge-dsh@1.4.8@dsh0.1.6-alpha.1 · profile: l4-sandbox
Issued: 2026-09-17 · expires: 2026-09-24
View checks & evidence
active in loader tree (150 entries)
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/kimi-webbridge-dsh/)``[](https://www.dsh.so/artifact/kimi-webbridge-dsh/)``[](https://www.dsh.so/artifact/kimi-webbridge-dsh/)``[](https://www.dsh.so/artifact/kimi-webbridge-dsh/)``[](https://www.dsh.so/artifact/kimi-webbridge-dsh/)``[](https://www.dsh.so/artifact/kimi-webbridge-dsh/)``[](https://www.dsh.so/artifact/kimi-webbridge-dsh/)`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 (authoritative when present) → overall medium.
v1.4.12dsh manifest1.4.12npm2026-10-241.4.12same versionclean · npmVet is an AST static scan (npm artifact or git source).
show static findings (4)
- criticalpipeShell · shell
lib/index.js:92return `run \"curl -fsSL https://cdn.kimi.com/webbridge/install.sh | bash\" (or install from ${page})`; - warningchildProcess · code-exec
lib/index.js:431const child = spawn(daemonBinPath(), ["start"], { - warningnetIp · network
lib/index.js:46baseUrl: z.string().default("http://127.0.0.1:10086"), - warningnetIp · network
lib/index.js:488baseUrl = "http://127.0.0.1:10086",
show 3 audit findings
- mediumAuto-installs and detaches a native daemon binary with only best-effort, same-origin SHA-256 verification
lib/index.js:399The only integrity gate is the manifest fetched from the same CDN as the binary, and it is skipped entirely when that manifest is unavailable (`// Manifest unavailable (e.g. old pinned version) — install without checksum.` then `if (expectedSha !== null)` guards verification). With autoInstallDaemon/autoStartDaemon defaulting to true and the system prompt telling the model to call `status` before any browser work, an executable is downloaded into ~/.kimi-webbridge/bin, chmod 0755, renamed into place and spawned detached (line 431) with no digest pinned in the package. A compromised or mis-serv
- lowPre-existing binary at a fixed user-writable path is spawned with no ownership or integrity check
lib/index.js:431installDaemonBinary is skipped whenever daemonBinPath() already exists, so a file planted at ~/.kimi-webbridge/bin/kimi-webbridge (only the executing user's own directory guards it) is run automatically on any status call while the daemon is down, detached with stdio ignored, i.e. silently and outliving the harness process. No shell is involved and privilege is the same user's, so this is persistence/hygiene rather than escalation.
- lowVendoring script extracts tar entries without containment check (path traversal outside skill/)
scripts/fetch-upstream-skill.mjs:185Entry names are only prefix-filtered (entry.path.startsWith(TARBALL_PREFIX)) and then joined without normalising, so an archive path such as kimi-webbridge/../../../x passes the filter, becomes ../../../x and is written outside skill/ (after writeSkill already rm -rf'd the managed roots). Only reachable when a maintainer runs `npm run fetch-skill` against a malicious or corrupted upstream tarball; the script is not loaded by the runtime.
Skill registration and the status-only tool are sound; residual risk is auto-downloading and detaching a native daemon binary with only best-effort, same-origin SHA-256 verification.
Rule (2026-10-24): when a dynamic conclusion exists it is authoritative (it may raise or lower the level); without one, the static/vet fused tier applies. The audit never writes the exemption list (exemptions are manual only); a wrong conclusion is withdrawn by human review and the tier falls back to static/vet.
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-10-19 · activity: Active
• Repo created: 2026-08-24
• Stars: ★ 1 · Forks: 0
• Health: Active — committed within last 30 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).
