DSH 插件 dsh-plugin-sandbox-escalation-fix:忽略同级或过低的无效沙箱提权请求

前言

在 DeepSeek Harness(DSH)里,模型有时会在已经拥有较高沙箱权限时,仍然携带 sandbox_permissions。如果请求的权限不高于当前 Session 权限,这类参数本来没有实际作用,却可能触发 not strictly wider 一类错误,或把无效请求带入审批路径。dsh-plugin-sandbox-escalation-fix 针对这个问题做一个很小的兼容层:它只处理不高于当前权限的无效参数,并保留 DSH 原有的提权审批与非法参数校验。

这是什么

inmny/dsh-sandbox-escalation-fix 是 MIT 许可的 DSH 插件。npm/README 中的包名为 dsh-plugin-sandbox-escalation-fix,当前资料给出的安装版本为 0.1.2

它解决的是 DSH 0.1.0-rc.6sandbox_permissionsjustification 参数不匹配造成的噪音:模型已经拥有同级或更高权限时,重复请求不会误入审批;真正更宽的请求仍按 DSH 原有流程审批。

核心功能

插件在 Host 侧对 bashpwshwriteedit 中多余或过时的提权参数做正规化。standardcodecordisminimal 以及自定义 preset 中可见的对应工具共用这一修复,不需要额外配置。

主要行为如下:

  • 忽略不高于 Session 当前权限的无效 sandbox_permissions 请求,避免模型在已经拥有更高或相同权限时反复触发 not strictly wider 错误。
  • 对确实需要升级但 justification 缺失或为空白时,自动填入 "Empty justification"
  • 忽略只有 justification 而没有 sandbox_permissions 的孤立理由,避免 invalid escalation 参数配对错误。
  • 真正更宽的请求仍进入 DSH 审批流程;合法非空理由保持不变。
  • read-only、未知 target 或非字符串 justification 等非法值仍由 DSH 拒绝。
  • 插件只作为 bundle layer 安装到目标 profile,不修改 DSH 安装目录。
  • 插件监听工具和 Agent 生命周期,可处理全局定义、preset scoped shadow、后创建 Agent 和工具 HMR;工具替换或 Agent 销毁后,已经不可见的包装会被恢复并释放;插件卸载后,旧包装只会惰性透传参数。

这里要注意:它不是权限放开器。approval: never 表示审批请求自动拒绝,不表示自动授予权限。

安装与启用

运行时要求:

  • Node.js 24 或更高版本
  • DSH 0.1.0-rc.6
  • DSH 支持的 Host 平台

从 npm 安装固定版本到 Web profile:

dsh plugin --profile web add dsh-plugin-sandbox-escalation-fix@0.1.2

更新现有安装时使用同一条命令。安装完成后重启 dsh web,让 Host 加载新插件,然后新建会话。

安装最新版时可以省略版本号:

dsh plugin --profile web add dsh-plugin-sandbox-escalation-fix

开发本地版本时传入 checkout 路径:

dsh plugin --profile web add C:\path\to\dsh-sandbox-escalation-fix

移除插件:

dsh plugin --profile web remove dsh-plugin-sandbox-escalation-fix

开发时运行完整验证:

pnpm install
pnpm test
pnpm run pack:check

典型用法

安装后不需要再为 bashpwshwriteedit 单独配置。插件会在工具调用前检查当前 Session 的沙箱权限:

  • 如果请求的 sandbox_permissions 不高于当前权限,插件会忽略这个无效提权参数,并按当前 Session 权限执行工具。
  • 如果请求确实更宽,插件保持参数,继续走 DSH 原有审批。
  • 如果只有 justification 而没有 sandbox_permissions,插件会忽略这个孤立理由。
  • 如果需要升级但理由缺失或空白,插件使用 "Empty justification" 作为 fallback。

这个行为等价于“只清理无效参数,不改变合法审批语义”。

适用场景与注意

适合使用 DSH 0.1.0-rc.6、在 bashpwshwriteedit 中遇到同级或过时沙箱权限参数造成反复报错的开发者。它适合作为过渡兼容插件:如果后续 DSH 原生接受这类无效提权 no-op,移除该插件即可。

使用前建议检查仓库源码、依赖和 MIT 许可证,并确认目标 profile 的权限模型符合预期。插件以当前 DSH 进程权限运行,安装后会影响对应 profile 中可见工具的执行参数正规化。

几个边界:

  • 这是针对 DSH 0.1.0-rc.6 ToolDefinition 结构的兼容插件,升级 DSH 后应先运行测试并检查上游是否已经原生接受这类无效提权 no-op。
  • package.jsonpeerDependencies 固定要求 @deepseek-ai/cordis 4.0.1 和多个 @deepseek-ai/* 0.1.0-rc.6 包。
  • 插件只处理参数正规化,不会放行真正的提权请求,也不会替代 DSH 的非法参数校验。
  • 命名存在差异:仓库线索为 inmny/dsh-sandbox-escalation-fix,npm/README 包名为 dsh-plugin-sandbox-escalation-fix

链接

仓库:

  • https://github.com/inmny/dsh-sandbox-escalation-fix

目录页线索(来自插件线索,未在本次资料中核实):

  • https://www.skillhub.cn/plugins/inmny/dsh-sandbox-escalation-fix

生态说明:DSH 的插件生态遵循“一切皆插件”的思路;这里提到的目录页属于社区目录,不等同于 DeepSeek 或幻方的官方应用商店。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜