dsh-bash-escalation-gate
Đã xác minhdsh-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 权限升级并触发审批弹窗。
背景
DSH 0.1.1-rc.2 在启用受限 shell 时,会把可选的 sandbox_permissions 和 justification 字段持续暴露给模型。模型可能在普通命令上主动填写这两个字段,即使此前并没有发生沙箱拒绝,结果就是多余的审批请求或无效升级错误。
本插件把权限升级改成“拒绝证据驱动”:
- 平时从模型可见的 Bash schema 中移除两个升级字段及相关提示语;
- 只有模型直接发起的前台 Bash 调用返回结构化
sandbox.denied: true,才记录一次证据; - 证据绑定命令及全部执行参数,只对紧接着的下一模型步骤有效且只能使用一次;
- 重试必须请求严格更宽的模式,随后仍进入 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