What it does
Agent Client Protocol (ACP) server plugin for the DeepSeek Harness (dsh) - drive dsh agents from Zed, any ACP v1 client, or the built-in web UI over stdio / HTTP+SSE, with sessions, jobs, goals, skills and the agent tree on the wire
Installation
dsh plugin --profile web add github:dushaobindoudou/dsh-acpInstall method: GitHub · not yet tested in container (L3+)
Compatibility
| DSH Version | Status |
|---|---|
| not stated | Declared — not tested |
Requirements
- • Node.js: not stated
- • DSH: declared "not stated"
- • External credentials: none detected
Security Report
Automated static scan, not manual review.
Critical findings in non-blocking categories (dynamic code execution, shell execution, install scripts, obfuscation). Common in CLI/terminal plugins but worth reviewing.
code-exec ×40.9.0dsh manifest762e687629ca2026-08-18762e687629caThe scan result is only valid for the scanned commit. If the latest commit differs, the badge shows outdated until the daily pipeline rescans.
Disclaimer: automated static analysis, not a security guarantee. Always review what you install.
• Static heuristic scan: done (15 files)
• Dependency vulnerabilities: requires deep audit (L3+)
• Permission sandboxing: requires runtime testing (L4+)
Scan findings · 12
- criticalChild process module usage (Node.js)bin/dsh-acp.mjs:18import { spawn, spawnSync } from 'node:child_process'
- criticalChild process module usage (Node.js)bin/setup-profile.mjs:22import { spawnSync } from 'node:child_process'
- criticalChild process module usage (Node.js)bin/setup-webacp.mjs:21import { spawnSync } from 'node:child_process'
- warningHTTP request to a raw IP addressbin/setup-webacp.mjs:84process.stdout.write(`done. boot with: dsh ${profile === 'web' ? 'web' : `--profile ${profile}`}\nGUI and ACP then share one port: http://1
- infoHardcoded IP addressbin/setup-webacp.mjs:84process.stdout.write(`done. boot with: dsh ${profile === 'web' ? 'web' : `--profile ${profile}`}\nGUI and ACP then share one port: http://1
- criticalDynamic code execution via eval()examples/curl-conversation.sh:60if eval(want, {}, {'f': f}):
- warningHTTP request to a raw IP addressexamples/curl-conversation.sh:16base="${1:-http://127.0.0.1:7800}"
- warningDownloads a file from the networkexamples/curl-conversation.sh:37curl -sN --max-time 300 ${auth[@]+"${auth[@]}"} "$base/acp/stream" -H "acp-connection-id: $connection" > "$sse" &
- warningDownloads a file from the networkexamples/curl-conversation.sh:41curl -sS -o /dev/null -w '%{http_code}' ${auth[@]+"${auth[@]}"} -X POST "$base/acp" \
- warningDownloads a file from the networkexamples/curl-conversation.sh:109code=$(curl -sS -o /dev/null -w '%{http_code}' ${auth[@]+"${auth[@]}"} -X DELETE "$base/acp" \
- infoHardcoded IP addressexamples/curl-conversation.sh:16base="${1:-http://127.0.0.1:7800}"
- infoHardcoded IP addresssrc/serve-startup.ts:45.option('--host <host>', 'bind host', '127.0.0.1')
Heuristic static scan — may produce false positives. Review the source yourself before trusting.
Activity
Last commit 2026-08-18 · activity: Active
• Repo created: 2026-08-18
• Stars: ★ 6 · Forks: 4
• Health: Active — committed within last 30 days
