DSH Plugins
返回列表
🧩

dsh-hidden-paths

admin-security 更新于 2026.09.16

在终端中运行以下命令:

dsh plugin install Gabrip780/dsh-hidden-paths

将以下提示词粘贴到 DeepSeek Harness 对话框中:

在 DeepSeek Harness 中执行 dsh plugin install Gabrip780/dsh-hidden-paths 即可安装并激活该插件,源码仓库为 https://github.com/Gabrip780/dsh-hidden-paths ,安装后重启 dsh 服务器使新模块生效。

插件介绍

Dsh 的内置权限模型通过沙盒模式和审批策略管控写入操作,但读取路径几乎不受限制。一个在你的项目里工作的 AI agent 可以随意 cat .env、打开 ~/.ssh/id_rsa、批量读取 .git-credentials,把敏感内容直接灌入模型上下文,而没有任何机制拦截。dsh-hidden-paths 正是补上这块缺口的策略守卫——它不是内核级沙箱,而是注册在 agent 工具链上的拦截层,在 agent 真正触达字节之前就否决对敏感路径的访问。

插件分两层工作。第一层是单调路径拒绝守卫,挂在 extensible pre-execute 瀑布之后,覆盖文件工具(read、write、edit、glob、grep、read_image)、shell 命令(cat、ls、cp、rm 及其 glob 展开)、搜索选择器(glob/grep 模式、include/exclude)以及 run_code 中的字面路径。守卫返回 reasons 后,工具体根本不会执行,且后续任何 listener 都无法将该否决翻转为放行。第二层是最外层的 post-execute 过滤器,会把隐藏路径名在结果中替换为 [hidden],并在模型读取前将可识别的凭据格式(OpenAI/Anthropic 密钥、GitHub/GitLab token、Stripe 密钥、PEM 私钥块、JWT 等)替换为 [redacted:kind]——这样即使秘密藏在一个名字毫无暗示的文件里,比如 notes.txt 或某行日志,也能被脱敏。

默认规则追求精确而非宽泛:.env 及其变体、.npmrc、.netrc、.git-credentials、.pgpass、.ssh、.aws、.kube、.gnupg、常见私钥扩展名等受保护,而 secrets.ts、credentials-manager.py、tokenizer.py 等普通源码文件保持可读,.env.example、.env.sample 等模板文件也明确排除。用户可通过 hiddenPaths 追加路径,整个子树受保护,符号链接会被解析并拒绝,规则优先级高于任何 allow 条目,且对 agent 树中所有子 agent 生效。插件零运行时依赖,仅使用 Node 内置模块,每次决策仅调用一次 realpathSync,无网络请求、无进程派生。

适合在真实项目工作区中运行 dsh 驱动的 AI agent 的开发者使用——agent 需要读取源码、运行测试、编辑配置,但绝不应自行或被提示注入指令引导后闯入 .env、.git-credentials、.ssh。它与容器、Landlock、独立用户等更重的隔离手段互补,而非替代,针对的是协作式运行时中最常见也最易被利用的缺口:不受限制的读取。

使用场景

  • AI agent 被提示注入诱导读取 .env 或 .ssh 时,路径守卫自动否决该次工具调用
  • agent 通过 shell 命令、glob 模式或 run_code 搜索时,无法触及 .git-credentials、.npmrc 等受保护路径
  • 模型上下文中出现的 API 密钥、JWT、PEM 私钥块等凭据格式被自动替换为 [redacted:kind]

适合人员

  • 在真实项目工作区中运行 dsh AI agent 的开发者
  • 需要防止 agent 越权读取敏感文件的项目安全负责人
  • 使用 DeepSeek Harness 构建 AI 工作流并需要加固读取边界的平台工程师