Skip to content

声明式 tools.*.allowed_paths:在配置文件中限制工具可操作的路径范围

问题

目前无法在 profile 的 config.yaml 中声明某个工具只能操作特定路径。例如,你希望"这个 agent 的 terminal 工具只能在 /home/user/project/ 下执行命令",但 Hermes 当前没有配置级的路径范围限制机制。

这导致:

  • 需要为每个安全限制都写自定义插件,维护成本高
  • 无 fork 无内核沙箱的轻量部署场景缺乏基本的路径隔离
  • mcp__filesystem__* 类工具完全没有路径约束

解决方案

期望的配置语法(来自 issue 提案)

yaml
# profile/config.yaml
tools:
  terminal:
    allowed_paths:
      - "/home/user/project/"
      - "/tmp/"
  file:
    allowed_paths:
      - "/home/user/docs/"
  mcp__filesystem__read_file:
    allowed_paths:
      - "/home/user/data/"

在工具执行前,runtime 检查工具参数中的路径是否在 allowed_paths 范围内,不合规直接拒绝,并返回清晰的错误信息给 agent。

pre_tool_call REJECT hook 的关系

  • pre_tool_call REJECT hook(#9388)是命令式的——你写代码逻辑来决定是否拒绝
  • tools.*.allowed_paths(#9389)是声明式的——你在配置文件里写规则,runtime 自动执行

两者互补:简单的路径限制用声明式配置,复杂的动态策略用 hook。

受影响工具terminalfilecode_executionmcp__filesystem__* 系列

Issue#9389