DSH Plugin Installation Security Guide

August 13, 2026 · View on GitHub

DeepSeek Harness plugins can expose tools to agents, inject Web UI, access local files, call network services, or mount into the shared Cordis context. DSH profiles retain installed out-of-tree plugins and user patches as part of their composition.[1] Treat a plugin installation as local code execution plus a permission expansion, not as a cosmetic theme install.

“Verified” in this directory means that a public DSH loading signal and an installation or mounting path were inspected. It does not mean a complete security audit, author verification, endorsement, or stability guarantee.

Minimum pre-installation review

CheckActionReason
Pin the sourceUse a release tag, commit SHA, or trusted package version and record the URLDefault branches can change without notice
Read the entry pointsInspect package.json, dsh.plugin.json, cordis.patch.yml, apply entry points, and dependenciesLearn which services and tools are actually mounted
Audit lifecycle scriptsCheck preinstall, install, postinstall, and preparePackage lifecycle scripts can execute arbitrary local commands
Use least privilegeCreate a separate test profile, unprivileged API key, and non-production workspaceLimits data exposure and destructive tool calls
Trace data egressIdentify endpoints receiving prompts, code, images, logs, or tool resultsVision, search, memory, and IM extensions commonly send data externally
Preserve a rollbackExport profile configuration and record dependency/patch changes before installPreview APIs can change and may require a fast rollback

High-risk permission matrix

Permission surfaceRepresentative extensionsPrimary concernRecommended controls
Signed-in browserdsh-better-browserCookies, sessions, form input, uploads, page actionsUse a dedicated browser profile; do not log in to sensitive accounts; require approval
SSH / SFTP / remote commandsdsh-ssh, jumpserver-dshRemote execution, file access, key exposureDedicated low-privilege account, explicit known hosts, ACLs, and audit logs
IM channelsdsh-lark, dsh-lark-bridge, QQ-related pluginsUntrusted messages can drive an agent; data leakageUser/group allowlists, approval, and no untrusted direct messages
Files, memory, and notesSkills, memory plugins, dsh-wikilinkWorkspace material is injected or uploadedMount only required paths; define filtering and retention rules
External APIsSearch, vision, model gateway, balance extensionsKey leakage, data transfer, uncontrolled spendingEnvironment variables, separate keys, spend limits, and alerts
Client injection and local CLIUI, notification, VS Code, TUI extensionsBrowser permissions, command abuse, output leakageUse trusted sources and explicit executable paths

Suggested isolated test workflow

Export the target profile with dsh --profile <name> --dump-config, create a separate test profile, and install one extension at a time. Review newly added dependencies, cordis.patch.yml rows, and Web-client injection points. Run the smallest functional test before moving an extension into a daily profile.[1]

For sensitive environments, favor local models, local LM Studio, and configurations with no cloud sync. For browser, remote-execution, IM, or third-party API extensions, keep credentials, targets, and human-confirmation policy outside source control.

Reporting unsafe entries

If a listed project appears malicious, leaks credentials, contains a supply-chain risk, gives misleading installation guidance, or is wrongly classified, do not post secrets, internal URLs, chat content, or exploit detail in a public issue. Submit minimal reproducible evidence with the project URL, affected version, risk type, and disclosure state. Maintainers can add a warning, move the item to the watchlist, or remove it.

Reference

[1] DeepSeek Harness Architecture — Profiles and Bundles