TARS-snail/dsh-guard-sensitive-paths ↗★ 0
dsh-guard-sensitive-paths
Approval guard for DeepSeek Harness: write/edit/editor/bash calls touching sensitive paths (.env, .git, SSH keys, .pem) and reads of SSH keys or certificates become an approval ask.
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:TARS-snail/dsh-guard-sensitive-paths说明文档
阅读完整 README ↗生效的配置里应能看到 id 为 sensitive-paths 的一行(name: dsh-guard-sensitive-paths)
## 配置
默认零配置即开启。在 profile 的 `cordis.patch.yml`(用户层)中按 id 覆盖:
```yaml
- id: sensitive-paths
name: dsh-guard-sensitive-paths
config:
sensitivePaths: false
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
sensitivePaths | boolean | true | 为 false 时守卫整体关闭:不注册任何监听器,成为空操作 |
工作原理
- 守卫以 PREPEND 方式注册在监听链最前,先于任何权限授予等其它
tools/pre-execute监听执行;命中敏感目标(含读取密钥材料)即返回ask决策,理由为「targets the sensitive path ; approval is required because it matches the sensitive-path policy」。 - 未命中的调用经
next()原样委托,不产生任何延迟或副作用。 - 写/改类工具按完整敏感集(
.env、.git、.ssh、SSH 私钥、.pem)匹配,read按密钥子集(SSH 私钥、.pem)匹配,两者共享同一套 basename 规则。 - 导出的
SENSITIVE_PATH_GLOBS常量与搜索层的排除 globs 互为镜像,两处各自独立实现、互不依赖(守卫匹配用分段规则,搜索层匹配用 glob 排除 + 路径二次过滤)。
开发与维护
src/为源(仅类型导入 cordis / dsh-tools;运行时仅依赖 schemastery 的z,由宿主提供)。lib/为构建产物(tsc 输出 + 打包入口),随包发布;修改src/后需重新构建并同步lib/。- 测试在
tests/sensitive-paths.spec.ts(isSensitivePath单测 + 真实组合下 pre-execute 返回 ask 的行为测试)。
许可证
MIT
配置
默认零配置即开启。在 profile 的 cordis.patch.yml(用户层)中按 id 覆盖:
- id: sensitive-paths
name: dsh-guard-sensitive-paths
config:
sensitivePaths: false
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
sensitivePaths | boolean | true | 为 false 时守卫整体关闭:不注册任何监听器,成为空操作 |