自动审批权限守卫:介于 workspace-write 与 danger-full-access 之间的中间档——信任目录内安全操作自动放行,危险操作一律人工确认;11 个分类开关可调,自带审计记录。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:a903067276-rgb/dsh-perm-guard
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。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
面向 DeepSeek Harness(dsh)web 的**「Auto 自动审批」中间档权限插件**——介于 workspace-write(弹窗太频繁)与 danger-full-access(权限太高)之间。跨目录编辑、git commit/merge、构建等常规操作不再弹窗;破坏性操作(删除、磁盘、提权、curl|sh)一律人工确认。
非官方项目:社区成员独立开发维护,非 DeepSeek 官方产品。
⚠️ 已停止维护(2026-10-01)
DSH 0.2 起官方内置了逐调用自动审批(
@deepseek-ai/dsh-experimental-auto-review,即权限选择器里的Auto review,0.2.0-rc.2 起随 App 一同发布),它覆盖了本插件的核心场景;作者已切到官方方案,本插件不再维护。
- 最后版本:
v0.4.2(已在 DSH 0.2.0-rc.2 上验证),此后不再做修复与兼容跟进。- 本插件已从作者自己的两个 profile(桌面端 / web)卸载;你仍可继续安装使用,但后续兼容风险请自行承担。
- 两者差别:本插件是零 token 的确定性规则(命令分类表 + 信任目录,任意宿主可用,含 headless / CLI);官方 Auto review 是逐调用模型审查(需要 Web 层,每次工具调用多一次模型请求,官方标注为实验功能)。
- 感谢使用。
截图


功能
- 双模式(设置页切换,持久化):
- 标准:信任目录(工作区、兄弟目录、自定义列表)内自动放行;目录外与危险操作弹窗。
- 激进:位置不限,只有破坏性操作仍弹窗。
- 11 个类别三态开关(自动 / 人工 / 拒绝),默认值即用户个人习惯,可逐个细调。
- 审计——每次判定记录(放行 / 转人工 / 拒绝)+ 时间 + 命令摘要。
- 配置持久化——
~/.dsh/perm-guard.json,重启不丢。零宿主依赖。
安装
# DSH 0.1.7 及以后:
dsh plugin --profile web add "github:a903067276-rgb/dsh-perm-guard#main"
# DSH 0.1.5 及更早(本版需要 0.1.7+):
# dsh plugin --profile web add "github:a903067276-rgb/dsh-perm-guard#v0.2.10"
然后重启 dsh web。更新:dsh plugin --profile web update dsh-perm-guard,重启。
手动兜底安装:见 docs/install.md。
用法
- Auto 按钮——输入框工具行左侧。点击开关自动审批(绿色 = 开启)。关闭后完全恢复宿主默认审批行为。
- 设置 → Auto 权限——总开关、模式选择(标准 / 激进)、11 个类别开关、信任目录编辑、最近判定审计列表。
- 开启时规则作用于所有会话(含子代理)。
模式默认值
| 类别 | 标准 | 激进 |
|---|---|---|
| 文件编辑(write/edit/cp/mv/mkdir) | 自动(信任目录内) | 自动 |
| Git 本地操作(commit/merge/rebase/checkout) | 自动 | 自动 |
| 构建·测试·依赖 | 自动 | 自动 |
| 只读查询(ls/cat/grep/git status) | 自动 | 自动 |
| 不可逆删除(rm、reset --hard、clean -fd) | 人工 | 人工 |
| 受保护路径(.ssh/.aws/密钥/.env/系统目录) | 人工 | 人工 |
| 提权·系统管理(sudo、服务、全局安装) | 人工 | 人工 |
| 网络下载执行(curl|sh) | 人工 | 人工 |
| Git 推送远端 | 人工 | 自动 |
| 发布·部署 | 人工 | 自动 |
| 磁盘·分区·设备 | 人工 | 人工 |
切换模式会重置类别开关为该模式默认值(之后可再细调)。
永不自动放行(所有模式)
- 删除:
rm、rm -rf /或~(断路器,含$(...)变体)、git reset --hard、git clean -fd、Remove-Item - 磁盘:
dd写设备、mkfs/fdisk/wipefs/diskutil擦盘、写/dev/ - 提权:
sudo/su、系统服务(launchctl/systemctl)、递归chmod/chown根或家目录 - 网络下载执行:
curl|sh、wget|sh - 强制推送:
git push --force/-f(重写历史) - 受保护路径写入
平台支持
| 平台 | 状态 |
|---|---|
| macOS | ✅ 开发环境 |
| Linux | ⚠️ 预期可用 |
| Windows | ✅ 已适配并实测(win32 路径识别 + PowerShell 词表,2026-08-24) |
Windows 说明
- 信任目录支持三种绝对路径写法:
C:\…、C:/…、/c/…(MSYS/Git-Bash),保存时统一规范化为C:/…形态;非法条目保存时红字提示,不再静默丢弃。 - 分类器覆盖 PowerShell 常用词表:管道/格式化类(
Select-Object等)按只读处理;Invoke-RestMethod/iwr归网络类;Stop-Process、注册表reg add、schtasks /create等归提权类(锁定人工确认);vssadmin delete shadows、bcdedit、diskpart列为硬红线。 ghCLI 只读子命令(view/list/status等)自动放行,写操作转人工。- 带
sandbox_permissions的提权重试只弹一次确认卡(不再同一条命令弹两张)。
环境要求
- DSH web(≥ 0.1.0-rc.6)(本插件守卫的审批体系所在)
- 版本兼容(尽力兼容——设置卡片用双字段
key+id注册,同满足 rc.6(id 契约)与 rc.7+(key 契约);已在本地实测 rc.6/rc.8/0.1.1-rc.2/0.1.5-rc.1,不保证每个 DSH 版本):- DSH 0.1.0-rc.6 及以上(含 0.1.1 / 0.1.2 / 0.1.5 线):装
main(默认)或v0.2.9及以上。 - 保守回退(升级前的最后版本):DSH 0.1.0-rc.7/rc.8 →
v0.2.7(dsh plugin add github:a903067276-rgb/dsh-perm-guard#v0.2.7);DSH 0.1.0-rc.6 → 冻结rc6-compat(不再维护)。 - ⚠️ DSH 0.1.5+ 请勿使用
v0.2.8:该版本 import 了官方已移除的settingsNamespace导出,在 0.1.5 上会整个插件树加载失败(web 起不来)。0.1.5 用户请用main/v0.2.9及以上。
- DSH 0.1.0-rc.6 及以上(含 0.1.1 / 0.1.2 / 0.1.5 线):装
- PATH 里有
pnpm——dsh plugin是 pnpm 转发器(安装/更新必需)- ✅ DSH 0.1.7 及以后——装本版(
v0.4.2):它声明了peerDependencies: {"@deepseek-ai/dsh": "^0.1.7-rc.1 || ^0.2.0-rc.1"},宿主不匹配会明确拒绝加载并说明原因,不再静默出错。配置迁到 0.1.7 的插件Config(.volatile()字段可即时生效),改完不用重启。 - ✅ DSH 0.2.0-rc.1——已验证兼容:peer 范围同时覆盖两条线(
^0.1.7-rc.1 || ^0.2.0-rc.1),dsh.compatibility.dshReleases矩阵新增"0.2.0-rc.1": "compatible"——已在 0.2.0-rc.1 真机 + 影子实例验证。0.2 起宿主对 profile bundle 做 peer 门禁,范围不覆盖当前运行时会整个跳过加载,靠这个范围插件才会被加载。 - ⚠️ DSH 0.1.5 及更早——请装上一版 tag
v0.2.10:那条线保持原行为,不含任何 0.1.7 专用 API。 - ⛔ 旧版本插件(≤
v0.2.10)在 0.1.7 上不受支持——在插件管理页停用→再启用会报duplicate route,配置也改不动。插件要跟宿主一起升。
- ✅ DSH 0.1.7 及以后——装本版(
- 维护策略:已停止维护(2026-10-01)——不再跟随 DSH 版本演进;现存版本对旧版 DSH 的兼容仅是尽力而为、不保证长期有效。
工作原理
- 宿主弹窗前拦截——每个审批请求在宿主审批弹窗前被拦截,按"实际命令/目标"分类判定:安全操作自动回答放行(13ms 无感);危险操作转交人工弹窗。
- 按 callId 反查命令——审批请求本身不带工具参数,插件从会话日志按
callId反查实际参数;DSH 0.1.5 移除了Session.events,改走官方公开的snapshotEvents()(旧宿主仍走events)。两条路都拿不到时一律回落人工审批(安全默认,绝不放行)。 - 命令级防火墙(
tools/pre-execute)——危险类别在沙箱拒绝之前就提前拦截。 - 分类判定管线——双模式设定各类别默认值(标准:信任目录内自动放行;激进:位置不限),11 个三态开关(自动 / 人工 / 拒绝)逐类细调。
- 审计与持久化——每次判定记录时间 + 命令摘要;审批决策始终经宿主
approval/asked+approval/decided事件对持久化。
注意事项
- DSH 沙箱无 OS 级网络隔离(不同于 Codex):插件只能识别命令文本中的下载执行模式(
curl|sh),无法拦截其他网络行为。 - 终端会话、子代理创建、模型调用、MCP 工具完全不在审批体系内。
- 命令文本中含有危险字样(如 echo
"Remove-Item"、脚本内嵌规则源码)会被保守拦截——预期行为,实际罕见。 - 审计列表为内存态(60 条),重启重置;审批决策本身始终经宿主
approval/asked+approval/decided事件对持久化。
覆盖范围
- DSH 全部审批入口已覆盖:
bash、pwsh(PowerShell)、write/edit文件工具。MCP 工具与其他只读工具无审批机制,不受影响。 - 复合命令(
a && rm -rf x):纯词链拆分逐条判定取最严;含变量/重定向/通配的链整体保守处理。 - 未知命令:无论何种模式一律回退为“ask”(安全默认)——分类器无法解析的命令绝不自动放行。
与 Claude Code / Codex 对照
| Claude Code | Codex | dsh-perm-guard | |
|---|---|---|---|
| 只读命令集 | 内置不可配置 | 沙箱 | 内置 + 可配置 |
rm -rf / ~ 断路器 |
永远提示 | 沙箱拦截 | 所有模式永远提示 |
| 受保护路径 | 有 | .git/.agents/.codex |
.ssh/.aws/密钥/系统目录/.git |
| 网络隔离 | 工具级 | OS 级(默认关) | 不可用(DSH 无 OS 级断网,仅 curl|sh 模式识别) |
| 审批类别 | 3 类工具 | 5 个细粒度开关 | 11 个显式开关 + 双模式 |
| 审计 | 仅弹窗 | 日志 | 插件内审计 + 宿主 approval/asked/decided 事件 |
配置文件
~/.dsh/perm-guard.json(首次修改时创建):
{
"enabled": true,
"mode": "standard",
"categories": { "fileEdit": "auto", "...": "..." },
"trustedDirs": []
}
trustedDirs:标准模式下额外自动放行的绝对路径(默认含工作区及兄弟目录)。- 激进模式下忽略信任目录(位置不限)。
开发
# 热插拔测试(免重启)
# 1. 用同源判定逻辑定义动态 Cordis 插件
# 2. cordis_run → 验证 → cordis_stop
# 静态 bundle(本仓库布局)
# 软链到 ~/.dsh/profiles/web/node_modules/dsh-perm-guard
# ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 加 "dsh-perm-guard"
# 重启 dsh web
许可证
链接
同类插件
toby-bridges/api-relay-audit★ 865
从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
SeaOf0/dsh-redteam-model★ 659
面向授权安全研究的 DSH 合集:九个工作模式(redteam 总控、渗透测试、代码审计、二进制分析、攻防评估、免杀对抗、应急溯源、云安全攻防、CTF 解题)与十五个运行时插件,设置页管理台支持一键部署、安装、更新与卸载。
howmp/dsh-pentest★ 581
面向 DeepSeek Harness 的授权渗透模式:以探索链路记录目标、线索、资产与漏洞,并在 Web 中可视化展示。
PerryLink/dsh-auto-review★ 224
审批链上的第二模型自动审查:只读审查子代理返回带理由的 allow/deny 结构化裁决,默认 fail-closed。
NanmiCoder/dsh-auto-mode★ 164
在 Workspace Write 与 Full access 之间增加 Auto 权限档:日常操作留在官方 workspace-write 沙箱内,由当前会话模型复核升权与破坏性调用,精确的越界访问按次放行一次,意图不明时询问,命中关键路径则拒绝。
PerryLink/dsh-permission-rules★ 116
Claude Code 风格的声明式权限规则:按序 allow/deny/ask 的 YAML 规则,在 tools/pre-execute 瀑布上匹配工具名、参数、工作区路径与 agent 身份,带完整会话日志审计、干跑模式与热重载。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。