Appearance
声明式 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_callREJECT hook(#9388)是命令式的——你写代码逻辑来决定是否拒绝tools.*.allowed_paths(#9389)是声明式的——你在配置文件里写规则,runtime 自动执行
两者互补:简单的路径限制用声明式配置,复杂的动态策略用 hook。
受影响工具:terminal、file、code_execution、mcp__filesystem__* 系列
Issue:#9389