打开报告目录
总览 结论先行
实际运行入口 提示词来源
加载顺序 项目规则
技能提示词 会话快照
操作权限 调用者权限
未生效来源 配置优先级
敏感文件 平台提示
OS 限制 其他发现
收紧建议
本机配置审计 · 2026-10-04
Hermes Agent 提示词与操作权限
一份针对当前实际运行 gateway 的完整来源图谱:提示词从哪里来、何时生效、如何叠加,以及授权调用者最终能做什么。
运行版本 Hermes Agent 0.19.0
活动 Profile 默认 · ~/.hermes
模型通道 gpt-5.6-luna / Codex
权限判断 权限面:高
00
结论先行
01 当前运行的不是 /Applications/Hermes.app,而是 launchd 启动的 Hermes Agent 0.19.0 源码安装。代码位于 /Users/kaiqismac/.hermes/hermes-agent,运行配置根是 /Users/kaiqismac/.hermes。
02 最主要的人为提示词来源是 SOUL.md、MEMORY.md、USER.md 与 ~/.hermes/skills/;部分技能通过符号链接实际来自 ~/.agents/skills/。
03 Hermes 内置操作指示主要来自 agent/prompt_builder.py、agent/system_prompt.py 与各工具 schema/实现。
04 当前权限相当宽:approvals.mode: off,本机 shell、文件、Python、浏览器与屏幕操作均可用;无 Hermes 出站网络防火墙;computer-use 当前没有 gateway 人工确认回调;Discord 管理操作没有 Hermes 确认层。
05 仍不是完全无限制:terminal 保留内置灾难性命令硬阻断;进程不是 root;macOS TCC、文件系统权限与外部平台 API 权限仍生效;Feishu、Discord、WhatsApp 调用者均有配对或白名单限制。
06 本次只进行读取和诊断,没有修改 Hermes 配置、提示词、技能、记忆、配对记录,也没有重启服务或执行配置迁移。
01
实际运行入口
先确认哪个安装和哪个进程真正拥有提示词解释权,避免把 GUI、备份或旧文件误判为生效配置。
项目 当前状态 位置
Gateway launchd 常驻、自动重启 /Users/kaiqismac/Library/LaunchAgents/ai.hermes.gateway.plist:5
启动命令 Python 执行 hermes_cli.main gateway run --replace ai.hermes.gateway.plist:8
HERMES_HOME明确指定为 /Users/kaiqismac/.hermes ai.hermes.gateway.plist:27
进程工作目录 /Users/kaiqismac/.hermesai.hermes.gateway.plist:18
Agent 逻辑工作目录 /Users/kaiqismacgateway 将 terminal.cwd: . 解析为用户目录
CLI 包装器 清除 PYTHONPATH/PYTHONHOME 后启动 venv 内 Hermes /Users/kaiqismac/.local/bin/hermes:1
实际版本 Hermes Agent 0.19.0,Git commit 41a07f5b8451f88a8b8b5adfc0cfdc2ada0a1f90 /Users/kaiqismac/.hermes/hermes-agent
模型 gpt-5.6-luna / openai-codex/Users/kaiqismac/.hermes/config.yaml:1
API 传输 Codex Responses API;系统提示词放入 instructions agent/transports/codex.py:107
HERMES_HOME 解析优先级
进程内 context-local override
→ HERMES_HOME
→ 默认 ~/.hermes
对应实现:/Users/kaiqismac/.hermes/hermes-agent/hermes_constants.py:106。
02
所有提示词和指示来源
“提示词”不仅是一个文本文件。身份、记忆、技能索引、平台上下文、工具 schema 与会话历史共同构成模型实际看到的指示。
来源 状态 作用
/Users/kaiqismac/.hermes/SOUL.md生效 替换内置默认身份提示词
/Users/kaiqismac/.hermes/memories/MEMORY.md生效 注入长期环境、偏好和稳定事实
/Users/kaiqismac/.hermes/memories/USER.md生效 注入用户画像
/Users/kaiqismac/.hermes/skills/生效 技能名称和描述进入技能索引;正文按需加载
/Users/kaiqismac/.agents/skills/间接生效 经 ~/.hermes/skills 内符号链接进入 Hermes
agent/prompt_builder.py生效 内置行为规则、工具规则、平台提示、Codex 指示
agent/system_prompt.py生效 按 stable/context/volatile 三层组装系统提示词
/Users/kaiqismac/.hermes/state.db生效 保存每个会话的完整系统提示词快照、历史消息和路由状态
gateway/session.py每轮生效 生成当前平台、频道和会话动态上下文
工具 JSON schema 生效 作为独立于 system prompt 的工具使用说明发送给模型
Feishu / Discord / WhatsApp 平台提示 生效 提供消息格式和媒体发送方式
当前 SOUL.md 的实际内容
You are Hermes Agent, an intelligent AI assistant created by Nous Research. You are helpful, knowledgeable, and direct. You assist users with a wide range of tasks including answering questions, writing and editing code, analyzing information, creative work, and executing actions via your tools. You communicate clearly, admit uncertainty when appropriate, and prioritize being genuinely useful over being verbose unless otherwise directed below. Be targeted and efficient in your exploration and investigations.
加载函数:agent/prompt_builder.py:1888。该文件不存在时才回退到 DEFAULT_AGENT_IDENTITY:agent/prompt_builder.py:139。
当前确实进入系统提示词的内置规则
已精确确认存在
Hermes 自身帮助和配置说明
任务完成、不要伪造结果
可并行时并行调用工具
长期记忆与历史会话搜索规则
技能发现和加载规则
中途 steering message 的解释
工具调用强制规则
GPT/Codex 执行纪律
macOS computer-use 操作规则
可用技能索引、profile 保护、环境和平台提示
当前 Feishu 提示词中不存在
Google 模型专用指示
专门的 CODING_AGENT_GUIDANCE
Nous subscription 提示
session ID
当前 personality
cwd 项目说明文件
自定义全局或频道 system prompt
身份:agent/prompt_builder.py:139
Hermes 帮助:agent/prompt_builder.py:149
记忆 / 会话搜索 / 技能:agent/prompt_builder.py:160 / :183 / :189
工具 / 任务完成 / 并行:agent/prompt_builder.py:304 / :339 / :382
Codex / computer-use / 平台:agent/prompt_builder.py:403 / :625 / :666
完整组装:agent/system_prompt.py:152
03
系统提示词如何加载与叠加
基础提示词按会话缓存;动态会话信息和频道覆盖在每次 gateway 请求时另行拼接;工具 schema 又是一条独立指示通道。
Tier 01 Stable SOUL、内置规则、技能索引、环境、profile 与平台提示
Tier 02 Context 调用方 system_message 与项目上下文;当前为空
Tier 03 Volatile MEMORY、USER、可选外部记忆与日期/模型元数据
Per turn Gateway Current Session Context、频道提示与 ephemeral override
Parallel Tool schemas 工具说明、历史消息、工具结果与按需加载技能正文
A. 会话级缓存基础提示词
Stable 层
SOUL.md,不存在时使用内置默认身份
Hermes 帮助指示
任务完成、并行调用、工具使用规则
memory/session-search/skills 等工具专用规则
OpenAI/Codex 操作指示
computer-use 指示
当前可用技能索引
环境提示
默认 profile 保护说明
平台提示
Context 层
调用方提供的 system_message 项目上下文文件
当前 gateway 的 Context 层为空。
Volatile 层
MEMORY.mdUSER.md可选外部 memory provider 日期、模型、provider、平台元数据
当前未配置外部 memory provider。
B. 每次 gateway 请求额外拼接
动态 Current Session Context
平台旧式 channel_prompts
匹配的 channel_overrides[*].system_prompt
若无频道 override,则使用全局 ephemeral prompt
全局 ephemeral:gateway/run.py:5546
频道提示选择:gateway/run.py:5581
动态会话上下文:gateway/session.py:450
每轮最终拼接:gateway/run.py:21937
当前状态 没有 agent.system_prompt、HERMES_EPHEMERAL_SYSTEM_PROMPT、channel_overrides、平台 channel_prompts 或 prefill 文件。
全局 ephemeral:
HERMES_EPHEMERAL_SYSTEM_PROMPT
→ config.yaml 中 agent.system_prompt
Prefill:
HERMES_PREFILL_MESSAGES_FILE
→ 顶层 prefill_messages_file
→ agent.prefill_messages_file
C. system prompt 之外仍会影响模型的内容
工具 JSON schema
已有会话消息历史
工具调用和返回结果
已加载的技能正文
gateway steering 消息
Feishu 评论、会议邀请等事件合成的用户提示
主要存储于 /Users/kaiqismac/.hermes/state.db 与 /Users/kaiqismac/.hermes/sessions/。
04
项目规则文件的查找顺序
项目上下文采取“首种匹配”策略,不会将所有生态的规则文件无条件叠加。
.hermes.md 或 HERMES.md,从 cwd 向上查到 Git 根
cwd 下的 AGENTS.md
cwd 下的 CLAUDE.md
cwd 下的 .cursorrules 与 .cursor/rules/*.mdc
实现位于 agent/prompt_builder.py:1946、:1965、:1983、:2016。
当前有效状态 Gateway 逻辑 cwd 是 /Users/kaiqismac,该位置不存在上述文件,所以当前没有项目规则被注入。SOUL.md 独立于这套优先级。
源码目录自身的 /Users/kaiqismac/.hermes/hermes-agent/AGENTS.md 不会因为 gateway 安装在那里就获得提示词权限。非 CLI gateway 路径专门阻止安装目录被误当作项目上下文。
05
技能提示词现状
文件树 141 个普通 SKILL.md 18 个分类 DESCRIPTION.md 27 个符号链接
加载方式 基础系统提示词只包含名称、描述、适用平台/工具条件和加载信息。完整 SKILL.md 仅在预加载、查看或调用后进入上下文。
符号链接使 /Users/kaiqismac/.agents/skills/ 也成为真实有效的 Hermes 指示来源。
状态 技能索引 说明
当前打开的 Feishu 会话 178 个条目 会话已固定
当前文件系统 fresh prompt 180 个条目 新建/重建后生效
仅 fresh prompt 新增的两个技能:
agent-skill-symlinkegolite-native-skill-patcher
技能索引缓存
文件:/Users/kaiqismac/.hermes/.skills_prompt_snapshot.json
权限:0600
大小约 101 KB
当前 manifest 已与技能目录不匹配
因此已打开 Feishu 会话继续使用旧的 178 项索引;新会话或提示词重建会重新扫描并使用当前 180 项索引。Snapshot 是缓存,不是高于源文件的独立规则层。
06
会话提示词快照
每个平台会话都保留自己的组合结果。因此“磁盘上的最新提示词”和“当前打开会话实际使用的提示词”可能不同。
完整系统提示词保存在 /Users/kaiqismac/.hermes/state.db 的 sessions.system_prompt 字段中。
平台 持久化提示词长度 记忆/画像新鲜度
Feishu 36,881 字符 当前 MEMORY.md 和 USER.md 均匹配
WhatsApp 37,164 字符 USER.md 当前,MEMORY.md 为较旧版本
Discord 36,555 字符 USER.md 当前,MEMORY.md 为较旧版本
记忆、技能等文件更新后,通常要等新建会话、会话重置或上下文压缩触发系统提示词重建,才会替换已打开会话中的旧快照。不建议直接编辑 state.db。
07
操作权限审计
当前整体权限较高。最关键的事实不是“有哪些工具”,而是这些工具在什么审批、沙箱和操作系统边界下运行。
核心设置 · 高风险
approvals:
mode: 'off'
destructive_slash_confirm: false
位置:/Users/kaiqismac/.hermes/config.yaml:119。mode: off 在 Hermes 审批层中等价于 YOLO:普通危险 shell 命令与整段 execute_code 脚本不再询问人工确认。
审批链
解析失败 / 内置硬阻断
→ 用户 approvals.deny
→ mode=off、YOLO 等审批绕过
→ command_allowlist
→ 普通危险检测 / Tirith
→ 人工审批
approvals.deny=[]
command_allowlist=[]
approvals.mode=off
Tirith 虽配置为启用,但普通可恢复扫描位于 mode-off 快捷路径之后,实际被绕过;Tirith 还配置为 fail-open
硬阻断:tools/approval.py:503
用户 deny:tools/approval.py:525
审批绕过:tools/approval.py:2597
审批流程:tools/approval.py:2799
命令 guard:tools/approval.py:3335
Python guard:tools/approval.py:3807
Terminal
Backend 为 local,逻辑 cwd 是用户 home,persistent shell 已启用,不在 Docker/container 沙箱中。命令以当前 macOS 用户身份执行,无普通人工确认。
仍无条件阻断:递归删除根目录/系统目录/home、mkfs、向原始块设备 dd 或重定向、fork bomb、kill-all-processes、shutdown/reboot、init/telinit 0/6、systemctl poweroff/reboot、解析限制/异常命令,以及未配置 sudo 密码时通过 stdin 猜测或传入密码。
这些是 shell 字符串保护,不是完整 OS 沙箱;普通 Python 文件/进程 API 不一定经过相同模式检查。
高风险
文件读写
没有 project-root 限制;HERMES_WRITE_SAFE_ROOT 未设置。文件工具自身禁止写入 SSH、云服务/容器凭据、Hermes secret/auth、常见凭据文件、关键 /etc 文件、Hermes state.db、session、pairing 和 MCP token store。
实现:agent/file_safety.py:28、:64、safe-root :83、跨 profile :417。
源码明确说明这只是 defense in depth。Terminal 或普通 Python 仍可尝试访问当前 OS 用户有权限访问的路径。
高风险
execute_code
运行上限 300 秒、最多 50 个 Hermes RPC 工具调用、mode=project,使用当前 session cwd 和虚拟环境。
可嵌套调用 web_search、web_extract、read_file、write_file、search_files、patch、terminal。
子进程环境会清除大多数 API key/token,输出会 secret redaction;但 Python 自身仍可使用普通文件、subprocess 与网络 API。mode=project 不是 filesystem sandbox。
高风险
Computer Use
具备截屏、鼠标键盘输入和窗口/前台应用操作能力。cua-driver 位于 /Users/kaiqismac/.local/bin/cua-driver,版本 0.7.0;TCC identity com.trycua.driver 已获得 Accessibility 与 Screen Recording。
Schema 虽写明非 capture 操作需要批准,但 gateway 没有 CLI inner callback,Feishu plugin 没有审批 hook,也无其他安全审批 plugin。Callback 不存在时工具内部默认允许。
实际结果:当前 gateway 的非截屏 computer-use 操作可不经人工确认执行。实现:tools/computer_use/tool.py:341。这与 terminal 的 approvals.mode 是两个独立问题。
高风险
Browser / Web / Network
本地 headless 浏览器,不连接用户现有浏览器/CDP,不录制 session。导航、点击、输入、按键和 JS evaluate 均无人工确认;restrict_evaluate=false。
可读取 Hermes 浏览器 profile 的 cookie/storage/form 值,并发起页面同源请求。虽然 allow_private_urls=false,但私网 guard 面向非本地 backend;当前 local backend 可访问 localhost/LAN。
Hermes iron-proxy 出站防火墙禁用:binary 不存在、daemon 未运行、无代理配置和 CA。Terminal、Python、browser、web 均可直接出站。Web backend 是 brave-free,提取上限 15,000 字符。
高风险
Discord Admin
延迟工具 discord 可搜索成员、获取消息和创建公开 thread;discord_admin 可列服务器/频道/角色/成员/pin,pin/unpin/删除消息,以及添加/移除成员角色。
discord.server_actions 未配置,所以所有当前实现且 API 能力允许的 action 均暴露。Mutation 没有 Hermes 人工确认,直接请求 Discord REST API;最终由 bot token 权限和角色层级限制。
当前没有 ban、kick 或删除频道 action。实现:tools/discord_tool.py:569、:581、:617、:1073。
高风险
Memory / Skills
解析默认值为 memory.write_approval=false、skills.write_approval=false、skills.agent_created_guard=false。Memory 与 Skill 修改不经过额外 staged approval;schema 中“创建/删除前确认”只是软指示。
后台 review 可在若干轮后更新 memory/skill:Memory nudge 每 10 轮、Skill 每 15 轮、至少 6 轮后可 flush/review。Skill curator 每 7 天运行,30 天 stale、90 天 archive,可改变未来技能集合。
中风险
会话与隐私
session_search 可搜索本机过去 Hermes 会话,无额外审批。privacy.redact_pii=false,动态 session context 中的平台 user/chat ID 可能原样发送给模型 provider。
security.redact_secrets=true,secret 输出检测仍启用。本报告没有复现任何 ID、消息内容、credential 或 memory/profile 内容。
中风险
破坏性 Slash
destructive_slash_confirm=false。授权调用者执行 /new、/undo,以及 CLI 下的 /clear 时,没有额外确认。这主要破坏会话上下文,不等同于删除整个系统文件。
中风险
08
外部调用者权限
工具能力很强,但并非任何网络用户都能触发。平台入口目前都有限定,具体 ID 已从报告中移除。
平台 当前准入方式
Feishu 1 个已批准 pairing 用户,0 pending;静态 allowlist 为空,allow-all=false;群消息要求 @mention,gateway 仍检查授权
Discord 1 个静态允许用户;allow-all 未开;无额外允许角色;bot 消息仅 mention 模式
WhatsApp self-chat 模式;1 个允许用户;allow-all 未开
Feishu 当前配对文件:
/Users/kaiqismac/.hermes/platforms/pairing/feishu-approved.json
/Users/kaiqismac/.hermes/platforms/pairing/feishu-pending.json
/Users/kaiqismac/.hermes/platforms/pairing/_rate_limits.json
这些文件权限均为 0600。旧目录 /Users/kaiqismac/.hermes/pairing/ 为空,不是当前配对存储位置。
09
当前未生效或仅条件生效
来源 状态
config.yaml 内 personality 文本已定义多个,但最新平台会话未选择任何一个
cwd 项目规则文件 当前 home cwd 下不存在
专门 coding-agent prompt 当前 Feishu 提示词中不存在
agent.system_prompt未配置
HERMES_EPHEMERAL_SYSTEM_PROMPT未设置
channel_overrides未配置
平台 channel_prompts 未配置
Prefill message 文件 未配置
外部 memory provider 未配置
Shell hooks / first-use allowlist 没有 hook 配置;allowlist 文件不存在
MCP servers mcp_servers: {}
Cron prompts/jobs 当前 0 个 job
管理员 /etc/hermes overlay 不存在
HERMES_MANAGED_DIR未设置
Google 模型提示 / Nous subscription / session ID 当前模型不使用 / 当前为空 / 未开启 --pass-session-id
源码目录 AGENTS.md gateway 不授予提示词权限
旧配置备份 loader 不自动读取
/Applications/Hermes.app版本 0.17.0;不是当前 0.19.0 gateway
/Applications/Hermes Studio.app独立产品,不是当前 agent
遗留 wake Python 文件 parser 未注册,当前无效
10
配置合并优先级
内置 defaults
← ~/.hermes/config.yaml
← 管理员 managed config 按叶子键覆盖
← 部分 invocation / session / runtime override
管理员层位置:
HERMES_MANAGED_DIR 指定目录
→ /etc/hermes
实现:hermes_cli/managed_scope.py:52、hermes_cli/config.py:7867。本机不存在 managed 层,所以当前实际是内置 defaults 加用户 config.yaml。
长进程缓存行为 配置缓存以路径、mtime 和文件大小为键。运行中若后来写入错误 YAML,进程会保留最后一次成功解析的配置,而不是立即回退 defaults。因此短时间内磁盘文件和进程内配置可能不同;本次未发现该情况。
11
凭据和敏感文件
以下文件含认证或凭据状态。审计确认了位置和加载关系,但没有输出其值:
/Users/kaiqismac/.hermes/.env
/Users/kaiqismac/.hermes/auth.json
/Users/kaiqismac/.hermes/auth.lock
OpenAI Codex 当前已认证。这些文件与 config.yaml、memory/profile、pairing 文件大多为 mode 0600。
13
OS 层最后限制
Gateway 身份
普通本地用户 uid 501
属于 staff,并在本机 admin 等用户组
不是 root
Hermes sudo integration 未启用
未配置 SUDO_PASSWORD
Gateway Python TCC
Documents/Desktop/Downloads:允许
Accessibility:允许
Full Disk Access:拒绝
直接 Screen Recording:拒绝
CuaDriver TCC
Accessibility:允许 Screen Recording:允许
含义
直接 Python 进程和 computer-use driver 的 TCC 能力不同。Computer-use 可以通过已授权的独立 driver 截屏和输入,但 gateway Python 本身没有 Full Disk Access 或直接 Screen Recording。
14
其他发现
Config schema 可迁移
当前 _config_version: 32,位置 /Users/kaiqismac/.hermes/config.yaml:136。Hermes 报告可迁移到 schema 33;现有配置仍正常加载,本次没有执行迁移。
Jarvis wake LaunchAgent 已失效
/Users/kaiqismac/Library/LaunchAgents/com.hermes.jarvis-wake.plist
/Users/kaiqismac/.hermes/bin/hermes-wake-jarvis.sh
它仍注册为自动启动/keepalive,但调用 hermes wake ...。Hermes 0.19.0 已不再注册 wake 子命令,因此 LaunchAgent 持续以状态 2 失败;相关语音唤醒提示和参数当前不生效。
远端隐藏提示无法从本机枚举
本机 Codex adapter 未发现第二份本地 developer/system prompt。Hermes 组合提示词进入 Responses API 的 instructions;内部 role=system 消息从 input list 移除以避免重复;转换器仅重放 user、assistant、tool 与 encrypted reasoning 项。
实现:agent/codex_responses_adapter.py:335。
审计边界 远端 https://chatgpt.com/backend-api/codex 仍可能由服务端附加不可见指示。这些指示不存储在本机,无法通过本地文件审计枚举。
15
最值得优先收紧的项目
以下只是后续建议。本次审计没有应用任何修改。
将 approvals.mode 从 off 改为 manual 或合适的 smart 模式。
为 gateway computer-use 增加真正的人工审批 callback 或 plugin policy。
限制或禁用 discord_admin 的消息删除与角色修改 action。
配置 HERMES_WRITE_SAFE_ROOT,或改用隔离 terminal/backend。
启用有效的出站网络策略。
将 privacy.redact_pii 打开。
恢复破坏性 slash command 的确认。
修复或删除失效的 Jarvis wake LaunchAgent。
审计状态 只读检查已完成。未修改 Hermes 配置、服务、提示词、技能、记忆或授权状态。
没有找到匹配内容。尝试搜索路径名、工具名或权限关键词。