DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Workspace Write Extra — DeepSeek Harness 插件(DSH Plugin)
← Plugins
W

dsh-workspace-write-extra

Workspace Write Extra

新增第四个 DSH 权限预设 workspace-write-extra,在会话工作区之外,为配置的额外目录授予写入权限。仅适用于 Linux bwrap。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:beicause/dsh-workspace-write-extra#52f911da4979d9b2d8bcb45d2c9f63315ec77759
README兼容性版本

兼容性与来源证明

Workspace Write Extra 以 dsh-workspace-write-extra 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.2.0stable
2026/9/29

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

README

dsh-workspace-write-extra

English | 简体中文

Adds a fourth permission preset to DeepSeek Harness that grants write access to configured directories in addition to the session workspace.

The three stock sandbox modes are not modified in any way: read-only, workspace-write, and danger-full-access keep their exact meaning, their persisted schemas, and their escalation ladder.

What it adds

One more entry in the permission picker:

PresetSandbox modeApprovalWrites
read-onlyread-onlyasknothing
workspace-writeworkspace-writeaskworkspace + temp areas
workspace-write-extraworkspace-writeaskthe above + configured directories
danger-full-accessdanger-full-accessnevereverything

The entry carries no label, so the picker derives its text from the preset name and renders Workspace Write Extra, matching how the built-in entries read. A label supplied here would be shown verbatim, in English, because the client localizes only its own built-in presets and the auto preset.

The new preset is a permission preset, not a fourth SandboxMode. That distinction is the whole point: the sandbox mode vocabulary is a closed three-value union that is written into sandbox/mode session events and re-validated by several foreign projections when a session is restored. A fourth value there would make every session that used it unreadable. Bundling the existing workspace-write mode with extra behaviour is the same approach the shipped auto preset takes.

Enablement is per session: the extra directories apply while that session's last recorded permission preset is workspace-write-extra, which survives a restart because the choice lives in the session log.

How it stays out of the way

The plugin does not disable, replace, or reorder any stock row. It wraps the two live enforcement services in place, and unwraps them exactly on unload:

  • the mounted filesystem's containment check (checkedTarget) gains a retry of its workspace-write denial against the extra directories;
  • the sandbox provider's confine gains the matching --bind pairs in the bwrap profile.

Two consequences follow, and both matter:

  • Failure is safe. If this plugin does not load, the harness keeps the stock filesystem and sandbox rather than losing them. (The alternative — disabling the stock rows and inserting replacements — has no such fallback, and Cordis refuses to register two providers of the same service name, so it cannot be made safe by shadowing.)
  • It is additive. The stock check stays authoritative for every case it already handled; only its own denial is reconsidered.

Configuration

Both surfaces are supported.

Profile config

- id: workspace-write-extra
  name: dsh-workspace-write-extra
  config:
    extraWritableDirs:
      - /srv/shared-assets
      - ~/notes
    presetName: workspace-write-extra

Entries must be absolute; a leading ~ is expanded. Symlinks are resolved, and a missing or non-directory entry is ignored with a warning rather than created — granting a path nobody named would be the unsafe direction. Expansion is asynchronous, so a directory only becomes writable after its own successful expansion.

Settings page

extraWritableDirs is a volatile field, so it also appears on the Settings page and edits apply live to every session in the profile.

Compatibility with the harness

This plugin declares no @deepseek-ai/dsh-* peer range, and the harness checks only such peers. Its compatibility therefore rests on something narrower and more exact: the shape of two mounted services. That shape is what the code actually uses, and it is pinned by test/contract.test.mjs against the real classes, so a harness upgrade that moves any of it fails the suite immediately rather than narrowing the preset in production.

Depends onUsed by
fs.checkedTarget(target, policy) rejects with code FS_SANDBOX_DENIEDlib/fs.mjs
fs.resolve(path) resolves a target carrying targetKeylib/fs.mjs
sandbox.confine(argv, policy, signal) resolves to an object carrying argvlib/provider.mjs
Policy fields mode and sessionId; result field argvboth wrappers
permissionPresets.presets and emitCatalogChanged()lib/service.mjs
systemPrompt.context() and getContextOrder('SANDBOX_POLICY')lib/service.mjs

Two properties keep this robust across upgrades:

  • The wrappers call the stock methods through await, so a stock method that changes between synchronous and asynchronous keeps working.
  • Both wrappers operate on the returned object rather than assuming a bare argv, so a return value that grows fields keeps working.

When a mounted service does not expose the expected seam at all, the plugin reports it once per service and leaves the instance untouched. It never disables a stock row, so the failure mode of any unexpected harness shape is a logged warning and stock behaviour — never a missing filesystem or sandbox.

Platform support

  • Linux with bwrap — fully supported. The extra directories join the bubblewrap profile as --bind <dir> <dir>, so confined commands agree with the write/edit tools.
  • Linux with landlock, and macOS seatbelt — the write/edit tools are widened, but confined commands are not, because those profiles are built inside packages this plugin cannot extend. A warning is logged once instead of pretending otherwise.
  • Windows — not supported.

Layout

FileRole
lib/service.mjsctx.extraWriteDirs: owns the configured directories, decides per session whether the preset applies, wraps the two enforcement services, publishes the preset, and adds the model-facing note.
lib/fs.mjsWraps the live filesystem's containment check.
lib/provider.mjsWraps the live sandbox provider's confine.
lib/roots.mjsPath expansion and containment checks.
lib/plan.mjsPure bwrap argv transformation.
cordis.patch.ymlInserts the one plugin row.
test/contract.test.mjsPins the harness seams this plugin extends.

Tests

node --test test/

roots.mjs, plan.mjs, and the two wrappers are dependency-free and run anywhere. The contract and integration suites need the DSH packages to be resolvable, so they run from an installed profile: the contract suite pins the real stock seams, and the integration suite assembles the real filesystem and sandbox provider and asserts both the widening and its exact reversal on unload. Every suite that needs those packages skips with a reason when they are absent, and never passes vacuously.

相关插件

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

Experimental Auto Review@deepseek-ai/dsh-experimental-auto-review针对每个工具的 LLM 授权审查,适用于 DeepSeek Harness Auto 权限预设Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件Doctor@linxin666/dsh-doctorDSH 配置档案的事务性救援模式,配备受监督的启动器、隔离的恢复容器、确定性修复、健康监控以及本地 Web 恢复控制台Pocketdsh-pocket把 DeepSeek Harness 装进你的口袋:一个包、一个设置页,手机扫码即同步访问电脑上的 DSH(局域网 + 公网,实时同屏)。