Hermes v0.16 必须显式启用七层纵深防御总开关(enable_defense_in_depth: true),并配置手动审批、路径白名单、上下文保护及WebUI/MCP隔离,否则默认配置无法保障安全边界。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在 Hermes Agent v0.16 中明确划定安全模型的执行边界,防止智能体越权读取文件、执行命令或泄露凭证,而不能依赖默认配置被动防御。
启用七层纵深防御模型
Hermes v0.16 默认启用全部七层防护,但部分层级需手动确认是否激活。打开项目根目录下的 config.yaml 文件,检查以下字段是否存在且值为 true:
→ 找到 security: 区块 → 确认 enable_defense_in_depth: true 已设置 → 若缺失,手动添加该行并设为 true。
这一开关是整个安全模型的总闸门,【关闭它将导致所有七层防护失效】,包括危险命令审批、容器隔离、上下文扫描等核心机制。
保存后重启 Hermes 服务,运行 hermes security status 命令验证输出中显示 “Defense-in-depth: enabled”。
配置危险命令审批策略
这是防止 Agent 自动执行 rm -rf /、cat ~/.aws/credentials 等高危操作的关键防线。审批模式必须显式声明,v0.16 不再接受隐式 fallback。
方法一:手动审批(推荐新手与生产环境)
→ 编辑 config.yaml → 在 approvals: 下设置:
mode: manual
timeout: 60
→ 保存后重启服务。此后任何匹配危险模式的命令(如含 rm、curl http://、sudo、env、find / -name)都会暂停并弹出桌面端确认窗口。
方法二:智能审批(仅限沙盒调试)
→ 将 mode: 改为 smart → 同时确保 llm_audit_enabled: true 在 security: 区块中已启用 → 这会调用内置小模型实时评估风险等级。
【注意:smart 模式无法识别新型 shell 注入变种,不适用于真实业务路径】
限定工具可访问的资源路径
即使命令通过审批,也必须限制其作用范围。Hermes v0.16 引入路径白名单机制,覆盖文件读写、命令执行、MCP 调用三类操作。
第一步:定义允许的根路径
→ 在 config.yaml 的 tools: 区块下添加 allowed_paths: 列表
→ 示例:- "/home/user/project"、- "/tmp/hermes-temp"、- "/opt/hermes/data"
第二步:禁止通配符与上级跳转
→ 所有路径必须以 / 开头,且不得包含 ../、*、** 或正则语法
→ 若出现 /home/user/../root/.ssh 类路径,Hermes 会在解析阶段直接拒绝注册该工具
第三步:验证路径裁剪生效
→ 启动 Hermes Desktop → 发送指令:“请读取 /etc/passwd” → 观察响应是否返回 “Access denied: path '/etc/passwd' not in allowed_paths”
启用上下文压缩与敏感段保护
防止 Agent 在响应中意外回显 API Key、用户邮箱或系统路径等上下文片段。v0.16 的压缩器默认启用,但关键参数需手动加固。
→ 打开 agent/context_compressor.py → 确认以下两行设为 True:
protect_first_system = True
protect_first_human = True
→ 回到 config.yaml → 在 context: 区块下设置:
context_window_size: 15
protect_head: 3
protect_tail: 2
这表示前3轮系统提示和后2轮用户输入永不参与摘要,强制保留在原始上下文中——【避免敏感初始化指令被压缩丢弃】。
禁用 WebUI 并隔离 MCP 管理后台
WebUI 和 MCP 服务器是攻击者最常瞄准的入口点,v0.16 桌面版默认不启动 WebUI,但若你曾手动启用过,必须彻底清除暴露面。
方法一:关闭 WebUI 启动项
→ 检查启动命令是否含 --webui 或 --enable-webui 参数 → 全部删除
→ 查看进程:运行 ps aux | grep webui → 若存在 python 或 node 进程监听 3000 端口,立即 kill -9 对应 PID
方法二:锁定 MCP 管理后台访问
→ 编辑 environments/benchmarks/terminalbench_2/default.yaml
→ 将 network: 设为 none
→ 在 Docker Compose 文件中移除 ports: 映射,改用 expose: 仅内部通信
→ 若必须远程管理,使用反向代理 Nginx,并在 location 块中添加:allow 192.168.1.0/24; → deny all;


















