safe-agent 集成方案报告
Codex 核验(2026-10-09):当前 safe-agent(最近推送 2026-06-15)除技能指令外已提供 Claude Code 确定性 hooks;需配置 hooks 且满足 jq 等依赖,README 明示 jq 缺失会 fail open。本文把5个 SKILL.md 复制到 Hermes 的历史记录不能证明这些 hooks 已移植、预算已强制阻断;自定义
auto_trigger字段本身不注册运行时 hook。模型计价示例必须绑定具体型号与日期,不能把旧 Opus/Haiku 单价作为整个家族现价。Snyk 的 36.82%来自其分析的3,984个技能样本,不是全部技能的总体发生率;OWASP“一级攻击面”是项目作者概述,未核实为标准等级。
研究日期: 2026-05-28 项目: ArielSmoliar/safe-agent (MIT License) 目标: 将 safe-agent 的 5 个安全技能集成到 Hermes Agent
1. 项目概述
safe-agent 是一个为 AI 编码 agent 设计的安全技能套件,由 Flare(云审计日志异常检测)和 LOCO(多 agent 调度)的原作者创建。核心思路:不是让 agent 做安全,而是保护你免受 agent 的伤害——在安装恶意技能之前捕获它们,在危险命令执行之前拦截它们。
项目核心数据
| 指标 | 值 |
|---|---|
| ⭐ Stars | 1 (新项目, 2026-05-24 创建) |
| 📝 许可证 | MIT |
| 🏷️ Topics | agent-skills, ai-security, claude-code, guardrails, prompt-injection |
| 🔧 技能数 | 5 个可掉落集成的 SKILL.md |
行业背景
Snyk 的 ToxicSkills 研究发现 **其3,984个受测技能中36.82%**存在至少一个安全问题,包括 prompt 注入、凭证窃取和数据外泄。OWASP 已将 agentic skills 列为一级攻击面。
safe-agent 基于学术论文 Towards Secure Agent Skills: Architecture, Threat Taxonomy, and Security Analysis (Li et al., 2026, arXiv:2604.02837) 的威胁分类法构建。
2. 5 个核心技能详解
2.1 skill-verify — 技能安装前审计
| 属性 | 值 |
|---|---|
| 用途 | 安装前扫描技能文件中的安全威胁 |
| 所需工具 | Read, Grep, Glob, Bash |
| 用户可调用 | ✅ 是 |
| Hermes 路径 | safe-agent/skill-verify/ |
核心功能:
- 静态文件分析:检查 SKILL.md 的 prompt 注入、隐蔽指令(Unicode 零宽字符、base64 载荷)、凭证窃取、权限过度申请
- 脚本分析:Shell 注入、网络调用、文件系统写入、混淆代码
- Hook/配置检查:Hook 劫持、MCP 服务器注入
- 行为分析:技能是否言行一致、最小权限原则、信任边界
- 输出结构化报告:VERDICT + Risk Score (0-100) + 发现列表
调用方式:
/safe-agent:skill-verify path/to/skill-directory
/safe-agent:skill-verify https://github.com/someone/cool-skills
/safe-agent:skill-verify # 审计所有已安装技能
2.2 cost-guard — 会话费用和 Token 预算
| 属性 | 值 |
|---|---|
| 用途 | 跟踪并限制每会话的费用和 token 消耗 |
| 所需工具 | 无(纯行为指导) |
| 用户可调用 | ✅ 是 |
| Hermes 路径 | safe-agent/cost-guard/ |
三种模式:
- reject — 超限时停止工作
- alert — 超限时警告但继续(默认)
- downgrade — 接近限额时建议更便宜的做法
费率表(内置):
| 模型 | 输入 ($/1M tokens) | 输出 ($/1M tokens) |
|---|---|---|
| Claude Opus | $15.00 | $75.00 |
| Claude Sonnet | $3.00 | $15.00 |
| Claude Haiku | $0.25 | $1.25 |
调用方式:
/safe-agent:cost-guard $5
/safe-agent:cost-guard 200k tokens alert
/safe-agent:cost-guard $10 reject
2.3 tool-guard — 工具调用授权
| 属性 | 值 |
|---|---|
| 用途 | 定义工具白名单/黑名单和审批门 |
| 所需工具 | 无(纯行为指导) |
| 用户可调用 | ✅ 是 |
| Hermes 路径 | safe-agent/tool-guard/ |
权限级别:
- Allow — 自由使用
- Gate — 使用前需用户确认
- Deny — 完全禁止
预置配置文件:
| 配置名 | 允许 | 门控 | 禁止 |
|---|---|---|---|
| readonly | Read,Grep,Glob | — | Edit,Write,Bash |
| careful | Read,Grep,Glob | Edit,Write,Bash | — |
| untrusted-repo | Read,Grep,Glob | Edit,Write | Bash |
| production | Read,Grep,Glob | Edit,Write,Bash | — |
调用方式:
/safe-agent:tool-guard profile readonly
/safe-agent:tool-guard deny Bash
/safe-agent:tool-guard gate Edit,Write
/safe-agent:tool-guard status
2.4 behavior-watch — 行为异常检测
| 属性 | 值 |
|---|---|
| 用途 | 分析 agent 工具调用模式,发现异常行为 |
| 所需工具 | 无(分析历史记录) |
| 用户可调用 | ✅ 是 |
| Hermes 路径 | safe-agent/behavior-watch/ |
异常信号(Flare 异常引擎适配):
- 频率异常:工具调用过多/过少、突发活动
- 范围异常:访问工作目录外的文件、读取凭证文件
- 序列异常:读凭证 → 网络请求(外泄)、写 shell 配置 → 执行(持久化)
- 首次模式:首次访问目录、首次使用工具
- 任务漂移:偏离用户目标的行动
评分标准:
- 85-100 = 严重:立即关注
- 65-84 = 高:值得调查
- 40-64 = 中:注意并关联
- 0-39 = 低:仅供参考
调用方式:
/safe-agent:behavior-watch # 生成会话活动异常报告
2.5 pre-exec-check — 执行前安全检查
| 属性 | 值 |
|---|---|
| 用途 | 自动检查破坏性命令并警告 |
| 所需工具 | 无(行为指导) |
| 用户可调用 | ❌ 否(自动触发) |
| Hermes 路径 | safe-agent/pre-exec-check/ |
风险级别:
- CRITICAL: 阻止并警告。如
rm -rf /、git push --force main、DROP TABLE、凭证暴露 - HIGH: 警告并建议更安全的替代方案。如
git push --force→ 建议--force-with-lease - MEDIUM: 仅在异常上下文中提示。如全局安装包、sudo 命令、修改 dotfiles
自动触发场景:
- 破坏性文件操作(rm -rf)
- 不可逆 Git 操作(force push, reset —hard)
- 数据库破坏(DROP TABLE, DELETE without WHERE)
- 系统操作(chmod -R 777, kill -9)
- 秘密暴露(echo $API_KEY, curl 含凭证)
3. Hermes Agent 集成方案
3.1 架构集成方式
safe-agent 的 SKILL.md 文件格式与 Hermes Agent 完全兼容。两者都使用:
- YAML 前端元数据(name, description, triggers)
- Markdown 主体(行为指导和工作流程)
集成深度:
Hermes Agent 系统提示
│
├── safe-agent/skill-verify/ ← 按需调用(安装前审计)
├── safe-agent/cost-guard/ ← 按需调用(预算管理)
├── safe-agent/tool-guard/ ← 按需调用(权限控制)
├── safe-agent/behavior-watch/ ← 按需调用(异常检测)
└── safe-agent/pre-exec-check/ ← 自动触发(命令安全检查)
3.2 已完成的集成工作
- ✅ 克隆仓库到
${HOME}/safe-agent-repo/ - ✅ 安装 5 个技能到
~/.hermes/skills/safe-agent/目录 - ✅ 适配 YAML 前端添加 Hermes 兼容的
triggers:数组和metadata.category - ✅ 添加中文触发词(安全审计、预算、工具限制、行为审计、命令安全等)
- ✅ 复制测试夹具(safe-skill + 3 个恶意示例)用于验证 skill-verify
- ✅ 复制威胁模式参考
skill-verify/references/threat-patterns.md
3.3 文件结构
~/.hermes/skills/safe-agent/
├── _README.md # 总体文档(来自 CLAUDE.md)
├── skill-verify/
│ ├── SKILL.md # 技能审计(106 行)
│ └── references/
│ └── threat-patterns.md # 威胁模式参考
├── cost-guard/
│ └── SKILL.md # 预算管理(127 行)
├── tool-guard/
│ └── SKILL.md # 工具权限(148 行)
├── behavior-watch/
│ └── SKILL.md # 行为异常检测(171 行)
├── pre-exec-check/
│ └── SKILL.md # 执行前检查(115 行)
└── test-fixtures/
├── safe-skill/SKILL.md # 安全技能测试
├── malicious-injection/SKILL.md # Prompt 注入测试
├── malicious-exfiltration/SKILL.md # 数据外泄测试
└── malicious-credential-harvest/SKILL.md # 凭证窃取测试
3.4 Hermes 路由集成
已为每个 skill 添加以下 YAML frontmatter 以实现 Hermes 的路由匹配:
metadata:
category: security
source: safe-agent
triggers:
- "verify this skill"
- "is this skill safe"
- ...
- "安全审计" # 中文触发词
- "技能安全"pre-exec-check 额外添加了 auto_trigger: on_destructive_command 作为触发意图元数据;是否自动执行仍须 Hermes loader/hook 实现与测试。
3.5 推荐使用流程
1. 安装新技能前:
/safe-agent:skill-verify <path-or-url>
2. 会话开始时:
/safe-agent:tool-guard profile careful
/safe-agent:cost-guard $5 reject
3. 工作中:
pre-exec-check 自动检查破坏性命令
4. 会话中/结束前:
/safe-agent:behavior-watch
3.6 防御纵深层次
Layer 1: 安装前 ▸ skill-verify (审计)
Layer 2: 权限 ▸ tool-guard (门控)
Layer 3: 财务 ▸ cost-guard (预算)
Layer 4: 运行时 ▸ pre-exec-check (命令安全)
Layer 5: 审计 ▸ behavior-watch (异常检测)
4. 与 Hermes 现有安全机制的对比
| 安全维度 | Hermes 现有 | safe-agent 补充 |
|---|---|---|
| 技能审计 | 无 | ✅ skill-verify — 安装前检查 prompt 注入、恶意代码 |
| 费用控制 | 部分(模型级别) | ✅ cost-guard — 会话级预算+三模式强制 |
| 工具权限 | 无 | ✅ tool-guard — 白名单/黑名单+预置配置 |
| 行为监控 | 无 | ✅ behavior-watch — 异常模式和任务漂移检测 |
| 命令安全 | 无 | ✅ pre-exec-check — 自动检查破坏性操作 |
| 威胁模式库 | 无 | ✅ threat-patterns.md — 基于学术研究的分类法 |
5. 局限性与注意事项
- 行为指导,非强制执行:safe-agent 是 agent 的行为指导(instruction-based),不是运行时的强制拦截系统。有决心的攻击者可以绕过。这与代码审查不能阻止所有 bug 是同样的道理。
- 仅当前会话:behavior-watch 目前只分析当前会话,没有跨会话记忆。未来版本(v0.4)将支持。
- 费用估计:cost-guard 的费用估计基于近似值,实际计费可能不同。
- 新项目:safe-agent 是 2026-05-24 创建的新项目(v0.1.0),生态尚未成熟。
- 无 MCP 集成:当前版本不涵盖 MCP 服务器审计(v0.3 路线图)。
6. 路线图 & 待办
| 版本 | 功能 | 状态 |
|---|---|---|
| v0.1 | 5 个核心技能 | ✅ 已集成 |
| v0.2 | 跨技能协调、多命令外泄检测 | ⏳ 计划中 |
| v0.3 | MCP 审计、Hook 强制拦截、资源耗尽检测 | ⏳ 计划中 |
| v0.4 | 跨会话记忆、团队配置文件 | ⏳ 计划中 |
Hermes 特定待办
- 测试 skill-verify 在 Hermes 环境中对测试夹具的审计效果
- 测试 pre-exec-check 自动触发的可靠性
- 验证 cost-guard 在 Hermes 不同模型间的兼容性
- 添加 Hermes 特有工具的 tool-guard 配置(如 Agent 工具)
- 考虑将 safe-agent 设为 Hermes 默认启用的安全层
7. 结论
safe-agent 提供的 5 个技能(skill-verify、cost-guard、tool-guard、behavior-watch、pre-exec-check)构成了从安装前审计到运行时保护的完整防御纵深体系。由于其使用标准 SKILL.md 格式,直接与 Hermes Agent 兼容,可以无代码侵入地集成。
集成状态:已完成 — 所有 5 个技能已安装到 ~/.hermes/skills/safe-agent/,适应了 Hermes 的 YAML frontmatter 格式,添加了中文触发词,并包含了测试夹具用于验证。
建议:对于安全敏感的工作场景(生产环境操作、处理凭证、安装第三方技能),建议在 Hermes 系统提示中加入 safe-agent 的推荐使用指导,使其成为 Hermes 的默认安全层。