hermes agent文件操作权限需五步配置:一、设filesystem_mode为sandbox启用沙箱;二、在mount_points中配置白名单路径映射;三、在cli-config.yaml的allowed_paths限定绝对路径前缀;四、扩展is_blocked_path()过滤敏感后缀;五、启用audit_enabled和日志记录审计。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在使用Hermes Agent执行文件读写、修改或删除操作时,发现AI无法访问指定路径、报错权限拒绝或跳过关键步骤,则可能是由于文件操作权限配置未生效、白名单路径缺失或沙箱隔离机制拦截所致。以下是实现文件操作权限精细化管理的具体步骤:
一、启用沙箱内文件系统隔离
终端沙箱默认禁用对宿主机文件系统的直接访问,所有文件操作被重定向至独立挂载的临时目录,确保AI无法触达真实路径。该机制由 environments/hermes_swe_env/default.yaml 中的 filesystem_mode 参数控制,设为 sandbox 即可激活。
1、打开项目根目录下的 environments/hermes_swe_env/default.yaml 文件;
2、定位 filesystem_mode 字段,将其值修改为 sandbox;
3、保存文件后重启 Hermes Agent 实例以使配置生效。
二、配置白名单路径映射
在沙箱隔离前提下,可通过路径映射机制有选择地暴露特定目录供AI读写,其余路径一律不可见。映射关系定义在 hermes_swe_env.py 的 mount_points 字典中,支持只读(ro)与读写(rw)两种模式。
1、编辑 environments/hermes_swe_env/hermes_swe_env.py;
2、在 mount_points 字典中添加新条目,例如:"/workspace": {"path": "/home/user/hermes-work", "mode": "rw"};
3、确认目标宿主目录 /home/user/hermes-work 已存在且权限属当前运行用户;
4、重新加载沙箱环境并验证挂载是否成功。
三、通过 cli-config.yaml 限制文件操作路径范围
该配置文件是用户级权限策略的核心载体,其中 file_operations 节点可显式声明允许访问的绝对路径前缀列表,任何超出白名单的路径访问将被工具层直接拒绝。
1、确保已将 cli-config.yaml.example 重命名为 cli-config.yaml;
2、编辑 cli-config.yaml,定位到 file_operations → allowed_paths 字段;
3、仅保留必需路径,例如:["/workspace/", "/tmp/hermes-tmp/"];
4、禁止使用通配符、相对路径或根路径 "/" 作为允许项。
四、扩展 is_blocked_path() 过滤敏感文件后缀
通过正则匹配机制阻止AI打开 .env、.gitconfig、.ssh/id_rsa 等高危配置文件,该逻辑实现在 tools/file_tools.py 的 is_blocked_path() 函数中,可在运行时动态拦截非法路径请求。
1、打开 tools/file_tools.py;
2、定位 is_blocked_path() 函数内的 blocked_patterns 列表;
3、追加敏感后缀正则表达式,例如:r"\.(env|gitconfig|pem|key|shadow|sudoers)$";
4、保存后无需重启,该过滤将在下次文件操作时即时生效。
五、启用文件操作审计日志追踪行为
所有文件读写行为均通过 tools/file_tools.py 统一入口执行,该模块内置审计钩子,可将每次 open、read、write、delete 操作记录至 trajectory.jsonl,包含完整路径、操作类型、时间戳及调用上下文。
1、确保 tools/file_tools.py 中 audit_enabled 变量设为 True;
2、检查 cli-config.yaml 中 log_level 是否不低于 INFO 级别;
3、执行任意含文件操作的任务后,在 outputs/ 目录下查找最新生成的 trajectory.jsonl 文件;
4、使用 cat 或 jq 命令筛选 file_op 类型事件,确认日志字段完整。











