Hermes Agent

Hermes Agent 权限审批与沙箱安全指南

Hermes Agent 的审批、脱敏和模式检测只能降低风险,真正的安全边界来自 Docker、SSH、Modal 等操作系统级隔离。页面拆解终端后端、危险命令审批、硬拦截、YOLO 模式和凭证剥离,帮助你为本地开发与常驻服务选择不同的权限边界。避免只看功能名称就下结论。可按文中的判断方法逐项核对。

写代码 高级

📚 系列导航:上一篇 Hermes Agent 安装与部署教程 已经讲清“安装与部署教程(Windows、macOS、Linux)”;本篇聚焦 Hermes Agent 安全配置;下一篇 Hermes Agent Promptware 防御指南 继续学习“Promptware 防御与可观测性指南”。

先给结论:审批、脱敏和模式扫描只能降低风险,真正的安全边界是操作系统级隔离。 如果 Agent 能执行命令、加载插件或接触凭证,不要因为开了几条检查规则就默认它已经安全。

ℹ️ 版本说明: 原稿基于 Hermes Agent v0.16.0(2026 年 6 月)源码整理。本文保留其版本化机制分析;命令、数量和界面请以 Hermes Agent 官方文档 与本地输出为准。

Hermes Agent 的操作系统安全边界

两个月前的旧版 Hermes,安全这块几乎是空白。我翻旧调研笔记,搜 sandbox、approval 这些词,一个实质内容都搜不到。

到了 v0.16.0,它长出了一份 332 行的 SECURITY.md。整份文档的骨架,可以浓缩成官方的一句原话:

官方原话:「针对一个对抗性的 LLM,唯一的安全边界是操作系统。」(The only security boundary against anadversarial LLM is the operating system.)

我第一次读到这句,是有点意外的。市面上的 Agent 产品都在比谁的防护层数多,输入过滤、输出脱敏、危险命令检测、工具白名单,一层叠一层,听着很安心。Hermes 的文档直接说:这些进程内的东西,没有一个构成真正的隔离。

它的逻辑其实很费曼。LLM 吐出来的每一个字符,都可能被攻击者通过 prompt 注入影响。你在进程里跑任何扫描器去筛查这串输出,本质上是在一个受攻击者操控的字符串上跑启发式规则。规则再聪明,也只是启发式,不是边界。

安全边界与进程内启发式检查的区别

这是全章最重要的一个区分。Hermes 把进程里的安全组件统一叫「启发式」,把 OS 级隔离叫「边界」。两个词不能混。

进程内组件它在做什么为什么不是边界
审批门执行前检测常见的破坏性 shell 命令,弹窗让你确认shell 是图灵完备的,对它做黑名单结构上不可能穷尽
输出脱敏从显示层剥掉看起来像密钥的字符串有动机的输出生产者总能绕过
SkillsGuard扫描待安装 skill 里的注入模式skill 在 import 时执行任意 Python,读描述拦不住代码

这套区分有个特别诚实的推论,写在文档的「范围」一节里:绕过这些启发式,不算漏洞。你研究出怎么用正则绕过审批门,或者怎么骗过脱敏,Hermes 欢迎你提 issue,但不会走私密披露通道、也不发安全公告。因为它从一开始就没把这些当边界,绕过一个本来就不严密的东西,不构成「破防」。

反过来,什么算真漏洞?逃逸已声明的 OS 隔离、未授权访问外部接口、本该被剥离的凭证泄漏了,这些动了真边界,才进安全范围。

💡 核心建议

这个态度我蛮欣赏的。「Out of scope 不等于不值得报告」。审批门永远能多抓几个模式,脱敏永远能更聪明,但承认它们的天花板,比假装它们密不透风要负责任得多。

Hermes Agent 的操作系统级隔离方式

既然进程里没有边界,operator 就必须主动选一种 OS 级隔离姿态。Hermes 给了两条路。

使用终端后端隔离 Agent 命令

第一种是终端后端隔离。把 LLM 吐出的 shell 命令丢进容器、远程主机或云沙箱里跑,文件读写工具也走这个后端,够不到后端没暴露的路径。它管得住 agent 通过 shell 和文件做的事,但管不住 agent 在自己 Python 进程里做的一切:代码执行工具、MCP 子进程、plugin 加载、skill 加载,这些全是 import 进同一个解释器的。

所以文档专门警告了一句误解:「在终端后端沙箱里却指望它管住不走 shell 的代码路径,是在支持的安全姿态之外操作。」很多人开了 Docker 就觉得安全了,这话正好戳破这个错觉。

第二种是整进程包裹。把整个 agent 进程树丢进沙箱,shell、代码执行、MCP、文件工具、plugin、hook、skill 加载全受同一套文件系统和网络策略约束。Hermes 自带 Docker 镜像可以这么干,更硬核的是接 NVIDIA 的 OpenShell:每会话一个沙箱,文件系统、网络出口、syscall、推理路由都能声明式管控,凭证从外部 store 注入,永不落到沙箱的文件系统里。

到 v0.16.0,沙箱后端从旧版的单一 local 长到了七种。

后端隔离能力备注
local(默认)无,直接在宿主跑但有凭证剥离兜底
docker容器自带镜像,非 root 用户
singularity持久容器capability dropping、资源限制硬化
daytona / modal云沙箱每命令前 resync 文件
ssh远程主机凭证文件按需 sync 进去

Hermes Agent 危险命令审批机制

就算选了 OS 边界,约束层里最具体的那块代码还是值得逐行看的。审批门这个文件 1701 行,注释里自称是「危险命令系统的唯一真相源」。

它的执行顺序,藏着整套设计哲学。

沙箱后端的审批策略

如果已经在 Docker、modal 这类 OS 沙箱里,进程内审批就没必要了,直接通过。这跟「唯一边界是 OS 的立场完全自洽:有了真边界,启发式可以让位。

危险命令的硬性拦截规则

有一类命令没有恢复路径: rm -rf / 、 mkfs 、 dd 写裸设备、关机重启、forkbomb。这些在 YOLO 模式生效之前就被无条件 block。注释写得很直白:「开 YOLO 是信任 agent 碰你的文件和服务,不是信任它擦盘或把机器关机。

YOLO 模式与危险命令检测

过了硬底线,才轮到 YOLO 全放行,或者逐条模式匹配加 session 审批缓存。约 50 条正则,覆盖磁盘破坏、权限滥用、SQL 删库、远程代码执行、sudo 提权、git 强推等等。

有个细节特别能体现「进程内组件不可信」是怎么落到实现的。YOLO 模式在模块 import 时就被冻结,不是每次调用都去读环境变量。注释解释了原因:如果每次都读 os.environ,进程里任意一个 skill 都能偷偷设这个变量、瞬间绕过所有审批,这就是一条现成的 prompt 注入提权路径。把它冻死在 import 那一刻,这条路就堵了。

审批门还有一层「自我保护」是 agent 特有的:禁止 agent 杀掉自己的 gateway 进程、禁止 docker compose down 、禁止把自己关掉。一个能自治运行的 agent,得防着它把管自己的那只手给剁了。

更进一步,被模式 flag 住的命令还能交给一个辅助 LLM 做「安全审查员」,返回放行、拒绝或升级给人。这里其实有个值得玩味的张力:用一个 LLM 去判断另一个 LLM 的输出安不安全,这跟「LLM 输出是受攻击者影响的字符串」的立场,内在是有点矛盾的。所以它失败时一律保守升级给人,不赌。

Hermes Agent 凭证隔离与泄漏风险

讲到「真边界」和「假边界」的差别,有个 GHSA 安全公告是最好的实锤。

Hermes 给低信任的进程内组件传环境变量时,包括 shell 子进程、MCP 子进程、代码执行子进程,默认剥离 provider 的 API key 和 gateway token,只放行 operator 或已加载 skill 显式声明的变量。这个剥离不是硬编码黑名单,而是遍历所有 provider 配置动态派生出来的。

为什么要这么干?因为有过真实的攻击路径。源码注释里记着一类已修复的漏洞:一个恶意 skill 把

ANTHROPIC_TOKEN 、 OPENAI_API_KEY 注册成 passthrough 变量,在代码执行子进程里拿到这些凭证,从而击穿沙箱的凭证擦除。修复方式很干脆:provider 凭证进黑名单,skill 不可覆盖。

⚠️ 注意

但文档同时诚实地标注:凭证剥离本身也不是 containment。任何跑在 agent 进程里的组件,都能读 agent 自己能读的一切,包括内存里的凭证。真正的缓解只有一个:安装前 operator 自己审查代码。第三方 skill 和 plugin 的边界,永远是「装之前读它的 Python」,不是读它的描述文件。

Hermes Agent 安全配置原则

把上面的东西串起来,Hermes 对安全的整体态度其实是一句话:不在进程内造护城河,而是把进程整个丢进 OS 沙箱,再把一切行为暴露给可观测性契约,让人和工具能事后审计。

这和「用更聪明的 prompt 去约束 agent」是两条相反的路。后者听起来更高级、更 AI,但它建在一个不可信的地基上:你没法用一个能被劫持的东西去约束自己。

顺带说一句,审批门的注释里反复出现 Claude Code 和 OpenAICodex 的名字,很多危险模式的灵感直接标了来源。主流 Agent 的约束层正在趋同,危险命令检测慢慢变成了行业公共知识。这本身也是个信号:大家都在同一个现实里,LLM 的输出靠不住,真正的安全只能往 OS 那一层沉。

下一章我们接着这条线往深走:当 agent 开始自改进、自治运行,这套「唯一边界是 OS」的哲学还撑不撑得住,它到底能走多远。

常见问题

Hermes Agent 开启审批后就安全吗?

不是。审批规则属于启发式检查,无法穷尽所有 shell 行为。需要处理不可信内容或长期无人值守时,应使用容器、远程主机或云沙箱提供真正隔离。

Hermes Agent 应该使用哪个终端后端?

本地开发且任务可信时可以使用 local;需要降低主机风险时优先 Docker;需要把执行环境放到另一台机器时选择 SSH 或支持的云沙箱。

这篇教程里的版本数字会变化吗?

会。原稿以 Hermes Agent v0.16.0 为分析基线,平台、工具、命令参数和默认配置可能继续变化;实际操作前请核对当前官方文档和本地命令帮助。