禁用Hermes代理批准提示 | AI生成和翻译

Home 2026.05

问题: 在 Hermes Agent 中,它经常标记危险命令并要求逐一批准——如何允许任何命令而无需每次都提示?

回答:

Hermes Agent(由 NousResearch 开发)具有多层安全系统用于命令批准。以下是减少或绕过批准提示的所有方法的全面说明,并附有适当警告。


了解批准系统

在执行任何命令之前,Hermes 会将其与精心策划的危险模式列表进行比对。如果匹配,用户必须明确批准。批准系统支持三种模式,通过 ~/.hermes/config.yaml 中的 approvals.mode 配置。

approvals:
  mode: manual   # manual | smart | off
  timeout: 60    # 自动拒绝前的等待秒数

选项 1:禁用所有批准提示 (approvals.mode: off)

这是最直接的方法。将 approvals.mode 设置为 off 会禁用所有安全提示。

# ~/.hermes/config.yaml
approvals:
  mode: off

⚠️ 警告: 警告:** 这意味着 Hermes 将运行任何终端命令而无需事先询问你(绝对阻止列表除外——见下文)。


选项 2:使用 “Smart” 模式(LLM 风险评估)

除了 offoff 之外,你可以将模式设置为 smart`:

使用辅助 LLM 评估风险。安全命令将自动通过;只有真正有风险的命令才会提示你。

approvals:
  mode: smart

这是一种折中方案——更少的干扰,但并非完全盲目。


选项 3:使用 Docker/容器后端(出于安全考虑推荐)

对于生产环境网关部署,使用 dockermodaldaytonavercel_sandbox 后端来隔离代理命令与主机系统。这完全消除了危险命令批准的需要。

terminal:
  backend: docker
  docker_image: "nikolaik/python-nodejs:python3.11-nodejs20"
  container_persistent: true

当在容器内运行时,危险命令检查会被跳过,因为容器已经提供了隔离。这是允许所有命令的最安全方式——命令在沙箱内自由运行,而不是在你的主机上。


选项 4:使用 --yolo 标志(仅 CLI)

--yolo 标志在代码库中被引用为一种在 CLI 中跳过批准层的方式。它在批准中间件之下工作,但绝对阻止列表之上

hermes --yolo

⚠️ UNRECOVERABLE_BLOCKLIST 中的命令(如 rm -rf /、fork 炸弹、直接块设备写入)无论是否使用 --yolomode: off,都始终被阻止


选项 5:为非交互 / 子代理 / 子代理运行自动批准

当子代理遇到危险命令批准提示时,subagent_auto_approve: false 是默认值——自动拒绝。你可以将其设为 true,以自动批准 “一次”,而不是在” 而不是在 stdin 上阻塞。两种选择都会发出 logger.warning 审计行。仅对 cron/批处理流水线设为 true

# ~/.hermes/config.yaml
subagent_auto_approve: true

硬限制:UNRECOVERABLE_BLOCKLIST(不可恢复阻止列表)

无论你使用什么设置,某些命令具有灾难性——不可逆的文件系统擦除、fork 炸弹、直接块设备写入——Hermes 拒绝运行它们,无论设置如何。阻止列表在批准层甚至看到命令之前就会触发,并且没有覆盖标志。如果合法工作流需要这些命令之一,请在代理外部运行它。


总结表

方法 效果 风险级别
approvals.mode: off 无任何提示 高(主机暴露)
approvals.mode: smart LLM 按命令决定
Docker 后端 无提示 + 隔离 低(沙箱化)
--yolo 标志 跳过批准层
subagent_auto_approve: true 用于批处理/cron 流水线

最佳实践: 如果你想要零中断,请同时使用 docker 后端 + approvals.mode: off——你既能获得无提示的便利性,又能通过容器保护主机系统。


参考资料:


Back Donate