DSH「允许本次任务」临时授权:仅在当前任务内自动放行同类 `danger-full-access` 请求,任务结束自动失效。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:arrow949/dsh-turn-approval
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
中文 | English
有些高风险操作值得你亲自点头,但同一个任务里,不该让你为同一件事反复点头。
dsh-turn-approval 为 DeepSeek Harness(DSH)Web 审批卡片增加 「允许本次任务」:当 Agent 请求 danger-full-access 时,你可以只授权当前任务余下时间内的同类升级。任务结束后,授权自动消失。

它做什么
默认的 DSH 权限保持 workspace-write + ask,不会被本插件改成全局高权限。
当 Agent 需要工作区外的高权限操作时,审批卡片会显示:
[拒绝] [允许一次] [允许本次任务]
- 拒绝:拒绝当前操作。
- 允许一次:只放行当前操作。
- 允许本次任务:在当前 turn 内,后续同类
danger-full-access请求自动放行;turn/end后立即失效。
安装
从 GitHub 安装
建议固定到一个 commit SHA,确保日后仓库更新不会静默改变本机运行的代码:
dsh plugin --profile web add github:arrow949/dsh-turn-approval#<commit-sha>
插件为已提交构建产物的纯 ESM JavaScript;从 GitHub 安装时不需要 prepare 脚本或 pnpm allowBuilds 权限。
从本地目录安装
dsh plugin --profile web add ./dsh-turn-approval
安装后重启 DSH Web,并在浏览器中硬刷新(Ctrl+Shift+R)。出现第三个按钮即表示插件已加载。
使用
- 正常使用 DSH,平时仍是
workspace-write + ask。 - 当 Agent 请求
danger-full-access时,阅读审批原因与命令。 - 若你愿意在当前任务内继续授予同类高权限,点击「允许本次任务」。
- 当前任务结束后,下一条消息会重新逐项询问。
验证与卸载
查看当前 profile 是否挂载了插件层:
dsh --profile web --dump-config
卸载:
dsh plugin --profile web remove dsh-turn-approval
卸载后,Node half 与 client half 会一并移除,审批卡片自动回到 DSH 官方默认的两个按钮;不会遗留对官方文件的修改。
安全边界
- 仅内存:授权不写入磁盘;DSH 进程重启、插件卸载或 session/agent 被释放后失效(fail-closed)。
- 任务绑定:授权绑定
session + turn,不会把整个 session 切换为 full access。 - 不串权限:一个 session 的授权不影响另一个 session;子代理使用独立 session,不继承授权。
- 类型隔离:只自动放行明确匹配的
danger-full-access升级;workspace-write和其他审批仍逐一询问。 - 用户触发:grant 只能由审批卡片按钮建立,模型没有自行开启任务授权的入口。
- 可审计:自动放行仍保留完整的审批事件记录。
点击「允许本次任务」后,插件会先向宿主建立任务授权。若端点返回非 2xx 或网络请求失败,卡片会明确提示失败并保持可重试;它不会假装授权已建立,也不会静默降级为“允许一次”。
实现与兼容性
本包是官方定义的 DSH bundle:package.json 声明 dsh.bundle.patch,cordis.patch.yml 将插件加入 profile。client half 通过官方 conversation.composer chain 槽位,以更高优先级渲染审批卡片;不修改任何 DSH 官方 bundle 文件,卸载即还原。
当前外观复用官方 ApprovalPanel 的内部 CSS 类名。若未来 DSH 改动该组件结构或 CSS module 类名,本插件可能需要发布兼容更新;这不是修改官方文件。
仅支持 DSH Web:headless profile 没有 UI 入口,任务授权端点不会注册。
给 AI 助手的安装说明
在用户明确要求安装本插件后,执行:
dsh plugin --profile web add github:arrow949/dsh-turn-approval#<commit-sha>
dsh --profile web --dump-config
然后提示用户重启 DSH Web 并硬刷新浏览器。不要修改 DSH 官方 bundle 文件。卸载命令为:
dsh plugin --profile web remove dsh-turn-approval
开发与测试
pnpm install
pnpm test
当前测试覆盖 turn 与 session 隔离、类型隔离、端点防伪造、重启 fail-closed,以及 Cordis 集成链路。
License
MIT
链接
同类插件
toby-bridges/api-relay-audit★ 860
从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
SeaOf0/dsh-redteam-model★ 638
面向授权安全研究的 DSH 合集:九个工作模式(redteam 总控、渗透测试、代码审计、二进制分析、攻防评估、免杀对抗、应急溯源、云安全攻防、CTF 解题)与十五个运行时插件,设置页管理台支持一键部署、安装、更新与卸载。
howmp/dsh-pentest★ 558
面向 DeepSeek Harness 的授权渗透模式:以探索链路记录目标、线索、资产与漏洞,并在 Web 中可视化展示。
PerryLink/dsh-auto-review★ 206
审批链上的第二模型自动审查:只读审查子代理返回带理由的 allow/deny 结构化裁决,默认 fail-closed。
NanmiCoder/dsh-auto-mode★ 163
在 Workspace Write 与 Full access 之间增加 Auto 权限档:日常操作留在官方 workspace-write 沙箱内,由当前会话模型复核升权与破坏性调用,精确的越界访问按次放行一次,意图不明时询问,命中关键路径则拒绝。
PerryLink/dsh-permission-rules★ 114
Claude Code 风格的声明式权限规则:按序 allow/deny/ask 的 YAML 规则,在 tools/pre-execute 瀑布上匹配工具名、参数、工作区路径与 agent 身份,带完整会话日志审计、干跑模式与热重载。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。