# Hermes Agent v0.7.0 (v2026.4.3)
**发布日期:** 2026年4月3日
> 韧性版本发布 — 可插拔内存提供者、凭证池轮换、Camofox反检测浏览器、内联差异预览、针对竞争条件和审批路由的网关强化,以及基于168个PR和46个已解决问题进行的深度安全修复。
---
## ✨ 亮点功能
- **可插拔内存提供者接口** — 内存现已成为可扩展的插件系统。第三方内存后端(如Honcho、向量存储、自定义数据库)实现简单的提供者抽象基类(ABC),并通过插件系统注册。内置内存作为默认提供者。Honcho集成已恢复完全对等,作为具有配置文件作用域主机/对等点解析功能的参考插件。 ([#4623](https://github.com/NousResearch/hermes-agent/pull/4623), [#4616](https://github.com/NousResearch/hermes-agent/pull/4616), [#4355](https://github.com/NousResearch/hermes-agent/pull/4355))
- **同提供者凭证池** — 为同一提供者配置多个API密钥并自动轮换。线程安全的 `least_used`(最少使用)策略在密钥间分配负载,401失败会自动触发轮换到下一个凭证。可通过设置向导或 `credential_pool` 配置进行设置。 ([#4188](https://github.com/NousResearch/hermes-agent/pull/4188), [#4300](https://github.com/NousResearch/hermes-agent/pull/4300), [#4361](https://github.com/NousResearch/hermes-agent/pull/4361))
- **Camofox反检测浏览器后端** — 使用Camoufox实现隐身浏览的新本地浏览器后端。支持持久化会话与VNC URL发现以进行视觉调试,可配置的SSRF绕过用于本地后端,通过 `hermes tools` 自动安装。 ([#4008](https://github.com/NousResearch/hermes-agent/pull/4008), [#4419](https://github.com/NousResearch/hermes-agent/pull/4419), [#4292](https://github.com/NousResearch/hermes-agent/pull/4292))
- **内联差异预览** — 文件写入和补丁操作现在在工具活动源中显示内联差异,在代理继续操作前为您提供可视化的更改确认。 ([#4411](https://github.com/NousResearch/hermes-agent/pull/4411), [#4423](https://github.com/NousResearch/hermes-agent/pull/4423))
- **API服务器会话连续性 & 工具流式传输** — API服务器(Open WebUI集成)现在实时流式传输工具进度事件,并支持 `X-Hermes-Session-Id` 标头以实现跨请求的持久化会话。会话会持久化到共享的SessionDB。 ([#4092](https://github.com/NousResearch/hermes-agent/pull/4092), [#4478](https://github.com/NousResearch/hermes-agent/pull/4478), [#4802](https://github.com/NousResearch/hermes-agent/pull/4802))
- **ACP:客户端提供的MCP服务器** — 编辑器集成(VS Code、Zed、JetBrains)现在可以注册它们自己的MCP服务器,Hermes会将其作为额外的代理工具接收。您编辑器的MCP生态系统直接流入代理。 ([#4705](https://github.com/NousResearch/hermes-agent/pull/4705))
- **网关强化** — 针对竞争条件、照片媒体传输、洪水控制、卡住会话、审批路由和压缩死亡螺旋进行了一次重大稳定性改造。网关在生产环境中的可靠性大幅提升。 ([#4727](https://github.com/NousResearch/hermes-agent/pull/4727), [#4750](https://github.com/NousResearch/hermes-agent/pull/4750), [#4798](https://github.com/NousResearch/hermes-agent/pull/4798), [#4557](https://github.com/NousResearch/hermes-agent/pull/4557))
- **安全:阻止机密外泄** — 浏览器URL和LLM响应现在会扫描机密模式,阻止通过URL编码、base64或提示注入进行的外泄尝试。凭证目录保护已扩展到 `.docker`、`.azure`、`.config/gh`。`execute_code` 沙盒输出会被编辑。 ([#4483](https://github.com/NousResearch/hermes-agent/pull/4483), [#4360](https://github.com/NousResearch/hermes-agent/pull/4360), [#4305](https://github.com/NousResearch/hermes-agent/pull/4305), [#4327](https://github.com/NousResearch/hermes-agent/pull/4327))
---
## 🏗️ 核心代理与架构
### 提供者与模型支持
- **同提供者凭证池** — 配置多个API密钥,支持自动 `least_used` 轮换和401故障转移 ([#4188](https://github.com/NousResearch/hermes-agent/pull/4188), [#4300](https://github.com/NousResearch/hermes-agent/pull/4300))
- **凭证池在智能路由中保持** — 池状态在回退提供者切换后得以保留,并延迟对429的急切回退 ([#4361](https://github.com/NousResearch/hermes-agent/pull/4361))
- **每轮次主运行时恢复** — 在使用回退提供者后,代理会在下一轮次通过传输恢复自动恢复主提供者 ([#4624](https://github.com/NousResearch/hermes-agent/pull/4624))
- **GPT-5和Codex模型的 `developer` 角色** — 使用OpenAI为较新模型推荐的系统消息角色 ([#4498](https://github.com/NousResearch/hermes-agent/pull/4498))
- **Google模型操作指南** — Gemini和Gemma模型获得提供者特定的提示指南 ([#4641](https://github.com/NousResearch/hermes-agent/pull/4641))
- **Anthropic长上下文层级429处理** — 在达到层级限制时自动将上下文减少到200k ([#4747](https://github.com/NousResearch/hermes-agent/pull/4747))
- **第三方Anthropic端点的基于URL的认证** + CI测试修复 ([#4148](https://github.com/NousResearch/hermes-agent/pull/4148))
- **MiniMax Anthropic端点的Bearer认证** ([#4028](https://github.com/NousResearch/hermes-agent/pull/4028))
- **Fireworks上下文长度检测** ([#4158](https://github.com/NousResearch/hermes-agent/pull/4158))
- **阿里巴巴提供者的标准DashScope国际端点** ([#4133](https://github.com/NousResearch/hermes-agent/pull/4133), 关闭 [#3912](https://github.com/NousResearch/hermes-agent/issues/3912))
- **自定义提供者的context_length** 在卫生压缩中被遵守 ([#4085](https://github.com/NousResearch/hermes-agent/pull/4085))
- **非sk-ant密钥** 被视为常规API密钥,而非OAuth令牌 ([#4093](https://github.com/NousResearch/hermes-agent/pull/4093))
- **Claude-sonnet-4.6** 添加到OpenRouter和Nous模型列表 ([#4157](https://github.com/NousResearch/hermes-agent/pull/4157))
- **Qwen 3.6 Plus Preview** 添加到模型列表 ([#4376](https://github.com/NousResearch/hermes-agent/pull/4376))
- **MiniMax M2.7** 添加到hermes模型选择器和OpenCode ([#4208](https://github.com/NousResearch/hermes-agent/pull/4208))
- **从服务器探测自动检测模型** 在自定义端点设置中 ([#4218](https://github.com/NousResearch/hermes-agent/pull/4218))
- **config.yaml作为端点URL的单一事实来源** — 不再有环境变量与config.yaml冲突 ([#4165](https://github.com/NousResearch/hermes-agent/pull/4165))
- **设置向导不再覆盖** 自定义端点配置 ([#4180](https://github.com/NousResearch/hermes-agent/pull/4180), 关闭 [#4172](https://github.com/NousResearch/hermes-agent/issues/4172))
- **统一设置向导提供者选择** 与 `hermes model` — 两个流程使用单一代码路径 ([#4200](https://github.com/NousResearch/hermes-agent/pull/4200))
- **根级别提供者配置** 不再覆盖 `model.provider` ([#4329](https://github.com/NousResearch/hermes-agent/pull/4329))
- **对速率限制配对拒绝消息** 以防止垃圾信息 ([#4081](https://github.com/NousResearch/hermes-agent/pull/4081))
### 代理循环与对话
- **在工具使用轮次间保留Anthropic思考块签名** ([#4626](https://github.com/NousResearch/hermes-agent/pull/4626))
- **在重试前分类仅思考的空响应** — 防止产生思考块而无内容的模型出现无限重试循环 ([#4645](https://github.com/NousResearch/hermes-agent/pull/4645))
- **防止API断开导致的压缩死亡螺旋** — 停止压缩触发、失败、再次压缩的循环 ([#4750](https://github.com/NousResearch/hermes-agent/pull/4750), 关闭 [#2153](https://github.com/NousResearch/hermes-agent/issues/2153))
- **将压缩后的上下文持久化** 到运行中压缩后的网关会话 ([#4095](https://github.com/NousResearch/hermes-agent/pull/4095))
- **上下文超限错误消息** 现在包含可操作的指导 ([#4155](https://github.com/NousResearch/hermes-agent/pull/4155), 关闭 [#4061](https://github.com/NousResearch/hermes-agent/issues/4061))
- **从用户可见响应中剥离孤立的思考/推理标签** ([#4311](https://github.com/NousResearch/hermes-agent/pull/4311), 关闭 [#4285](https://github.com/NousResearch/hermes-agent/issues/4285))
- **强化Codex响应预检** 和流式错误处理 ([#4313](https://github.com/NousResearch/hermes-agent/pull/4313))
- **确定性的call_id回退** 而非随机UUID,以保持提示缓存一致性 ([#3991](https://github.com/NousResearch/hermes-agent/pull/3991))
- **压缩后防止上下文压力警告垃圾信息** ([#4012](https://github.com/NousResearch/hermes-agent/pull/4012))
- **在轨迹压缩器中惰性创建AsyncOpenAI** 以避免关闭的事件循环错误 ([#4013](https://github.com/NousResearch/hermes-agent/pull/4013))
### 内存与会话
- **可插拔内存提供者接口** — 基于ABC的插件系统,用于自定义内存后端,支持配置文件隔离 ([#4623](https://github.com/NousResearch/hermes-agent/pull/4623))
- **Honcho完全集成对等性** 作为参考内存提供者插件恢复 ([#4355](https://github.com/NousResearch/hermes-agent/pull/4355)) — @erosika
- **Honcho配置文件作用域** 主机和对等点解析 ([#4616](https://github.com/NousResearch/hermes-agent/pull/4616))
- **内存刷新状态持久化** 以防止在网关重启时进行冗余的重新刷新 ([#4481](https://github.com/NousResearch/hermes-agent/pull/4481))
- **内存提供者工具** 通过顺序执行路径路由 ([#4803](https://github.com/NousResearch/hermes-agent/pull/4803))
- **Honcho配置** 写入实例本地路径以实现配置文件隔离 ([#4037](https://github.com/NousResearch/hermes-agent/pull/4037))
- **API服务器会话** 持久化到共享SessionDB ([#4802](https://github.com/NousResearch/hermes-agent/pull/4802))
- **非CLI会话的令牌使用情况** 被持久化 ([#4627](https://github.com/NousResearch/hermes-agent/pull/4627))
- **在FTS5查询中用引号括起点状术语** — 修复包含点的术语的会话搜索 ([#4549](https://github.com/NousResearch/hermes-agent/pull/4549))
---
## 📱 消息平台(网关)
### 网关核心
- **竞争条件修复** — 照片媒体丢失、洪水控制、卡住会话和STT配置问题在一次强化改造中得到解决 ([#4727](https://github.com/NousResearch/hermes-agent/pull/4727))
- **通过运行中代理守卫的审批路由** — 当代理被阻止等待审批时,`/approve` 和 `/deny` 现在能正确路由,而不是被作为中断吞没 ([#4798](https://github.com/NousResearch/hermes-agent/pull/4798), [#4557](https://github.com/NousResearch/hermes-agent/pull/4557), 关闭 [#4542](https://github.com/NousResearch/hermes-agent/issues/4542))
- **在 /approve 后恢复代理** — 执行被阻止的命令时不再丢失工具结果 ([#4418](https://github.com/NousResearch/hermes-agent/pull/4418))
- **DM线程会话** 使用父转录本种子以保留上下文 ([#4559](https://github.com/NousResearch/hermes-agent/pull/4559))
- **感知技能的斜杠命令** — 网关动态将已安装的技能注册为斜杠命令,支持分页的 `/commands` 列表和Telegram 100个命令上限 ([#3934](https://github.com/NousResearch/hermes-agent/pull/3934), [#4005](https://github.com/NousResearch/hermes-agent/pull/4005), [#4006](https://github.com/NousResearch/hermes-agent/pull/4006), [#4010](https://github.com/NousResearch/hermes-agent/pull/4010), [#4023](https://github.com/NousResearch/hermes-agent/pull/4023))
- **Telegram菜单和网关调度中尊重每平台禁用的技能** ([#4799](https://github.com/NousResearch/hermes-agent/pull/4799))
- **移除用户可见的压缩警告** — 更干净的消息流 ([#4139](https://github.com/NousResearch/hermes-agent/pull/4139))
- **`-v/-q` 标志连接到网关服务的stderr日志记录** ([#4474](https://github.com/NousResearch/hermes-agent/pull/4474))
- **HERMES_HOME 重新映射** 到系统服务单元中的目标用户 ([#4456](https://github.com/NousResearch/hermes-agent/pull/4456))
- **对无效的类似布尔配置值遵守默认值** ([#4029](https://github.com/NousResearch/hermes-agent/pull/4029))
- **对 /update 命令使用 setsid 而非 systemd-run** 以避免systemd权限问题 ([#4104](https://github.com/NousResearch/hermes-agent/pull/4104), 关闭 [#4017](https://github.com/NousResearch/hermes-agent/issues/4017))
- **在首条消息上显示 'Initializing agent...'** 以改善用户体验 ([#4086](https://github.com/NousResearch/hermes-agent/pull/4086))
- **允许在LXC/容器环境中以root身份运行网关服务** ([#4732](https://github.com/NousResearch/hermes-agent/pull/4732))
### Telegram
- **命令名称限制为32个字符** 并避免冲突 ([#4211](https://github.com/NousResearch/hermes-agent/pull/4211))
- **菜单中强制执行优先级顺序** — 核心 > 插件 > 技能 ([#4023](https://github.com/NousResearch/hermes-agent/pull/4023))
- **上限为50个命令** — API拒绝超过约60个的命令 ([#4006](https://github.com/NousResearch/hermes-agent/pull/4006))
- **跳过空/空白文本** 以防止400错误 ([#4388](https://github.com/NousResearch/hermes-agent/pull/4388))
- **添加了E2E网关测试** ([#4497](https://github.com/NousResearch/hermes-agent/pull/4497)) — @pefontana
### Discord
- **基于按钮的审批UI** — 注册 `/approve` 和 `/deny` 斜杠命令,带有交互式按钮提示 ([#4800](https://github.com/NousResearch/hermes-agent/pull/4800))
- **可配置的反应** — `discord.reactions` 配置选项用于禁用消息处理反应 ([#4199](https://github.com/NousResearch/hermes-agent/pull/4199))
- **对未授权用户跳过反应和自动线程** ([#4387](https://github.com/NousResearch/hermes-agent/pull/4387))
### Slack
- **在线程中回复** — `slack.reply_in_thread` 配置选项用于线程化响应 ([#4643](https://github.com/NousResearch/hermes-agent/pull/4643), 关闭 [#2662](https://github.com/NousResearch/hermes-agent/issues/2662))
### WhatsApp
- **在群聊中强制执行 require_mention** ([#4730](https://github.com/NousResearch/hermes-agent/pull/4730))
### Webhook
- **平台支持修复** — 跳过主频道提示,为webhook适配器禁用工具进度 ([#4660](https://github.com/NousResearch/hermes-agent/pull/4660))
### Matrix
- **E2EE解密强化** — 请求缺失密钥,自动信任设备,重试缓冲事件 ([#4083](https://github.com/NousResearch/hermes-agent/pull/4083))
---
## 🖥️ CLI与用户体验
### 新斜杠命令
- **`/yolo`** — 为会话切换危险命令审批的开关 ([#3990](https://github.com/NousResearch/hermes-agent/pull/3990))
- **`/btw`** — 不影响主对话上下文的短暂侧边问题 ([#4161](https://github.com/NousResearch/hermes-agent/pull/4161))
- **`/profile`** — 显示活动配置文件信息而无需离开聊天会话 ([#4027](https://github.com/NousResearch/hermes-agent/pull/4027))
### 交互式CLI
- **写入和补丁操作的内联差异预览** 在工具活动源中 ([#4411](https://github.com/NousResearch/hermes-agent/pull/4411), [#4423](https://github.com/NousResearch/hermes-agent/pull/4423))
- **TUI启动时固定到底部** — 响应和输入区域之间不再有大的空白 ([#4412](https://github.com/NousResearch/hermes-agent/pull/4412), [#4359](https://github.com/NousResearch/hermes-agent/pull/4359), 关闭 [#4398](https://github.com/NousResearch/hermes-agent/issues/4398), [#4421](https://github.com/NousResearch/hermes-agent/issues/4421))
- **`/history` 和 `/resume`** 现在直接显示最近会话,无需搜索 ([#4728](https://github.com/NousResearch/hermes-agent/pull/4728))
- **`/insights` 概览中显示缓存令牌** 使总和正确 ([#4428](https://github.com/NousResearch/hermes-agent/pull/4428))
- **`--max-turns` CLI标志** 用于 `hermes chat` 以限制代理迭代 ([#4314](https://github.com/NousResearch/hermes-agent/pull/4314))
- **检测拖放的文件路径** 而非将其视为斜杠命令 ([#4533](https://github.com/NousResearch/hermes-agent/pull/4533)) — @rolme
- **在 `config set` 中允许空字符串和假值** ([#4310](https://github.com/NousResearch/hermes-agent/pull/4310), 关闭 [#4277](https://github.com/NousResearch/hermes-agent/issues/4277))
- **WSL中的语音模式** 当配置了PulseAudio桥接时 ([#4317](https://github.com/NousResearch/hermes-agent/pull/4317))
- **遵守 `NO_COLOR` 环境变量** 和 `TERM=dumb` 以提升可访问性 ([#4079](https://github.com/NousResearch/hermes-agent/pull/4079), 关闭 [#4066](https://github.com/NousResearch/hermes-agent/issues/4066)) — @SHL0MS
- **macOS/zsh用户的正确shell重载说明** ([#4025](https://github.com/NousResearch/hermes-agent/pull/4025))
- **静默模式查询成功时返回零退出码** ([#4613](https://github.com/NousResearch/hermes-agent/pull/4613), 关闭 [#4601](https://github.com/NousResearch/hermes-agent/issues/4601)) — @devorun
- **on_session_end钩子** 在中断退出时触发 ([#4159](https://github.com/NousResearch/hermes-agent/pull/4159))
- **配置文件列表显示** 正确读取 `model.default` 键 ([#4160](https://github.com/NousResearch/hermes-agent/pull/4160))
- **浏览器和TTS** 在重新配置菜单中显示 ([#4041](https://github.com/NousResearch/hermes-agent/pull/4041))
- **Web后端优先级** 检测简化 ([#4036](https://github.com/NousResearch/hermes-agent/pull/4036))
### 设置与配置
- **在设置和静默未配置提供者警告期间保留 allowed_users** ([#4551](https://github.com/NousResearch/hermes-agent/pull/4551)) — @kshitijk4poor
- **将API密钥保存到模型配置** 用于自定义端点 ([#4202](https://github.com/NousResearch/hermes-agent/pull/4202), 关闭 [#4182](https://github.com/NousResearch/hermes-agent/issues/4182))
- **Claude Code凭证** 在向导触发后需要明确的Hermes配置 ([#4210](https://github.com/NousResearch/hermes-agent/pull/4210))
- **在 save_config_value 中进行原子写入** 以防止中断时配置丢失 ([#4298](https://github.com/NousResearch/hermes-agent/pull/4298), [#4320](https://github.com/NousResearch/hermes-agent/pull/4320))
- **在令牌刷新时将scopes字段写入** Claude Code凭证 ([#4126](https://github.com/NousResearch/hermes-agent/pull/4126))
### 更新系统
- **在 `hermes update` 中进行分支检测和上游同步** ([#4744](https://github.com/NousResearch/hermes-agent/pull/4744))
- **更新时保留工作的可选扩展** 即使一个扩展失败 ([#4550](https://github.com/NousResearch/hermes-agent/pull/4550))
- **处理 hermes update 期间的冲突git索引** ([#4735](https://github.com/NousResearch/hermes-agent/pull/4735))
- **避免macOS上的launchd重启竞争** ([#4736](https://github.com/NousResearch/hermes-agent/pull/4736))
- **为doctor和status命令添加缺失的 subprocess.run() 超时** ([#4009](https://github.com/NousResearch/hermes-agent/pull/4009))
---
## 🔧 工具系统
### 浏览器
- **Camofox反检测浏览器后端** — 本地隐身浏览,通过 `hermes tools` 自动安装 ([#4008](https://github.com/NousResearch/hermes-agent/pull/4008))
- **持久的Camofox会话** 具有VNC URL发现以进行视觉调试 ([#4419](https://github.com/NousResearch/hermes-agent/pull/4419))
- **跳过本地后端的SSRF检查** (Camofox, 无头Chromium) ([#4292](https://github.com/NousResearch/hermes-agent/pull/4292))
- **通过 `browser.allow_private_urls` 配置SSRF检查** ([#4198](https://github.com/NousResearch/hermes-agent/pull/4198)) — @nils010485
- **CAMOFOX_PORT=9377** 添加到Docker命令 ([#4340](https://github.com/NousResearch/hermes-agent/pull/4340))
### 文件操作
- **写入和修补操作的内联差异预览** ([#4411](https://github.com/NousResearch/hermes-agent/pull/4411), [#4423](https://github.com/NousResearch/hermes-agent/pull/4423))
- **写入和修补时的陈旧文件检测** — 警告文件自上次读取以来是否被外部修改 ([#4345](https://github.com/NousResearch/hermes-agent/pull/4345))
- **写入后刷新陈旧时间戳** ([#4390](https://github.com/NousResearch/hermes-agent/pull/4390))
- **在 read_file 上进行大小守卫、去重和设备阻止** ([#4315](https://github.com/NousResearch/hermes-agent/pull/4315))
### MCP
- **稳定性修复包** — 重新加载超时、关闭清理、事件循环处理器、OAuth非阻塞 ([#4757](https://github.com/NousResearch/hermes-agent/pull/4757), 关闭 [#4462](https://github.com/NousResearch/hermes-agent/issues/4462), [#2537](https://github.com/NousResearch/hermes-agent/issues/2537))
### ACP(编辑器集成)
- **客户端提供的MCP服务器** 注册为代理工具 — 编辑器将它们的MCP服务器传递给Hermes ([#4705](https://github.com/NousResearch/hermes-agent/pull/4705))
### 技能系统
- **代理写入的大小限制** 和 **技能修补的模糊匹配** — 防止过大的技能写入并提高编辑可靠性 ([#4414](https://github.com/NousResearch/hermes-agent/pull/4414))
- **安装前验证中心捆绑包路径** — 阻止技能捆绑包中的路径遍历 ([#3986](https://github.com/NousResearch/hermes-agent/pull/3986))
- **将统一的 hermes-agent 和 hermes-agent-setup** 合并为单个技能 ([#4332](https://github.com/NousResearch/hermes-agent/pull/4332))
- **在 extract_skill_conditions 中进行技能元数据类型检查** ([#4479](https://github.com/NousResearch/hermes-agent/pull/4479))
### 新/更新的技能
- **research-paper-writing** — 完整的端到端研究流程(替换了ml-paper-writing) ([#4654](https://github.com/NousResearch/hermes-agent/pull/4654)) — @SHL0MS
- **ascii-video** — 文本可读性技术和外部布局预言机 ([#4054](https://github.com/NousResearch/hermes-agent/pull/4054)) — @SHL0MS
- **youtube-transcript** 更新以支持 youtube-transcript-api v1.x ([#4455](https://github.com/NousResearch/hermes-agent/pull/4455)) — @el-analista
- **文档站点上添加了技能浏览和搜索页面** ([#4500](https://github.com/NousResearch/hermes-agent/pull/4500)) — @IAvecilla
---
## 🔒 安全与可靠性
### 安全强化
- **通过浏览器URL和LLM响应阻止机密外泄** — 扫描URL编码、base64和提示注入向量中的机密模式 ([#4483](https://github.com/NousResearch/hermes-agent/pull/4483))
- **从 execute_code 沙盒输出中编辑机密** ([#4360](https://github.com/NousResearch/hermes-agent/pull/4360))
- **保护 `.docker`、`.azure`、`.config/gh` 凭证目录** 免受文件工具和终端的读/写访问 ([#4305](https://github.com/NousResearch/hermes-agent/pull/4305), [#4327](https://github.com/NousResearch/hermes-agent/pull/4327)) — @memosr
- **GitHub OAuth令牌模式** 添加到编辑 + 快照编辑标志 ([#4295](https://github.com/NousResearch/hermes-agent/pull/4295))
- **在Telegram DoH回退中拒绝私有和环回IP** ([#4129](https://github.com/NousResearch/hermes-agent/pull/4129))
- **在凭证文件注册中拒绝路径遍历** ([#4316](https://github.com/NousResearch/hermes-agent/pull/4316))
- **在配置文件导入时验证tar归档成员路径** — 阻止zip-slip攻击 ([#4318](https://github.com/NousResearch/hermes-agent/pull/4318))
- **从配置文件导出中排除 auth.json 和 .env** ([#4475](https://github.com/NousResearch/hermes-agent/pull/4475))
### 可靠性
- **防止API断开导致的压缩死亡螺旋** ([#4750](https://github.com/NousResearch/hermes-agent/pull/4750), 关闭 [#2153](https://github.com/NousResearch/hermes-agent/issues/2153))
- **在OpenAI SDK中将 `is_closed` 作为方法处理** — 防止错误的客户端关闭检测 ([#4416](https://github.com/NousResearch/hermes-agent/pull/4416), 关闭 [#4377](https://github.com/NousResearch/hermes-agent/issues/4377))
- **从 [all] 扩展中排除 matrix** — python-olm上游损坏,防止安装失败 ([#4615](https://github.com/NousResearch/hermes-agent/pull/4615), 关闭 [#4178](https://github.com/NousResearch/hermes-agent/issues/4178))
- **OpenCode模型路由** 已修复 ([#4508](https://github.com/NousResearch/hermes-agent/pull/4508))
- **Docker容器镜像** 已优化 ([#4034](https://github.com/NousResearch/hermes-agent/pull/4034)) — @bcross
### Windows与跨平台
- **WSL中的语音模式** 配合PulseAudio桥接 ([#4317](https://github.com/NousResearch/hermes-agent/pull/4317))
- **Homebrew打包** 准备 ([#4099](https://github.com/NousResearch/hermes-agent/pull/4099))
- **CI分支条件** 以防止fork上的工作流失败 ([#4107](https://github.com/NousResearch/hermes-agent/pull/4107))
---
## 🐛 值得注意的错误修复
- **网关审批阻塞代理线程** — 审批现在像CLI一样阻塞代理线程,防止工具结果丢失 ([#4557](https://github.com/NousResearch/hermes-agent/pull/4557), 关闭 [#4542](https://github.com/NousResearch/hermes-agent/issues/4542))
- **API断开导致的压缩死亡螺旋** — 检测并停止而非循环 ([#4750](https://github.com/NousResearch/hermes-agent/pull/4750), 关闭 [#2153](https://github.com/NousResearch/hermes-agent/issues/2153))
- **工具使用轮次间丢失Anthropic思考块** ([#4626](https://github.com/NousResearch/hermes-agent/pull/4626))
- **使用 `-p` 标志时忽略配置文件模型配置** — model.model现在正确提升为model.default ([#4160](https://github.com/NousResearch/hermes-agent/pull/4160), 关闭 [#4486](https://github.com/NousResearch/hermes-agent/issues/4486))
- **CLI响应和输入区域之间的空白** ([#4412](https://github.com/NousResearch/hermes-agent/pull/4412), [#4359](https://github.com/NousResearch/hermes-agent/pull/4359), 关闭 [#4398](https://github.com/NousResearch/hermes-agent/issues/4398))
- **拖放的文件路径** 被视为斜杠命令而非文件引用 ([#4533](https://github.com/NousResearch/hermes-agent/pull/4533)) — @rolme
- **孤立的 `` 标签** 泄漏到用户可见响应中 ([#4311](https://github.com/NousResearch/hermes-agent/pull/4311), 关闭 [#4285](https://github.com/NousResearch/hermes-agent/issues/4285))
- **OpenAI SDK `is_closed`** 是方法而非属性 — 错误的客户端关闭检测 ([#4416](https://github.com/NousResearch/hermes-agent/pull/4416), 关闭 [#4377](https://github.com/NousResearch/hermes-agent/issues/4377))
- **MCP OAuth服务器** 可能阻塞Hermes启动而非优雅降级 ([#4757](https://github.com/NousResearch/hermes-agent/pull/4757), 关闭 [#4462](https://github.com/NousResearch/hermes-agent/issues/4462))
- **MCP事件循环在关闭时** 带有HTTP服务器 ([#4757](https://github.com/NousResearch/hermes-agent/pull/4757), 关闭 [#2537](https://github.com/NousResearch/hermes-agent/issues/2537))
- **阿里巴巴提供者** 硬编码到错误的端点 ([#4133](https://github.com/NousResearch/hermes-agent/pull/4133), 关闭 [#3912](https://github.com/NousResearch/hermes-agent/issues/3912))
- **Slack reply_in_thread** 缺少配置选项 ([#4643](https://github.com/NousResearch/hermes-agent/pull/4643), 关闭 [#2662](https://github.com/NousResearch/hermes-agent/issues/2662))
- **静默模式退出码** — 成功的 `-q` 查询不再非零退出 ([#4613](https://github.com/NousResearch/hermes-agent/pull/4613), 关闭 [#4601](https://github.com/NousResearch/hermes-agent/issues/4601))
- **移动端侧边栏** 由于文档站点的backdrop-filter问题仅显示关闭按钮 ([#4207](https://github.com/NousResearch/hermes-agent/pull/4207)) — @xsmyile
- **配置恢复被陈旧分支压缩合并回滚** — `_config_version` 已修复 ([#4440](https://github.com/NousResearch/hermes-agent/pull/4440))
---
## 🧪 测试
- **Telegram网关E2E测试** — Telegram适配器的完整集成测试套件 ([#4497](https://github.com/NousResearch/hermes-agent/pull/4497)) — @pefontana
- **修复11个真实测试失败** 加上 sys.modules 级联毒化器已解决 ([#4570](https://github.com/NousResearch/hermes-agent/pull/4570))
- **解决7个CI失败** 涉及钩子、插件和技能测试 ([#3936](https://github.com/NousResearch/hermes-agent/pull/3936))
- **Codex 401刷新测试** 更新以兼容CI ([#4166](https://github.com/NousResearch/hermes-agent/pull/4166))
- **修复陈旧的OPENAI_BASE_URL测试** ([#4217](https://github.com/NousResearch/hermes-agent/pull/4217))
---
## 📚 文档
- **全面文档审计** — 在21个文件中修复了9个HIGH和20+个MEDIUM差距 ([#4087](https://github.com/NousResearch/hermes-agent/pull/4087))
- **站点导航重组** — 功能和平台提升为顶级 ([#4116](https://github.com/NousResearch/hermes-agent/pull/4116))
- **工具进度流式传输** 为API服务器和Open WebUI记录 ([#4138](https://github.com/NousResearch/hermes-agent/pull/4138))
- **Telegram webhook模式** 文档 ([#4089](https://github.com/NousResearch/hermes-agent/pull/4089))
- **本地LLM提供者指南** — 包含上下文长度警告的全面设置指南 ([#4294](https://github.com/NousResearch/hermes-agent/pull/4294))
- **WhatsApp允许列表行为** 通过 `WHATSAPP_ALLOW_ALL_USERS` 文档阐明 ([#4293](https://github.com/NousResearch/hermes-agent/pull/4293))
- **Slack配置选项** — Slack文档中的新配置部分 ([#4644](https://github.com/NousResearch/hermes-agent/pull/4644))
- **终端后端部分** 扩展 + 文档构建修复 ([#4016](https://github.com/NousResearch/hermes-agent/pull/4016))
- **添加提供者指南** 更新以支持统一设置流程 ([#4201](https://github.com/NousResearch/hermes-agent/pull/4201))
- **ACP Zed配置** 已修复 ([#4743](https://github.com/NousResearch/hermes-agent/pull/4743))
- **社区FAQ** 常见工作流程和故障排除条目 ([#4797](https://github.com/NousResearch/hermes-agent/pull/4797))
- **文档站点上的技能浏览和搜索页面** ([#4500](https://github.com/NousResearch/hermes-agent/pull/4500)) — @IAvecilla
---
## 👥 贡献者
### 核心
- **@teknium1** — 135次提交,覆盖所有子系统
### 顶级社区贡献者
- **@kshitijk4poor** — 13次提交:设置期间保留allowed_users ([#4551](https://github.com/NousResearch/hermes-agent/pull/4551)) 和各种修复
- **@erosika** — 12次提交:Honcho完全集成对等性作为内存提供者插件恢复 ([#4355](https://github.com/NousResearch/hermes-agent/pull/4355))
- **@pefontana** — 9次提交:Telegram网关E2E测试套件 ([#4497](https://github.com/NousResearch/hermes-agent/pull/4497))
- **@bcross** — 5次提交:Docker容器镜像优化 ([#4034](https://github.com/NousResearch/hermes-agent/pull/4034))
- **@SHL0MS** — 4次提交:NO_COLOR/TERM=dumb支持 ([#4079](https://github.com/NousResearch/hermes-agent/pull/4079)), ascii-video技能更新 ([#4054](https://github.com/NousResearch/hermes-agent/pull/4054)), research-paper-writing技能 ([#4654](https://github.com/NousResearch/hermes-agent/pull/4654))
### 所有贡献者
@0xbyt4, @arasovic, @Bartok9, @bcross, @binhnt92, @camden-lowrance, @curtitoo, @Dakota, @Dave Tist, @Dean Kerr, @devorun, @dieutx, @Dilee, @el-analista, @erosika, @Gutslabs, @IAvecilla, @Jack, @Johannnnn506, @kshitijk4poor, @Laura Batalha, @Leegenux, @Lume, @MacroAnarchy, @maymuneth, @memosr, @NexVeridian, @Nick, @nils010485, @pefontana, @Penov, @rolme, @SHL0MS, @txchen, @xsmyile
### 来自社区解决的问题
@acsezen ([#2537](https://github.com/NousResearch/hermes-agent/issues/2537)), @arasovic ([#4285](https://github.com/NousResearch/hermes-agent/issues/4285)), @camden-lowrance ([#4462](https://github.com/NousResearch/hermes-agent/issues/4462)), @devorun ([#4601](https://github.com/NousResearch/hermes-agent/issues/4601)), @eloklam ([#4486](https://github.com/NousResearch/hermes-agent/issues/4486)), @HenkDz ([#3719](https://github.com/NousResearch/hermes-agent/issues/3719)), @hypotyposis ([#2153](https://github.com/NousResearch/hermes-agent/issues/2153)), @kazamak ([#4178](https://github.com/NousResearch/hermes-agent/issues/4178)), @lstep ([#4366](https://github.com/NousResearch/hermes-agent/issues/4366)), @Mark-Lok ([#4542](https://github.com/NousResearch/hermes-agent/issues/4542)), @NoJster ([#4421](https://github.com/NousResearch/hermes-agent/issues/4421)), @patp ([#2662](https://github.com/NousResearch/hermes-agent/issues/2662)), @pr0n ([#4601](https://github.com/NousResearch/hermes-agent/issues/4601)), @saulmc ([#4377](https://github.com/NousResearch/hermes-agent/issues/4377)), @SHL0MS ([#4060](https://github.com/NousResearch/hermes-agent/issues/4060), [#4061](https://github.com/NousResearch/hermes-agent/issues/4061), [#4066](https://github.com/NousResearch/hermes-agent/issues/4066), [#4172](https://github.com/NousResearch/hermes-agent/issues/4172), [#4277](https://github.com/NousResearch/hermes-agent/issues/4277)), @Z-Mackintosh ([#4398](https://github.com/NousResearch/hermes-agent/issues/4398))
---
**完整更新日志**: [v2026.3.30...v2026.4.3](https://github.com/NousResearch/hermes-agent/compare/v2026.3.30...v2026.4.3)
# Hermes Agent v0.7.0 (v2026.4.3)
**Release Date:** April 3, 2026
> The resilience release — pluggable memory providers, credential pool rotation, Camofox anti-detection browser, inline diff previews, gateway hardening across race conditions and approval routing, and deep security fixes across 168 PRs and 46 resolved issues.
---
## ✨ Highlights
- **Pluggable Memory Provider Interface** — Memory is now an extensible plugin system. Third-party memory backends (Honcho, vector stores, custom DBs) implement a simple provider ABC and register via the plugin system. Built-in memory is the default provider. Honcho integration restored to full parity as the reference plugin with profile-scoped host/peer resolution. ([#4623](https://github.com/NousResearch/hermes-agent/pull/4623), [#4616](https://github.com/NousResearch/hermes-agent/pull/4616), [#4355](https://github.com/NousResearch/hermes-agent/pull/4355))
- **Same-Provider Credential Pools** — Configure multiple API keys for the same provider with automatic rotation. Thread-safe `least_used` strategy distributes load across keys, and 401 failures trigger automatic rotation to the next credential. Set up via the setup wizard or `credential_pool` config. ([#4188](https://github.com/NousResearch/hermes-agent/pull/4188), [#4300](https://github.com/NousResearch/hermes-agent/pull/4300), [#4361](https://github.com/NousResearch/hermes-agent/pull/4361))
- **Camofox Anti-Detection Browser Backend** — New local browser backend using Camoufox for stealth browsing. Persistent sessions with VNC URL discovery for visual debugging, configurable SSRF bypass for local backends, auto-install via `hermes tools`. ([#4008](https://github.com/NousResearch/hermes-agent/pull/4008), [#4419](https://github.com/NousResearch/hermes-agent/pull/4419), [#4292](https://github.com/NousResearch/hermes-agent/pull/4292))
- **Inline Diff Previews** — File write and patch operations now show inline diffs in the tool activity feed, giving you visual confirmation of what changed before the agent moves on. ([#4411](https://github.com/NousResearch/hermes-agent/pull/4411), [#4423](https://github.com/NousResearch/hermes-agent/pull/4423))
- **API Server Session Continuity & Tool Streaming** — The API server (Open WebUI integration) now streams tool progress events in real-time and supports `X-Hermes-Session-Id` headers for persistent sessions across requests. Sessions persist to the shared SessionDB. ([#4092](https://github.com/NousResearch/hermes-agent/pull/4092), [#4478](https://github.com/NousResearch/hermes-agent/pull/4478), [#4802](https://github.com/NousResearch/hermes-agent/pull/4802))
- **ACP: Client-Provided MCP Servers** — Editor integrations (VS Code, Zed, JetBrains) can now register their own MCP servers, which Hermes picks up as additional agent tools. Your editor's MCP ecosystem flows directly into the agent. ([#4705](https://github.com/NousResearch/hermes-agent/pull/4705))
- **Gateway Hardening** — Major stability pass across race conditions, photo media delivery, flood control, stuck sessions, approval routing, and compression death spirals. The gateway is substantially more reliable in production. ([#4727](https://github.com/NousResearch/hermes-agent/pull/4727), [#4750](https://github.com/NousResearch/hermes-agent/pull/4750), [#4798](https://github.com/NousResearch/hermes-agent/pull/4798), [#4557](https://github.com/NousResearch/hermes-agent/pull/4557))
- **Security: Secret Exfiltration Blocking** — Browser URLs and LLM responses are now scanned for secret patterns, blocking exfiltration attempts via URL encoding, base64, or prompt injection. Credential directory protections expanded to `.docker`, `.azure`, `.config/gh`. Execute_code sandbox output is redacted. ([#4483](https://github.com/NousResearch/hermes-agent/pull/4483), [#4360](https://github.com/NousResearch/hermes-agent/pull/4360), [#4305](https://github.com/NousResearch/hermes-agent/pull/4305), [#4327](https://github.com/NousResearch/hermes-agent/pull/4327))
---
## 🏗️ Core Agent & Architecture
### Provider & Model Support
- **Same-provider credential pools** — configure multiple API keys with automatic `least_used` rotation and 401 failover ([#4188](https://github.com/NousResearch/hermes-agent/pull/4188), [#4300](https://github.com/NousResearch/hermes-agent/pull/4300))
- **Credential pool preserved through smart routing** — pool state survives fallback provider switches and defers eager fallback on 429 ([#4361](https://github.com/NousResearch/hermes-agent/pull/4361))
- **Per-turn primary runtime restoration** — after fallback provider use, the agent automatically restores the primary provider on the next turn with transport recovery ([#4624](https://github.com/NousResearch/hermes-agent/pull/4624))
- **`developer` role for GPT-5 and Codex models** — uses OpenAI's recommended system message role for newer models ([#4498](https://github.com/NousResearch/hermes-agent/pull/4498))
- **Google model operational guidance** — Gemini and Gemma models get provider-specific prompting guidance ([#4641](https://github.com/NousResearch/hermes-agent/pull/4641))
- **Anthropic long-context tier 429 handling** — automatically reduces context to 200k when hitting tier limits ([#4747](https://github.com/NousResearch/hermes-agent/pull/4747))
- **URL-based auth for third-party Anthropic endpoints** + CI test fixes ([#4148](https://github.com/NousResearch/hermes-agent/pull/4148))
- **Bearer auth for MiniMax Anthropic endpoints** ([#4028](https://github.com/NousResearch/hermes-agent/pull/4028))
- **Fireworks context length detection** ([#4158](https://github.com/NousResearch/hermes-agent/pull/4158))
- **Standard DashScope international endpoint** for Alibaba provider ([#4133](https://github.com/NousResearch/hermes-agent/pull/4133), closes [#3912](https://github.com/NousResearch/hermes-agent/issues/3912))
- **Custom providers context_length** honored in hygiene compression ([#4085](https://github.com/NousResearch/hermes-agent/pull/4085))
- **Non-sk-ant keys** treated as regular API keys, not OAuth tokens ([#4093](https://github.com/NousResearch/hermes-agent/pull/4093))
- **Claude-sonnet-4.6** added to OpenRouter and Nous model lists ([#4157](https://github.com/NousResearch/hermes-agent/pull/4157))
- **Qwen 3.6 Plus Preview** added to model lists ([#4376](https://github.com/NousResearch/hermes-agent/pull/4376))
- **MiniMax M2.7** added to hermes model picker and OpenCode ([#4208](https://github.com/NousResearch/hermes-agent/pull/4208))
- **Auto-detect models from server probe** in custom endpoint setup ([#4218](https://github.com/NousResearch/hermes-agent/pull/4218))
- **Config.yaml single source of truth** for endpoint URLs — no more env var vs config.yaml conflicts ([#4165](https://github.com/NousResearch/hermes-agent/pull/4165))
- **Setup wizard no longer overwrites** custom endpoint config ([#4180](https://github.com/NousResearch/hermes-agent/pull/4180), closes [#4172](https://github.com/NousResearch/hermes-agent/issues/4172))
- **Unified setup wizard provider selection** with `hermes model` — single code path for both flows ([#4200](https://github.com/NousResearch/hermes-agent/pull/4200))
- **Root-level provider config** no longer overrides `model.provider` ([#4329](https://github.com/NousResearch/hermes-agent/pull/4329))
- **Rate-limit pairing rejection messages** to prevent spam ([#4081](https://github.com/NousResearch/hermes-agent/pull/4081))
### Agent Loop & Conversation
- **Preserve Anthropic thinking block signatures** across tool-use turns ([#4626](https://github.com/NousResearch/hermes-agent/pull/4626))
- **Classify think-only empty responses** before retrying — prevents infinite retry loops on models that produce thinking blocks without content ([#4645](https://github.com/NousResearch/hermes-agent/pull/4645))
- **Prevent compression death spiral** from API disconnects — stops the loop where compression triggers, fails, compresses again ([#4750](https://github.com/NousResearch/hermes-agent/pull/4750), closes [#2153](https://github.com/NousResearch/hermes-agent/issues/2153))
- **Persist compressed context** to gateway session after mid-run compression ([#4095](https://github.com/NousResearch/hermes-agent/pull/4095))
- **Context-exceeded error messages** now include actionable guidance ([#4155](https://github.com/NousResearch/hermes-agent/pull/4155), closes [#4061](https://github.com/NousResearch/hermes-agent/issues/4061))
- **Strip orphaned think/reasoning tags** from user-facing responses ([#4311](https://github.com/NousResearch/hermes-agent/pull/4311), closes [#4285](https://github.com/NousResearch/hermes-agent/issues/4285))
- **Harden Codex responses preflight** and stream error handling ([#4313](https://github.com/NousResearch/hermes-agent/pull/4313))
- **Deterministic call_id fallbacks** instead of random UUIDs for prompt cache consistency ([#3991](https://github.com/NousResearch/hermes-agent/pull/3991))
- **Context pressure warning spam** prevented after compression ([#4012](https://github.com/NousResearch/hermes-agent/pull/4012))
- **AsyncOpenAI created lazily** in trajectory compressor to avoid closed event loop errors ([#4013](https://github.com/NousResearch/hermes-agent/pull/4013))
### Memory & Sessions
- **Pluggable memory provider interface** — ABC-based plugin system for custom memory backends with profile isolation ([#4623](https://github.com/NousResearch/hermes-agent/pull/4623))
- **Honcho full integration parity** restored as reference memory provider plugin ([#4355](https://github.com/NousResearch/hermes-agent/pull/4355)) — @erosika
- **Honcho profile-scoped** host and peer resolution ([#4616](https://github.com/NousResearch/hermes-agent/pull/4616))
- **Memory flush state persisted** to prevent redundant re-flushes on gateway restart ([#4481](https://github.com/NousResearch/hermes-agent/pull/4481))
- **Memory provider tools** routed through sequential execution path ([#4803](https://github.com/NousResearch/hermes-agent/pull/4803))
- **Honcho config** written to instance-local path for profile isolation ([#4037](https://github.com/NousResearch/hermes-agent/pull/4037))
- **API server sessions** persist to shared SessionDB ([#4802](https://github.com/NousResearch/hermes-agent/pull/4802))
- **Token usage persisted** for non-CLI sessions ([#4627](https://github.com/NousResearch/hermes-agent/pull/4627))
- **Quote dotted terms in FTS5 queries** — fixes session search for terms containing dots ([#4549](https://github.com/NousResearch/hermes-agent/pull/4549))
---
## 📱 Messaging Platforms (Gateway)
### Gateway Core
- **Race condition fixes** — photo media loss, flood control, stuck sessions, and STT config issues resolved in one hardening pass ([#4727](https://github.com/NousResearch/hermes-agent/pull/4727))
- **Approval routing through running-agent guard** — `/approve` and `/deny` now route correctly when the agent is blocked waiting for approval instead of being swallowed as interrupts ([#4798](https://github.com/NousResearch/hermes-agent/pull/4798), [#4557](https://github.com/NousResearch/hermes-agent/pull/4557), closes [#4542](https://github.com/NousResearch/hermes-agent/issues/4542))
- **Resume agent after /approve** — tool result is no longer lost when executing blocked commands ([#4418](https://github.com/NousResearch/hermes-agent/pull/4418))
- **DM thread sessions seeded** with parent transcript to preserve context ([#4559](https://github.com/NousResearch/hermes-agent/pull/4559))
- **Skill-aware slash commands** — gateway dynamically registers installed skills as slash commands with paginated `/commands` list and Telegram 100-command cap ([#3934](https://github.com/NousResearch/hermes-agent/pull/3934), [#4005](https://github.com/NousResearch/hermes-agent/pull/4005), [#4006](https://github.com/NousResearch/hermes-agent/pull/4006), [#4010](https://github.com/NousResearch/hermes-agent/pull/4010), [#4023](https://github.com/NousResearch/hermes-agent/pull/4023))
- **Per-platform disabled skills** respected in Telegram menu and gateway dispatch ([#4799](https://github.com/NousResearch/hermes-agent/pull/4799))
- **Remove user-facing compression warnings** — cleaner message flow ([#4139](https://github.com/NousResearch/hermes-agent/pull/4139))
- **`-v/-q` flags wired to stderr logging** for gateway service ([#4474](https://github.com/NousResearch/hermes-agent/pull/4474))
- **HERMES_HOME remapped** to target user in system service unit ([#4456](https://github.com/NousResearch/hermes-agent/pull/4456))
- **Honor default for invalid bool-like config values** ([#4029](https://github.com/NousResearch/hermes-agent/pull/4029))
- **setsid instead of systemd-run** for `/update` command to avoid systemd permission issues ([#4104](https://github.com/NousResearch/hermes-agent/pull/4104), closes [#4017](https://github.com/NousResearch/hermes-agent/issues/4017))
- **'Initializing agent...'** shown on first message for better UX ([#4086](https://github.com/NousResearch/hermes-agent/pull/4086))
- **Allow running gateway service as root** for LXC/container environments ([#4732](https://github.com/NousResearch/hermes-agent/pull/4732))
### Telegram
- **32-char limit on command names** with collision avoidance ([#4211](https://github.com/NousResearch/hermes-agent/pull/4211))
- **Priority order enforced** in menu — core > plugins > skills ([#4023](https://github.com/NousResearch/hermes-agent/pull/4023))
- **Capped at 50 commands** — API rejects above ~60 ([#4006](https://github.com/NousResearch/hermes-agent/pull/4006))
- **Skip empty/whitespace text** to prevent 400 errors ([#4388](https://github.com/NousResearch/hermes-agent/pull/4388))
- **E2E gateway tests** added ([#4497](https://github.com/NousResearch/hermes-agent/pull/4497)) — @pefontana
### Discord
- **Button-based approval UI** — register `/approve` and `/deny` slash commands with interactive button prompts ([#4800](https://github.com/NousResearch/hermes-agent/pull/4800))
- **Configurable reactions** — `discord.reactions` config option to disable message processing reactions ([#4199](https://github.com/NousResearch/hermes-agent/pull/4199))
- **Skip reactions and auto-threading** for unauthorized users ([#4387](https://github.com/NousResearch/hermes-agent/pull/4387))
### Slack
- **Reply in thread** — `slack.reply_in_thread` config option for threaded responses ([#4643](https://github.com/NousResearch/hermes-agent/pull/4643), closes [#2662](https://github.com/NousResearch/hermes-agent/issues/2662))
### WhatsApp
- **Enforce require_mention in group chats** ([#4730](https://github.com/NousResearch/hermes-agent/pull/4730))
### Webhook
- **Platform support fixes** — skip home channel prompt, disable tool progress for webhook adapters ([#4660](https://github.com/NousResearch/hermes-agent/pull/4660))
### Matrix
- **E2EE decryption hardening** — request missing keys, auto-trust devices, retry buffered events ([#4083](https://github.com/NousResearch/hermes-agent/pull/4083))
---
## 🖥️ CLI & User Experience
### New Slash Commands
- **`/yolo`** — toggle dangerous command approvals on/off for the session ([#3990](https://github.com/NousResearch/hermes-agent/pull/3990))
- **`/btw`** — ephemeral side questions that don't affect the main conversation context ([#4161](https://github.com/NousResearch/hermes-agent/pull/4161))
- **`/profile`** — show active profile info without leaving the chat session ([#4027](https://github.com/NousResearch/hermes-agent/pull/4027))
### Interactive CLI
- **Inline diff previews** for write and patch operations in the tool activity feed ([#4411](https://github.com/NousResearch/hermes-agent/pull/4411), [#4423](https://github.com/NousResearch/hermes-agent/pull/4423))
- **TUI pinned to bottom** on startup — no more large blank spaces between response and input ([#4412](https://github.com/NousResearch/hermes-agent/pull/4412), [#4359](https://github.com/NousResearch/hermes-agent/pull/4359), closes [#4398](https://github.com/NousResearch/hermes-agent/issues/4398), [#4421](https://github.com/NousResearch/hermes-agent/issues/4421))
- **`/history` and `/resume`** now surface recent sessions directly instead of requiring search ([#4728](https://github.com/NousResearch/hermes-agent/pull/4728))
- **Cache tokens shown** in `/insights` overview so total adds up ([#4428](https://github.com/NousResearch/hermes-agent/pull/4428))
- **`--max-turns` CLI flag** for `hermes chat` to limit agent iterations ([#4314](https://github.com/NousResearch/hermes-agent/pull/4314))
- **Detect dragged file paths** instead of treating them as slash commands ([#4533](https://github.com/NousResearch/hermes-agent/pull/4533)) — @rolme
- **Allow empty strings and falsy values** in `config set` ([#4310](https://github.com/NousResearch/hermes-agent/pull/4310), closes [#4277](https://github.com/NousResearch/hermes-agent/issues/4277))
- **Voice mode in WSL** when PulseAudio bridge is configured ([#4317](https://github.com/NousResearch/hermes-agent/pull/4317))
- **Respect `NO_COLOR` env var** and `TERM=dumb` for accessibility ([#4079](https://github.com/NousResearch/hermes-agent/pull/4079), closes [#4066](https://github.com/NousResearch/hermes-agent/issues/4066)) — @SHL0MS
- **Correct shell reload instruction** for macOS/zsh users ([#4025](https://github.com/NousResearch/hermes-agent/pull/4025))
- **Zero exit code** on successful quiet mode queries ([#4613](https://github.com/NousResearch/hermes-agent/pull/4613), closes [#4601](https://github.com/NousResearch/hermes-agent/issues/4601)) — @devorun
- **on_session_end hook fires** on interrupted exits ([#4159](https://github.com/NousResearch/hermes-agent/pull/4159))
- **Profile list display** reads `model.default` key correctly ([#4160](https://github.com/NousResearch/hermes-agent/pull/4160))
- **Browser and TTS** shown in reconfigure menu ([#4041](https://github.com/NousResearch/hermes-agent/pull/4041))
- **Web backend priority** detection simplified ([#4036](https://github.com/NousResearch/hermes-agent/pull/4036))
### Setup & Configuration
- **Allowed_users preserved** during setup and quiet unconfigured provider warnings ([#4551](https://github.com/NousResearch/hermes-agent/pull/4551)) — @kshitijk4poor
- **Save API key to model config** for custom endpoints ([#4202](https://github.com/NousResearch/hermes-agent/pull/4202), closes [#4182](https://github.com/NousResearch/hermes-agent/issues/4182))
- **Claude Code credentials gated** behind explicit Hermes config in wizard trigger ([#4210](https://github.com/NousResearch/hermes-agent/pull/4210))
- **Atomic writes in save_config_value** to prevent config loss on interrupt ([#4298](https://github.com/NousResearch/hermes-agent/pull/4298), [#4320](https://github.com/NousResearch/hermes-agent/pull/4320))
- **Scopes field written** to Claude Code credentials on token refresh ([#4126](https://github.com/NousResearch/hermes-agent/pull/4126))
### Update System
- **Fork detection and upstream sync** in `hermes update` ([#4744](https://github.com/NousResearch/hermes-agent/pull/4744))
- **Preserve working optional extras** when one extra fails during update ([#4550](https://github.com/NousResearch/hermes-agent/pull/4550))
- **Handle conflicted git index** during hermes update ([#4735](https://github.com/NousResearch/hermes-agent/pull/4735))
- **Avoid launchd restart race** on macOS ([#4736](https://github.com/NousResearch/hermes-agent/pull/4736))
- **Missing subprocess.run() timeouts** added to doctor and status commands ([#4009](https://github.com/NousResearch/hermes-agent/pull/4009))
---
## 🔧 Tool System
### Browser
- **Camofox anti-detection browser backend** — local stealth browsing with auto-install via `hermes tools` ([#4008](https://github.com/NousResearch/hermes-agent/pull/4008))
- **Persistent Camofox sessions** with VNC URL discovery for visual debugging ([#4419](https://github.com/NousResearch/hermes-agent/pull/4419))
- **Skip SSRF check for local backends** (Camofox, headless Chromium) ([#4292](https://github.com/NousResearch/hermes-agent/pull/4292))
- **Configurable SSRF check** via `browser.allow_private_urls` ([#4198](https://github.com/NousResearch/hermes-agent/pull/4198)) — @nils010485
- **CAMOFOX_PORT=9377** added to Docker commands ([#4340](https://github.com/NousResearch/hermes-agent/pull/4340))
### File Operations
- **Inline diff previews** on write and patch actions ([#4411](https://github.com/NousResearch/hermes-agent/pull/4411), [#4423](https://github.com/NousResearch/hermes-agent/pull/4423))
- **Stale file detection** on write and patch — warns when file was modified externally since last read ([#4345](https://github.com/NousResearch/hermes-agent/pull/4345))
- **Staleness timestamp refreshed** after writes ([#4390](https://github.com/NousResearch/hermes-agent/pull/4390))
- **Size guard, dedup, and device blocking** on read_file ([#4315](https://github.com/NousResearch/hermes-agent/pull/4315))
### MCP
- **Stability fix pack** — reload timeout, shutdown cleanup, event loop handler, OAuth non-blocking ([#4757](https://github.com/NousResearch/hermes-agent/pull/4757), closes [#4462](https://github.com/NousResearch/hermes-agent/issues/4462), [#2537](https://github.com/NousResearch/hermes-agent/issues/2537))
### ACP (Editor Integration)
- **Client-provided MCP servers** registered as agent tools — editors pass their MCP servers to Hermes ([#4705](https://github.com/NousResearch/hermes-agent/pull/4705))
### Skills System
- **Size limits for agent writes** and **fuzzy matching for skill patch** — prevents oversized skill writes and improves edit reliability ([#4414](https://github.com/NousResearch/hermes-agent/pull/4414))
- **Validate hub bundle paths** before install — blocks path traversal in skill bundles ([#3986](https://github.com/NousResearch/hermes-agent/pull/3986))
- **Unified hermes-agent and hermes-agent-setup** into single skill ([#4332](https://github.com/NousResearch/hermes-agent/pull/4332))
- **Skill metadata type check** in extract_skill_conditions ([#4479](https://github.com/NousResearch/hermes-agent/pull/4479))
### New/Updated Skills
- **research-paper-writing** — full end-to-end research pipeline (replaced ml-paper-writing) ([#4654](https://github.com/NousResearch/hermes-agent/pull/4654)) — @SHL0MS
- **ascii-video** — text readability techniques and external layout oracle ([#4054](https://github.com/NousResearch/hermes-agent/pull/4054)) — @SHL0MS
- **youtube-transcript** updated for youtube-transcript-api v1.x ([#4455](https://github.com/NousResearch/hermes-agent/pull/4455)) — @el-analista
- **Skills browse and search page** added to documentation site ([#4500](https://github.com/NousResearch/hermes-agent/pull/4500)) — @IAvecilla
---
## 🔒 Security & Reliability
### Security Hardening
- **Block secret exfiltration** via browser URLs and LLM responses — scans for secret patterns in URL encoding, base64, and prompt injection vectors ([#4483](https://github.com/NousResearch/hermes-agent/pull/4483))
- **Redact secrets from execute_code sandbox output** ([#4360](https://github.com/NousResearch/hermes-agent/pull/4360))
- **Protect `.docker`, `.azure`, `.config/gh` credential directories** from read/write via file tools and terminal ([#4305](https://github.com/NousResearch/hermes-agent/pull/4305), [#4327](https://github.com/NousResearch/hermes-agent/pull/4327)) — @memosr
- **GitHub OAuth token patterns** added to redaction + snapshot redact flag ([#4295](https://github.com/NousResearch/hermes-agent/pull/4295))
- **Reject private and loopback IPs** in Telegram DoH fallback ([#4129](https://github.com/NousResearch/hermes-agent/pull/4129))
- **Reject path traversal** in credential file registration ([#4316](https://github.com/NousResearch/hermes-agent/pull/4316))
- **Validate tar archive member paths** on profile import — blocks zip-slip attacks ([#4318](https://github.com/NousResearch/hermes-agent/pull/4318))
- **Exclude auth.json and .env** from profile exports ([#4475](https://github.com/NousResearch/hermes-agent/pull/4475))
### Reliability
- **Prevent compression death spiral** from API disconnects ([#4750](https://github.com/NousResearch/hermes-agent/pull/4750), closes [#2153](https://github.com/NousResearch/hermes-agent/issues/2153))
- **Handle `is_closed` as method** in OpenAI SDK — prevents false positive client closure detection ([#4416](https://github.com/NousResearch/hermes-agent/pull/4416), closes [#4377](https://github.com/NousResearch/hermes-agent/issues/4377))
- **Exclude matrix from [all] extras** — python-olm is upstream-broken, prevents install failures ([#4615](https://github.com/NousResearch/hermes-agent/pull/4615), closes [#4178](https://github.com/NousResearch/hermes-agent/issues/4178))
- **OpenCode model routing** repaired ([#4508](https://github.com/NousResearch/hermes-agent/pull/4508))
- **Docker container image** optimized ([#4034](https://github.com/NousResearch/hermes-agent/pull/4034)) — @bcross
### Windows & Cross-Platform
- **Voice mode in WSL** with PulseAudio bridge ([#4317](https://github.com/NousResearch/hermes-agent/pull/4317))
- **Homebrew packaging** preparation ([#4099](https://github.com/NousResearch/hermes-agent/pull/4099))
- **CI fork conditionals** to prevent workflow failures on forks ([#4107](https://github.com/NousResearch/hermes-agent/pull/4107))
---
## 🐛 Notable Bug Fixes
- **Gateway approval blocked agent thread** — approval now blocks the agent thread like CLI does, preventing tool result loss ([#4557](https://github.com/NousResearch/hermes-agent/pull/4557), closes [#4542](https://github.com/NousResearch/hermes-agent/issues/4542))
- **Compression death spiral** from API disconnects — detected and halted instead of looping ([#4750](https://github.com/NousResearch/hermes-agent/pull/4750), closes [#2153](https://github.com/NousResearch/hermes-agent/issues/2153))
- **Anthropic thinking blocks lost** across tool-use turns ([#4626](https://github.com/NousResearch/hermes-agent/pull/4626))
- **Profile model config ignored** with `-p` flag — model.model now promoted to model.default correctly ([#4160](https://github.com/NousResearch/hermes-agent/pull/4160), closes [#4486](https://github.com/NousResearch/hermes-agent/issues/4486))
- **CLI blank space** between response and input area ([#4412](https://github.com/NousResearch/hermes-agent/pull/4412), [#4359](https://github.com/NousResearch/hermes-agent/pull/4359), closes [#4398](https://github.com/NousResearch/hermes-agent/issues/4398))
- **Dragged file paths** treated as slash commands instead of file references ([#4533](https://github.com/NousResearch/hermes-agent/pull/4533)) — @rolme
- **Orphaned `</think>` tags** leaking into user-facing responses ([#4311](https://github.com/NousResearch/hermes-agent/pull/4311), closes [#4285](https://github.com/NousResearch/hermes-agent/issues/4285))
- **OpenAI SDK `is_closed`** is a method not property — false positive client closure ([#4416](https://github.com/NousResearch/hermes-agent/pull/4416), closes [#4377](https://github.com/NousResearch/hermes-agent/issues/4377))
- **MCP OAuth server** could block Hermes startup instead of degrading gracefully ([#4757](https://github.com/NousResearch/hermes-agent/pull/4757), closes [#4462](https://github.com/NousResearch/hermes-agent/issues/4462))
- **MCP event loop closed** on shutdown with HTTP servers ([#4757](https://github.com/NousResearch/hermes-agent/pull/4757), closes [#2537](https://github.com/NousResearch/hermes-agent/issues/2537))
- **Alibaba provider** hardcoded to wrong endpoint ([#4133](https://github.com/NousResearch/hermes-agent/pull/4133), closes [#3912](https://github.com/NousResearch/hermes-agent/issues/3912))
- **Slack reply_in_thread** missing config option ([#4643](https://github.com/NousResearch/hermes-agent/pull/4643), closes [#2662](https://github.com/NousResearch/hermes-agent/issues/2662))
- **Quiet mode exit code** — successful `-q` queries no longer exit nonzero ([#4613](https://github.com/NousResearch/hermes-agent/pull/4613), closes [#4601](https://github.com/NousResearch/hermes-agent/issues/4601))
- **Mobile sidebar** shows only close button due to backdrop-filter issue in docs site ([#4207](https://github.com/NousResearch/hermes-agent/pull/4207)) — @xsmyile
- **Config restore reverted** by stale-branch squash merge — `_config_version` fixed ([#4440](https://github.com/NousResearch/hermes-agent/pull/4440))
---
## 🧪 Testing
- **Telegram gateway E2E tests** — full integration test suite for the Telegram adapter ([#4497](https://github.com/NousResearch/hermes-agent/pull/4497)) — @pefontana
- **11 real test failures fixed** plus sys.modules cascade poisoner resolved ([#4570](https://github.com/NousResearch/hermes-agent/pull/4570))
- **7 CI failures resolved** across hooks, plugins, and skill tests ([#3936](https://github.com/NousResearch/hermes-agent/pull/3936))
- **Codex 401 refresh tests** updated for CI compatibility ([#4166](https://github.com/NousResearch/hermes-agent/pull/4166))
- **Stale OPENAI_BASE_URL test** fixed ([#4217](https://github.com/NousResearch/hermes-agent/pull/4217))
---
## 📚 Documentation
- **Comprehensive documentation audit** — 9 HIGH and 20+ MEDIUM gaps fixed across 21 files ([#4087](https://github.com/NousResearch/hermes-agent/pull/4087))
- **Site navigation restructured** — features and platforms promoted to top-level ([#4116](https://github.com/NousResearch/hermes-agent/pull/4116))
- **Tool progress streaming** documented for API server and Open WebUI ([#4138](https://github.com/NousResearch/hermes-agent/pull/4138))
- **Telegram webhook mode** documentation ([#4089](https://github.com/NousResearch/hermes-agent/pull/4089))
- **Local LLM provider guides** — comprehensive setup guides with context length warnings ([#4294](https://github.com/NousResearch/hermes-agent/pull/4294))
- **WhatsApp allowlist behavior** clarified with `WHATSAPP_ALLOW_ALL_USERS` documentation ([#4293](https://github.com/NousResearch/hermes-agent/pull/4293))
- **Slack configuration options** — new config section in Slack docs ([#4644](https://github.com/NousResearch/hermes-agent/pull/4644))
- **Terminal backends section** expanded + docs build fixes ([#4016](https://github.com/NousResearch/hermes-agent/pull/4016))
- **Adding-providers guide** updated for unified setup flow ([#4201](https://github.com/NousResearch/hermes-agent/pull/4201))
- **ACP Zed config** fixed ([#4743](https://github.com/NousResearch/hermes-agent/pull/4743))
- **Community FAQ** entries for common workflows and troubleshooting ([#4797](https://github.com/NousResearch/hermes-agent/pull/4797))
- **Skills browse and search page** on docs site ([#4500](https://github.com/NousResearch/hermes-agent/pull/4500)) — @IAvecilla
---
## 👥 Contributors
### Core
- **@teknium1** — 135 commits across all subsystems
### Top Community Contributors
- **@kshitijk4poor** — 13 commits: preserve allowed_users during setup ([#4551](https://github.com/NousResearch/hermes-agent/pull/4551)), and various fixes
- **@erosika** — 12 commits: Honcho full integration parity restored as memory provider plugin ([#4355](https://github.com/NousResearch/hermes-agent/pull/4355))
- **@pefontana** — 9 commits: Telegram gateway E2E test suite ([#4497](https://github.com/NousResearch/hermes-agent/pull/4497))
- **@bcross** — 5 commits: Docker container image optimization ([#4034](https://github.com/NousResearch/hermes-agent/pull/4034))
- **@SHL0MS** — 4 commits: NO_COLOR/TERM=dumb support ([#4079](https://github.com/NousResearch/hermes-agent/pull/4079)), ascii-video skill updates ([#4054](https://github.com/NousResearch/hermes-agent/pull/4054)), research-paper-writing skill ([#4654](https://github.com/NousResearch/hermes-agent/pull/4654))
### All Contributors
@0xbyt4, @arasovic, @Bartok9, @bcross, @binhnt92, @camden-lowrance, @curtitoo, @Dakota, @Dave Tist, @Dean Kerr, @devorun, @dieutx, @Dilee, @el-analista, @erosika, @Gutslabs, @IAvecilla, @Jack, @Johannnnn506, @kshitijk4poor, @Laura Batalha, @Leegenux, @Lume, @MacroAnarchy, @maymuneth, @memosr, @NexVeridian, @Nick, @nils010485, @pefontana, @Penov, @rolme, @SHL0MS, @txchen, @xsmyile
### Issues Resolved from Community
@acsezen ([#2537](https://github.com/NousResearch/hermes-agent/issues/2537)), @arasovic ([#4285](https://github.com/NousResearch/hermes-agent/issues/4285)), @camden-lowrance ([#4462](https://github.com/NousResearch/hermes-agent/issues/4462)), @devorun ([#4601](https://github.com/NousResearch/hermes-agent/issues/4601)), @eloklam ([#4486](https://github.com/NousResearch/hermes-agent/issues/4486)), @HenkDz ([#3719](https://github.com/NousResearch/hermes-agent/issues/3719)), @hypotyposis ([#2153](https://github.com/NousResearch/hermes-agent/issues/2153)), @kazamak ([#4178](https://github.com/NousResearch/hermes-agent/issues/4178)), @lstep ([#4366](https://github.com/NousResearch/hermes-agent/issues/4366)), @Mark-Lok ([#4542](https://github.com/NousResearch/hermes-agent/issues/4542)), @NoJster ([#4421](https://github.com/NousResearch/hermes-agent/issues/4421)), @patp ([#2662](https://github.com/NousResearch/hermes-agent/issues/2662)), @pr0n ([#4601](https://github.com/NousResearch/hermes-agent/issues/4601)), @saulmc ([#4377](https://github.com/NousResearch/hermes-agent/issues/4377)), @SHL0MS ([#4060](https://github.com/NousResearch/hermes-agent/issues/4060), [#4061](https://github.com/NousResearch/hermes-agent/issues/4061), [#4066](https://github.com/NousResearch/hermes-agent/issues/4066), [#4172](https://github.com/NousResearch/hermes-agent/issues/4172), [#4277](https://github.com/NousResearch/hermes-agent/issues/4277)), @Z-Mackintosh ([#4398](https://github.com/NousResearch/hermes-agent/issues/4398))
---
**Full Changelog**: [v2026.3.30...v2026.4.3](https://github.com/NousResearch/hermes-agent/compare/v2026.3.30...v2026.4.3)