DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Full With Approval — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
F

dsh-full-with-approval

Full With Approval

DSH 配置插件:不受限(支持 GPU)的会话沙箱,以及对工作区之外或受保护文件写入的逐次用户批准。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:zjuhbh/dsh-full-with-approval#c664cdae654088cbdbb81b5fac67c1b81e4ec84a
README兼容性版本

兼容性与来源证明

Full With Approval 以 dsh-full-with-approval 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/8/28

版本

0.2.0stable
2026/8/28
0.1.0stable
2026/8/23

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/8/28
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 security-access 分类下经过校验的插件。

Doctor@linxin666/dsh-doctorDSH 配置档案的事务性救援模式,配备受监督的启动器、隔离的恢复容器、确定性修复、健康监控以及本地 Web 恢复控制台Pocketdsh-pocket把 DeepSeek Harness 装进你的口袋:一个包、一个设置页,手机扫码即同步访问电脑上的 DSH(局域网 + 公网,实时同屏)。Mobiledsh-mobileDeepSeek Harness 移动端适配与安全访问插件,支持局域网、远程连接、Android App 和手机浏览器。DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。

README

dsh-full-with-approval

A DeepSeek Harness (DSH) profile plugin that adds a fourth permission preset, full-with-approval:

  • Full compute access — the session sandbox mode is danger-full-access, so processes run unconfined: CUDA/GPU, devices, network and any binary your machine can run.

  • Approval-gated file edits — while this preset is active, every write/edit that would modify

    • a file outside the session workspace (except the platform temp areas and configured scratch roots), or
    • a protected file inside the workspace (default: .git/**, .env*),

    asks the user for one-shot approval before anything executes. Approval is resolved through the same interactive prompt the sandbox escalation retries use (ctx.approval, allowed-once). Rejected or cancelled ⇒ the tool fails and nothing is written. If no approval channel is available, the call fails closed.

  • Approval-gated shell modifications — a bash/pwsh command that shows evidence of modifying files outside the workspace (out-of-workspace path tokens plus a write marker: redirection, chmod, rm, python, curl -o, …) also asks first; visibly read-only invocations (cat, ls, grep, env, … without a write marker) and workspace-relative commands pass without prompting. The static heuristic errs on the side of asking: interpreters (python, node) and command substitutions that mention outside paths always ask. bashGuard: false disables this layer; extraBashTokens adds forced-ask substrings.

Everything else — writes inside the workspace to ordinary files, temp/scratch files, all reads and every command — proceeds untouched.

How it works

The plugin is a thin load-bearing layer over existing DSH extension points; no core package is modified.

  1. cordis.patch.yml patch entry full-with-approval mounts the host plugin.
  2. The same patch overrides the permission preset table (by id) to add the 4th preset full-with-approval = { sandbox: danger-full-access, approval: ask }. The GUI permission selector and /permission command read this table, so the new row appears automatically.
  3. The plugin listens on the tools registry's tools/pre-execute waterfall (the official allow / deny / ask before dispatch hook). When the session's effective preset is full-with-approval and the call is a write/edit whose target is outside the workspace or protected, it returns { kind: "ask", reason }. The registry resolves the ask through ctx.approval.request(...) and only dispatches on allowed-once.

Install

# from the parent directory of a git checkout (pnpm `file:` install: copies the
# package and installs its declared dependencies)
dsh plugin --profile web add ./dsh-full-with-approval

# or from a local folder by absolute path (the `link:` form does not manage the
# plugin's own dependencies; keep `npm install` in the checkout)
dsh plugin --profile web add /path/to/dsh-full-with-approval

# once published as an npm package
dsh plugin --profile web add dsh-full-with-approval

dsh plugin add runs pnpm and reconciles the profile's bundle list: a package declaring dsh.bundle joins the layer stack automatically. The change applies on the next boot of the dsh profile (restart the app / refresh after HMR).

If pnpm aborts with ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION (a supply-chain policy on the profile's lockfile, unrelated to this plugin), relax it for the install:

dsh plugin --profile web add ./dsh-full-with-approval --config.minimum-release-age=0

Usage

  • In the web UI open the permission selector and pick Full With Approval (4th option), or run:
    /permission full-with-approval
    
  • While the preset is active, protected writes raise the approval prompt; approve to let that one write through.
  • Switch back to workspace-write / danger-full-access / read-only at any time; the gate follows the preset.

Configuration

The plugin entry config (patch cordis.patch.yml in the profile or override via cordis.patch.yml of your profile):

- id: full-with-approval
  config:
    # Globs matched against the POSIX path relative to the session workspace.
    # An absolute pattern matches the absolute target path.
    protectedPaths:
      - ".git/**"
      - ".env*"
      - ".env/**"
    # Absolute scratch roots that never prompt (besides the platform temp dir).
    extraWritableRoots: []
    # Shell guard layer (default true): ask for bash/pwsh commands that show
    # evidence of modifying files outside the workspace.
    bashGuard: true
    # Extra substrings that force an ask when a shell command mentions them.
    extraBashTokens: []

Changing protectedPaths takes effect on reload/restart.

What is intentionally NOT gated

  • Reads are always allowed (every sandbox mode permits reading), including reads of outside files by obviously read-only commands (cat, ls, grep, env, … without a write marker).
  • Temp areas (/tmp, os.tmpdir()) and extraWritableRoots never prompt.
  • Shell writes are gated by heuristic, not by kernel — a command can still evade the static check (paths built dynamically, cd followed by relative writes, opaque interpreters hiding file access). The heuristic errs toward asking; treat it as a prompt-on-suspicion layer, not a security boundary. The kernel-level boundary remains workspace-write mode at the cost of GPU access.

Known caveats

  • Selector icon — the core Web UI draws permission icons from a value-keyed table inside the @deepseek-ai/dsh-client-ui-conversation client bundle; plugin-added presets get none (the flat client module graph cannot override that table from a plugin bundle). Until supported upstream, draw the 4th row's shield-check glyph with one command (idempotent, backs up the bundle file, live-served — refresh the page after re-running on each dsh upgrade):
    node tools/patch-ui-glyph.mjs
    
  • The 4th option does not show the extra risk-confirmation gate the stock danger-full-access row shows (that gate is keyed on the preset value in the core UI client); the row's own one-shot approvals still guard every protected write.
  • run_code/code-mode executions are not inspected for file effects; native write/edit calls and bash/pwsh commands are gated.
  • Path classification is canonicalize-then-compare against the session workspace; on filesystems with odd symlink aliasing (Windows 8.3, case-insensitive paths) treat the workspace boundary as advisory — the sandbox fence itself is the kernel-level authority where modes confine.

Development

npm ci                          # picomatch + harness deps
node --test                     # classifier unit tests
DSH_AI_NODE_MODULES=/path/to/node_modules/@deepseek-ai \
  node test/pre-execute.harness.mjs   # full ask→approval→dispatch chain

See also examples/cordis.patch.yml for the explicit knob values, and SECURITY.md / CONTRIBUTING.md for the trust model and change rules.

Release

npm pack   # build the tarball

License

MIT