Chuyển đến nội dung chính

dsh-bash-escalation-gate

Đã xác minh

dsh-bash-escalation-gate · v0.1.3 · MIT

Require a real, immediately preceding sandbox denial before DSH Bash can request wider permissions.

Cài đặt

dsh plugin add dsh-bash-escalation-gate

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Thẻ

Readme

dsh-bash-escalation-gate

这是一个 DeepSeek Harness 主机侧配套插件,用来阻止模型在没有真实沙箱拒绝证据时,凭空请求 Bash 权限升级并触发审批弹窗。

English

背景

DSH 0.1.1-rc.2 在启用受限 shell 时,会把可选的 sandbox_permissions 和 justification 字段持续暴露给模型。模型可能在普通命令上主动填写这两个字段,即使此前并没有发生沙箱拒绝,结果就是多余的审批请求或无效升级错误。

本插件把权限升级改成“拒绝证据驱动”:

  1. 平时从模型可见的 Bash schema 中移除两个升级字段及相关提示语;
  2. 只有模型直接发起的前台 Bash 调用返回结构化 sandbox.denied: true,才记录一次证据;
  3. 证据绑定命令及全部执行参数,只对紧接着的下一模型步骤有效且只能使用一次;
  4. 重试必须请求严格更宽的模式,随后仍进入 DSH 原有审批流程。

插件不解析 stderr 或模型可见的报错文字,也不替代 DSH 原生沙箱和用户审批。

兼容性

插件版本 已验证 DSH Node.js 验证状态
0.1.2 0.1.1-rc.2 22+ 单元测试与真实安装运行时集成测试
0.1.1 0.1.0-rc.8 22+ 单元测试与真实安装运行时集成测试
0.1.0 0.1.0-rc.7 22+ 单元测试与真实安装运行时集成测试

0.1.2 只支持 rc.2;rc.8 安装继续使用 0.1.1,rc.7 安装继续使用 0.1.0。

安装

当前阶段从 GitHub 安装:

dsh plugin --profile web add github:ruby1304/dsh-bash-escalation-gate
# 重启 dsh web

npm 包发布后可改用:

dsh plugin --profile web add dsh-bash-escalation-gate

本地开发可使用:

dsh plugin --profile web add link:/absolute/path/to/dsh-bash-escalation-gate

关键约束

  • pwd、rg --files 等普通命令在没有匹配拒绝证据时不能升级;
  • 重试必须保持 command、workdir、timeout、后台模式及其他执行参数一致;
  • 仅展示用的 description 可以调整;
  • 审批策略、沙箱模式、工作目录、回合、步骤和租约有效期必须保持匹配;
  • 租约在进入原生 Bash 主体前即被消费,取消、拒绝或重复调用都不能复用;
  • Code Mode 内部调用不能兑换模型直接调用产生的租约。

租约只保存在内存中,会在回合结束、进程重启、策略或模式变化、到期或使用后消失。

已知限制

直接 Bash 工具的模型 schema 会被动态投影。Code Mode 内部调用仍受执行守卫保护,但 rc.2 公共 API 暂不支持动态重写 Code Mode 生成的 SDK 声明。

rc.2 的 sandbox.denied 是外部插件可获得的最强公开拒绝信号,但不是由内核加密绑定的凭据。本插件解决的是模型误填升级字段,不替代操作系统级沙箱。

验证

npm ci
npm run check
npm pack --dry-run

npm test 会同时运行确定性的单元测试,以及由真实 DSH rc.2 Cordis、系统提示、Bash、沙箱策略、shell 和审批服务组成的集成测试。

License

MIT