dsh@0.1.11
CAUTION· static onlyPublisher claims: "Enables MCP clients to spawn and manage collaboration-style external subagents with persistent sessions, queued messaging, nested delegation limits, and shared budget/concurrency controls, plus a bilingual Windows desktop control UI." Observed in sandbox: static analysis only — behavior not yet observed.
Coverage
Static only; nothing was run yet.The label rests on the code, the instruction files and the publisher. The honeypot run replaces this verdict when it completes.
Before you give it your token
- It will ask for
DEEPSEEK_API_KEYOPENAI_API_KEYConfiguration, not credentials: CODEX_APP_RUNTIME_CLI_PATH, CODEX_APP_TOOLS_PIPE_PATH, CODEX_HOME, CODEX_THREAD_ID, DEEPSEEK_BASE_URL, DSH_MCP_CONFIG, DSH_PERMISSION_MODE, DSH_RELEASE_ROOT, DSH_TELEMETRY_MODE, DSH_TEST_CODEX_EXE, DSH_UI_LOCALE, ELECTRON_RUN_AS_NODE- Where it talks to
- no vendor host named in the codeAlso deepseek.com, example.test, example.invalid, gov.cn — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- nothing has run yet
- What we could not test
- everything: the server has not run yet
Run it before you trust it. Nothing has run yet: the code was read, the server was not. `vet-skills try` runs this exact version in the honeypot in about a minute.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills analysed it statically (a sandbox run is pending) on 2026-11-11 and scored it 53/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Host or code assembled from base64 fragments; Access to sensitive file paths; Access to sensitive file paths. Summary: static analysis only — behavior not yet observed.
Behavior trace
Queued for honeypot run · static analysis onlyThis version has not been detonated yet. The score above counts behavior as unknown (50/100), so it cannot read Verified until the honeypot run completes and replaces this verdict.
Static findings
if (auth.session_id !== id || !timingSafeEqual(Buffer.from(auth.token, 'hex'), Buffer.from(token, 'hex'))) throw new Error('Unauthorized local connection.');Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.const autoStart = await run(process.execPath,[resolve('scripts/test-ui-autostart.mjs')],{env:{...env,DSH_RELEASE_ROOT:install}});Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.writeFileSync(join(directory,'multi-client.log'), await run(process.execPath,[resolve('scripts/test-multi-client.mjs')],{env:{...env,DSH_RELEASE_ROOT:install}}));Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.… '/'), path.replaceAll('\\', '\\\\')]); for (const path of files) { if (/^(?:\.env(?:\.|$)|\.dsh-mcp\/|\.test-output\/|node_modules\/|upstream\/|\.release(?:-cach…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…lse, max_depth: 0, message: 'Use your file or terminal tools to read input.json in your current directory. Sum its numbers. Create result.json with exactly the JSON object {"sum": computed sum, "count": number of entries}. Read the file ba…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.writeFileSync(join(directory,'startup-watcher.log'), await run(process.execPath,[resolve('scripts/test-startup-watcher.mjs')],{env:{...env,DSH_RELEASE_ROOT:install}}));Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.writeFileSync(join(directory,'session-ui.log'), await run(process.execPath,[resolve('scripts/test-session-ui.mjs')],{env:{...env,DSH_RELEASE_ROOT:install}}));Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const environment = { ...env }; delete environment.ELECTRON_RUN_AS_NODE;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log(JSON.stringify({ app_tools_reachable: true, send_message_available: Boolean(tool), input_schema: tool?.inputSchema }));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.if any(part in ('.git', '.dsh-mcp', '.env', '.test-output', '__pycache__') for part in relative.parts):Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.writeFileSync(join(directory,'service-close-ui.log'), await run(process.execPath,[resolve('scripts/test-service-close-ui.mjs')],{env:{...env,DSH_RELEASE_ROOT:install}}));Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.filter: source => !['__pycache__', '.dsh-mcp', '.env'].includes(basename(source)) && !source.endsWith('.pyc'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
27 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim focalorsqaq: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Obfuscated code≈ +5 on the totalRemove base64-assembled strings, eval of decoded text and minified blobs. Reviewers and scanners both treat unreadable code as hostile.
- Host or code assembled from base64 fragments≈ +4 on the totalPut hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.