# Hermes Agent v0.13.0 (v2026.5.7)
**发布日期:** 2026年5月7日
**自 v0.12.0 以来:** 864 次提交 · 588 个合并的 PR · 829 个文件变更 · 128,366 行插入 · 关闭 282 个议题(13 个 P0,36 个 P1) · 295 位社区贡献者(含联合作者)
> 坚韧版 —— Hermes Agent 现已做到“有始有终”。看板(Kanban)作为耐用的多智能体看板上线(含心跳、任务回收、僵尸检测、未完成退出自动阻塞、单任务重试、幻觉恢复)。`/goal` 命令让智能体在多个回合中锁定目标(Ralph 循环)。Checkpoints v2 用真正的修剪机制重写了状态持久化。Gateway 重启后自动恢复中断的会话。Cron 新增了 `no_agent` 看门狗模式。一波安全更新关闭了 8 个 P0 级问题 —— 默认开启内容脱敏,Discord 角色白名单限定于服务器范围,WhatsApp 默认拒绝陌生人,TOCTOU 漏洞在 auth.json 和 MCP OAuth 中已修复。Google Chat 成为第 20 个支持平台。模型提供商变为可插拔架构。七种本地化语言上线。
---
## ✨ 亮点
- **多智能体看板 —— 委托给真正能交付结果的 AI 团队** —— 启动一个持久化看板,将任务投放其上,让多个 Hermes 工作节点领取、交接并完成任务。心跳机制、任务回收、僵尸检测、重试预算和幻觉拦截门确保团队可靠。一次安装,支持多个看板。 ([#17805](https://github.com/NousResearch/hermes-agent/pull/17805), [#19653](https://github.com/NousResearch/hermes-agent/pull/19653), [#20232](https://github.com/NousResearch/hermes-agent/pull/20232), [#20332](https://github.com/NousResearch/hermes-agent/pull/20332), [#21330](https://github.com/NousResearch/hermes-agent/pull/21330), [#21183](https://github.com/NousResearch/hermes-agent/pull/21183), [#21214](https://github.com/NousResearch/hermes-agent/pull/21214))
- **`/goal` —— 智能体不会忘记你交代的事** —— 将智能体锁定在特定目标上,使其在多个回合中持续专注任务。Ralph 循环作为一等公民机制。 ([#18262](https://github.com/NousResearch/hermes-agent/pull/18262), [#18275](https://github.com/NousResearch/hermes-agent/pull/18275), [#21287](https://github.com/NousResearch/hermes-agent/pull/21287))
- **支持视频输入** —— 新增 `video_analyze` 工具,为 Gemini 及兼容的多模态模型提供原生视频理解能力。 (@alt-glitch) ([#19301](https://github.com/NousResearch/hermes-agent/pull/19301))
- **克隆声音** —— xAI Custom Voices 作为 TTS 提供商上线,支持声音克隆。 (@alt-glitch) ([#18776](https://github.com/NousResearch/hermes-agent/pull/18776))
- **Hermes 说你的语言** —— 静态网关与 CLI 消息已支持 7 种本地化语言:中文、日语、德语、西班牙语、法语、乌克兰语和土耳其语。文档网站新增中文(zh-Hans)本地化。 ([#20231](https://github.com/NousResearch/hermes-agent/pull/20231), [#20329](https://github.com/NousResearch/hermes-agent/pull/20329), [#20467](https://github.com/NousResearch/hermes-agent/pull/20467), [#20474](https://github.com/NousResearch/hermes-agent/pull/20474), [#20430](https://github.com/NousResearch/hermes-agent/pull/20430), [#20431](https://github.com/NousResearch/hermes-agent/pull/20431))
- **Google Chat —— 第 20 个消息平台** —— 同时提供通用的平台插件钩子接口,使第三方适配器无需修改核心代码即可接入(IRC 和 Teams 已迁移)。 ([#21306](https://github.com/NousResearch/hermes-agent/pull/21306), [#21331](https://github.com/NousResearch/hermes-agent/pull/21331))
- **会话支持重启恢复** —— 网关重启、`/update` 更新重启、源文件重载后,网关恢复时对话将自动继续。 ([#21192](https://github.com/NousResearch/hermes-agent/pull/21192))
- **安全更新 —— 关闭 8 个 P0 级漏洞** —— 默认开启内容脱敏,Discord 角色白名单限定于服务器范围(已修复 CVSS 8.1 的跨服务器私聊绕过漏洞),WhatsApp 默认拒绝陌生人,`auth.json` 和 MCP OAuth 中的 TOCTOU 漏洞已修复,浏览器强制实施云元数据 SSRF 防护基线,Cron 提示词注入扫描已覆盖组装的技能内容,`hermes debug share` 在上传时自动脱敏。 ([#21193](https://github.com/NousResearch/hermes-agent/pull/21193), [#21241](https://github.com/NousResearch/hermes-agent/pull/21241), [#21291](https://github.com/NousResearch/hermes-agent/pull/21291), [#21176](https://github.com/NousResearch/hermes-agent/pull/21176), [#21194](https://github.com/NousResearch/hermes-agent/pull/21194), [#21228](https://github.com/NousResearch/hermes-agent/pull/21228), [#21350](https://github.com/NousResearch/hermes-agent/pull/21350), [#19318](https://github.com/NousResearch/hermes-agent/pull/19318))
- **Checkpoints v2** —— 状态持久化机制重写。支持真正的修剪清理、磁盘防护限制,不再产生孤立的影子仓库。 ([#20709](https://github.com/NousResearch/hermes-agent/pull/20709))
- **智能体自动检查自身写入** —— 对 `write_file` 和 `patch` 操作进行写入后增量检查。支持 Python、JSON、YAML、TOML。语法错误会立即暴露,避免错误传递到下游。 ([#20191](https://github.com/NousResearch/hermes-agent/pull/20191))
- **`no_agent` Cron 模式 —— 纯脚本看门狗** —— Cron 任务现在可以完全跳过智能体,仅执行脚本。空标准输出保持静默,非空输出将原样投递。 ([#19709](https://github.com/NousResearch/hermes-agent/pull/19709))
- **全平台白名单支持** —— 在 Slack、Telegram、Mattermost、Matrix 和钉钉中全面支持 `allowed_channels` / `allowed_chats` / `allowed_rooms` 配置。 ([#21251](https://github.com/NousResearch/hermes-agent/pull/21251))
- **提供商插件化** —— 引入 `ProviderProfile` 抽象基类及 `plugins/model-providers/` 目录。无需修改核心代码即可接入第三方提供商。 ([#20324](https://github.com/NousResearch/hermes-agent/pull/20324))
- **API 服务器 —— 会话级长期记忆** —— `X-Hermes-Session-Key` 请求头为记忆提供商提供稳定的会话标识符。 ([#20199](https://github.com/NousResearch/hermes-agent/pull/20199))
- **MCP 升级** — 支持带 OAuth 转发功能的 SSE 传输、陈旧管道重试、图像结果以 MEDIA 标签形式展示(而非被丢弃),以及在长生命周期等待中启用 keepalive。([#21227](https://github.com/NousResearch/hermes-agent/pull/21227), [#21323](https://github.com/NousResearch/hermes-agent/pull/21323), [#21289](https://github.com/NousResearch/hermes-agent/pull/21289), [#21328](https://github.com/NousResearch/hermes-agent/pull/21328), [#20209](https://github.com/NousResearch/hermes-agent/pull/20209))
- **Curator 新增子命令** — 新增 `hermes curator archive`、`prune`、`list-archived`。手动执行 `hermes curator run` 现已改为同步模式——无需轮询即可直接查看结果。([#20200](https://github.com/NousResearch/hermes-agent/pull/20200), [#21236](https://github.com/NousResearch/hermes-agent/pull/21236), [#21216](https://github.com/NousResearch/hermes-agent/pull/21216))
- **ACP — `/steer` 与 `/queue`** — 可从 Zed、VS Code 或 JetBrains 中直接引导正在运行的代理或排队后续任务。新增跨重启的原子级会话持久化及推理元数据保留功能。(@HenkDz) ([#18114](https://github.com/NousResearch/hermes-agent/pull/18114), [#20279](https://github.com/NousResearch/hermes-agent/pull/20279), [#20296](https://github.com/NousResearch/hermes-agent/pull/20296), [#20433](https://github.com/NousResearch/hermes-agent/pull/20433))
- **TUI 界面焕新** — `/model` 选择器与 `hermes model` 保持一致并支持内联认证 (@austinpickett),启动横幅区域支持折叠 (@kshitijk4poor),状态栏新增上下文压缩计数器。([#18117](https://github.com/NousResearch/hermes-agent/pull/18117), [#20625](https://github.com/NousResearch/hermes-agent/pull/20625), [#21218](https://github.com/NousResearch/hermes-agent/pull/21218))
- **Dashboard 功能扩展** — 新增插件页面(管理、启用/禁用、认证状态) (@austinpickett),个人资料管理页面 (@vincez-hms-coder),支持排序的分析表格,通过 `X-Forwarded-Prefix` 支持反向代理,以及全新的 `default-large` 18px 主题。([#18095](https://github.com/NousResearch/hermes-agent/pull/18095), [#16419](https://github.com/NousResearch/hermes-agent/pull/16419), [#18192](https://github.com/NousResearch/hermes-agent/pull/18192), [#21296](https://github.com/NousResearch/hermes-agent/pull/21296), [#20820](https://github.com/NousResearch/hermes-agent/pull/20820))
- **SearXNG 与拆分后的 Web 工具** — SearXNG 现作为原生仅搜索后端提供;Web 工具现在允许您按功能(搜索、提取或浏览)选择不同的后端。(@kshitijk4poor) ([#20823](https://github.com/NousResearch/hermes-agent/pull/20823), [#20061](https://github.com/NousResearch/hermes-agent/pull/20061), [#20841](https://github.com/NousResearch/hermes-agent/pull/20841))
- **OpenRouter 响应缓存** — 为支持该功能的模型提供显式缓存控制。(@kshitijk4poor) ([#19132](https://github.com/NousResearch/hermes-agent/pull/19132))
- **`[[as_document]]` —— 技能媒体路由指令** — 在支持的平台上,技能可强制网关将输出以文档形式交付。([#21210](https://github.com/NousResearch/hermes-agent/pull/21210))
- **`transform_llm_output` 插件钩子** — 新增生命周期钩子,允许插件在输出进入对话前对其进行重塑或过滤。适用于上下文窗口缩减器和内容过滤器。([#21235](https://github.com/NousResearch/hermes-agent/pull/21235))
- **Nous OAuth 跨配置文件持久化** — 共享令牌存储:登录一次,所有配置文件均继承该会话。([#19712](https://github.com/NousResearch/hermes-agent/pull/19712))
- **QQBot —— 原生审批键盘** — 功能与 Telegram / Discord 的审批体验对齐。支持分块上传与引用附件。([#21342](https://github.com/NousResearch/hermes-agent/pull/21342), [#21353](https://github.com/NousResearch/hermes-agent/pull/21353))
- **6 款新增可选技能** — Shopify(Admin + Storefront GraphQL)、here.now、shop-app 个人购物助手、Anthropic 金融服务套件、kanban-video-orchestrator (@SHL0MS)、searxng-search (@kshitijk4poor)。([#18116](https://github.com/NousResearch/hermes-agent/pull/18116), [#18170](https://github.com/NousResearch/hermes-agent/pull/18170), [#20702](https://github.com/NousResearch/hermes-agent/pull/20702), [#21180](https://github.com/NousResearch/hermes-agent/pull/21180), [#19281](https://github.com/NousResearch/hermes-agent/pull/19281), [#20841](https://github.com/NousResearch/hermes-agent/pull/20841))
- **新增模型** — `deepseek/deepseek-v4-pro`、`x-ai/grok-4.3`、`openrouter/owl-alpha`(免费)、`tencent/hy3-preview` (@Contentment003111),以及 Arcee Trinity Large Thinking 的温度与压缩覆盖设置。([#20495](https://github.com/NousResearch/hermes-agent/pull/20495), [#20497](https://github.com/NousResearch/hermes-agent/pull/20497), [#18071](https://github.com/NousResearch/hermes-agent/pull/18071), [#21077](https://github.com/NousResearch/hermes-agent/pull/21077), [#20473](https://github.com/NousResearch/hermes-agent/pull/20473))
- **100 条全新 CLI 启动提示** — 随机提示横幅新增 100 条内容,涵盖 cron、看板、Curator、插件及冷门参数。([#20168](https://github.com/NousResearch/hermes-agent/pull/20168))
---
## 🧩 多智能体看板(持久化)
### 新增 —— 持久化多配置文件协作看板
- **`feat(kanban): durable multi-profile collaboration board`** — 回滚后的重新实现,设计之初即支持多配置文件 ([#17805](https://github.com/NousResearch/hermes-agent/pull/17805))
- **多项目看板** — 一次安装,多个看板 ([#19653](https://github.com/NousResearch/hermes-agent/pull/19653), [#19679](https://github.com/NousResearch/hermes-agent/pull/19679))
- **跨配置文件共享看板、工作区及 Worker 日志** ([#19378](https://github.com/NousResearch/hermes-agent/pull/19378))
- **Worker 创建卡片的声明幻觉拦截门控 + 恢复交互体验** (关闭 #20017) ([#20232](https://github.com/NousResearch/hermes-agent/pull/20232))
- **任务异常信号的通用诊断引擎** ([#20332](https://github.com/NousResearch/hermes-agent/pull/20332))
- **任务级 `max_retries` 覆盖配置** (替代 #20972) ([#21330](https://github.com/NousResearch/hermes-agent/pull/21330))
- **内联创建标题的多行文本域** (继承自 #20970) ([#21243](https://github.com/NousResearch/hermes-agent/pull/21243))
### 看板仪表板
- **内联创建表单中的工作区类型与路径输入框** ([#19679](https://github.com/NousResearch/hermes-agent/pull/19679))
- **按平台的主频道通知开关** ([#19864](https://github.com/NousResearch/hermes-agent/pull/19864))
- **提升主频道开关对比度 + 拖拽至运行状态操作** ([#19916](https://github.com/NousResearch/hermes-agent/pull/19916))
- 修复:通过仪表板 API 拒绝直接转换状态为“运行中” (继承自 #19554) ([#19705](https://github.com/NousResearch/hermes-agent/pull/19705))
- 修复:仪表板看板置顶优先级高于服务器当前文件 (#20879) ([#21230](https://github.com/NousResearch/hermes-agent/pull/21230))
- 修复:将仪表板事件流取消视为正常关闭 (#20790) ([#21222](https://github.com/NousResearch/hermes-agent/pull/21222))
- 修复:按选定的租户过滤仪表板看板 (#19817) ([#21349](https://github.com/NousResearch/hermes-agent/pull/21349))
- 修复:代码/预格式化文本样式在所有主题下保持一致 (#21086) ([#21247](https://github.com/NousResearch/hermes-agent/pull/21247))
- 修复:重置仪表板看板内 `<code>` 的背景色 ([#20687](https://github.com/NousResearch/hermes-agent/pull/20687))
- 修复:保留仪表板完成摘要 + 增加看板编辑功能 (继承自 #20016) ([#20195](https://github.com/NousResearch/hermes-agent/pull/20195))
- 修复:避免脆弱的失败列重命名 (继承自 #20848) (@kshitijk4poor) ([#20855](https://github.com/NousResearch/hermes-agent/pull/20855))
### Worker 生命周期与可靠性
- **心跳、回收、僵尸进程及重试上限修复** (#21147, #21141, #21169, #20881) ([#21183](https://github.com/NousResearch/hermes-agent/pull/21183))
- **自动阻止未完成即退出的 Worker + 修复关闭竞态条件** (#20894) ([#21214](https://github.com/NousResearch/hermes-agent/pull/21214))
- **检测 Darwin (macOS) 僵尸 Worker** (继承自 #20023) ([#20188](https://github.com/NousResearch/hermes-agent/pull/20188))
- **统一生成/超时/崩溃场景下的失败计数器** ([#20410](https://github.com/NousResearch/hermes-agent/pull/20410))
- **在破坏性工具调用时强制校验 Worker 任务所有权** ([#19713](https://github.com/NousResearch/hermes-agent/pull/19713))
- **从 KANBAN_GUIDANCE 中移除 Worker 身份声明** ([#19427](https://github.com/NousResearch/hermes-agent/pull/19427))
- 修复:跳过分配至非配置文件通道的任务调度 (继承自 #20105, #20134) ([#20165](https://github.com/NousResearch/hermes-agent/pull/20165))
- 修复:在磁盘分配者枚举中包含默认配置文件 (继承自 #20123) ([#20170](https://github.com/NousResearch/hermes-agent/pull/20170))
- 修复:忽略过期的当前看板指针 (继承自 #20063) ([#20183](https://github.com/NousResearch/hermes-agent/pull/20183))
- 修复:在自定义根目录部署中,配置文件发现忽略 HERMES_HOME 环境变量 (@jackey8616) ([#19020](https://github.com/NousResearch/hermes-agent/pull/19020))
- 修复:允许编排器配置文件通过工具集配置查看看板工具 ([#19606](https://github.com/NousResearch/hermes-agent/pull/19606))
### 批量继承修复
- Tier-1 批次 — 元数据测试、max_spawn 配置、run-id 生命周期守卫 (继承自 #19522 #19556 #19829) ([#20440](https://github.com/NousResearch/hermes-agent/pull/20440))
- Tier-2 批次 — doctor、started_at、parent-guard、latest_summary、selects、linked-children ([#20448](https://github.com/NousResearch/hermes-agent/pull/20448))
### 文档
- 在参考文档中补充多看板引用 ([#19704](https://github.com/NousResearch/hermes-agent/pull/19704))
- 记录 `/kanban` 斜杠命令 ([#19584](https://github.com/NousResearch/hermes-agent/pull/19584))
- 记录推荐的交接证据元数据 (继承自 #19512) ([#20415](https://github.com/NousResearch/hermes-agent/pull/20415))
- 修复编排器与 Worker 技能设置说明 (@helix4u) ([#20958](https://github.com/NousResearch/hermes-agent/pull/20958), [#20960](https://github.com/NousResearch/hermes-agent/pull/20960))
---
## 🎯 持久化目标、检查点与会话持久性
### `/goal` —— 持久化跨轮次目标 (Ralph 循环)
- **`feat: /goal — persistent cross-turn goals`** ([#18262](https://github.com/NousResearch/hermes-agent/pull/18262))
- **文档页面 —— 持久化目标 (/goal)** ([#18275](https://github.com/NousResearch/hermes-agent/pull/18275))
- 修复:遵守配置的目标轮次预算 (继承自 #19423) ([#21287](https://github.com/NousResearch/hermes-agent/pull/21287))
### 检查点 v2
- **重写单一存储,支持真实剪枝与磁盘保护机制** ([#20709](https://github.com/NousResearch/hermes-agent/pull/20709))
### 会话持久性
- **网关重启后自动恢复中断的会话** (salvage #20888) ([#21192](https://github.com/NousResearch/hermes-agent/pull/21192))
- **重启期间保留待处理的更新提示** ([#20160](https://github.com/NousResearch/hermes-agent/pull/20160))
- **重启通知期间保留主频道线程目标** (salvage #18440) ([#19271](https://github.com/NousResearch/hermes-agent/pull/19271))
- **从缓存的实时会话源保留线程路由** ([#21206](https://github.com/NousResearch/hermes-agent/pull/21206))
- **会话分支时保留助手元数据** ([#18222](https://github.com/NousResearch/hermes-agent/pull/18222))
- **保留 `/update` 进度和提示的线程路由** ([#18193](https://github.com/NousResearch/hermes-agent/pull/18193))
- **合并排队事件时保留文档类型** ([#18215](https://github.com/NousResearch/hermes-agent/pull/18215))
---
## 🛡️ 安全与可靠性
### 安全加固(8 个 P0 级漏洞修复)
- **默认启用敏感信息脱敏** (#17691, #20785) ([#21193](https://github.com/NousResearch/hermes-agent/pull/21193))
- **Discord — 将 `DISCORD_ALLOWED_ROLES` 的作用域限制为原始服务器** (#12136, CVSS 8.1) ([#21241](https://github.com/NousResearch/hermes-agent/pull/21241))
- **WhatsApp — 默认拒绝陌生人消息,绝不回复私聊(self-chat)** (#8389) ([#21291](https://github.com/NousResearch/hermes-agent/pull/21291))
- **MCP OAuth — 保存凭据时修复 TOCTOU 竞争条件窗口** ([#21176](https://github.com/NousResearch/hermes-agent/pull/21176))
- **`hermes_cli/auth.py` — 修复凭据写入器中的 TOCTOU 竞争条件窗口** ([#21194](https://github.com/NousResearch/hermes-agent/pull/21194))
- **Browser — 在混合路由中强制实施云元数据 SSRF 防护底线** (#16234) ([#21228](https://github.com/NousResearch/hermes-agent/pull/21228))
- **`hermes debug share` — 上传时脱敏日志内容** (@GodsBoy) ([#19318](https://github.com/NousResearch/hermes-agent/pull/19318))
- **Cron — 扫描组装后的提示词(含技能内容)以防止提示词注入** (#3968) ([#21350](https://github.com/NousResearch/hermes-agent/pull/21350))
- **将 `.env`/`auth.json`/`state.db` 的权限恢复为 0600** ([#19699](https://github.com/NousResearch/hermes-agent/pull/19699))
- **为仪表板插件脚本启用 SRI 完整性校验** (salvage #19389) ([#21277](https://github.com/NousResearch/hermes-agent/pull/21277))
- **将 Meet 节点服务器绑定至 localhost,限制 token 文件仅所有者可读** ([#19597](https://github.com/NousResearch/hermes-agent/pull/19597))
- **扩展敏感写入目标以覆盖 shell RC 文件和凭据文件** ([#19282](https://github.com/NousResearch/hermes-agent/pull/19282))
- **强化 YOLO 模式下的环境变量解析,防止引号包裹的布尔字符串绕过** ([#18214](https://github.com/NousResearch/hermes-agent/pull/18214))
- **OSV-Scanner CI + Dependabot 仅针对 github-actions** ([#20037](https://github.com/NousResearch/hermes-agent/pull/20037))
### 可靠性 — 关键缺陷修复
- **CLI 启动崩溃 — `Invalid key 'c-S-c'`** (P0,prompt_toolkit 不支持 Shift 修饰键) ([#19895](https://github.com/NousResearch/hermes-agent/pull/19895), [#19919](https://github.com/NousResearch/hermes-agent/pull/19919))
- **CLOSE_WAIT 文件描述符泄漏审计** — httpx keepalive + WhatsApp aiohttp 泄漏 + 飞书清理 (#18451) ([#18766](https://github.com/NousResearch/hermes-agent/pull/18766))
- **网关在缺失 `OPENROUTER_API_KEY` 时创建带有空 OpenRouter API 密钥的 AIAgent** (#20982) — 正确回退至备用提供商
- **后台审查与策展器防止覆盖内置/中心技能** (#20273) ([#20194](https://github.com/NousResearch/hermes-agent/pull/20194))
- **TUI 压缩续传 — 修复元数据不完整的幽灵会话** (#20001)
- **`hermes mcp add` 静默启动聊天而非注册 MCP 服务器** (#19785) ([#21204](https://github.com/NousResearch/hermes-agent/pull/21204))
- **后台审查代理运行时传播** — provider/model/credentials 现正确继承自父级
- **入站文档主机路径转换为 Docker 后端的容器路径** (salvage #19048) ([#21184](https://github.com/NousResearch/hermes-agent/pull/21184))
- **Matrix 网关中自动脱敏与消息传递在高速模型下的竞态条件** (#19075)
- **Telegram 上活跃代理会话期间执行 `/new` 从不发送响应** (#18912)
---
## 📱 消息平台(网关)
### 新增平台
- **Google Chat — 第 20 个平台** + 通用 `env_enablement_fn` / `cron_deliver_env_var` 平台插件钩子(IRC + Teams 已迁移) ([#21306](https://github.com/NousResearch/hermes-agent/pull/21306), [#21331](https://github.com/NousResearch/hermes-agent/pull/21331))
### 跨平台
- **`allowed_{channels,chats,rooms}` 白名单** — Slack(salvage #7401)、Telegram、Mattermost、Matrix、钉钉 ([#21251](https://github.com/NousResearch/hermes-agent/pull/21251))
- **按平台配置的 `gateway_restart_notification` 标志** ([#20892](https://github.com/NousResearch/hermes-agent/pull/20892))
- **`busy_ack_enabled` 配置 — 抑制确认(ack)消息** ([#18194](https://github.com/NousResearch/hermes-agent/pull/18194))
- **TTL 到期后自动删除斜杠命令系统通知** ([#18266](https://github.com/NousResearch/hermes-agent/pull/18266))
- **可选清理临时进度气泡** ([#21186](https://github.com/NousResearch/hermes-agent/pull/21186))
- **`[[as_document]]` 指令 — 技能媒体路由** (salvage #19069) ([#21210](https://github.com/NousResearch/hermes-agent/pull/21210))
- **`hermes gateway list` — 跨配置文件的运行状态** (salvage #19129) ([#21225](https://github.com/NousResearch/hermes-agent/pull/21225))
- **重启后自动恢复中断的会话** (salvage #20888) ([#21192](https://github.com/NousResearch/hermes-agent/pull/21192))
- **原子化重启标记 + Windows 运行时锁定偏移** (#17842) ([#18179](https://github.com/NousResearch/hermes-agent/pull/18179))
- 修复:agent/display/timezone 设置中 config.yaml 优先级高于 .env ([#18764](https://github.com/NousResearch/hermes-agent/pull/18764))
- 修复:源文件在运行时被更改时自动重启 (#17648) ([#18409](https://github.com/NousResearch/hermes-agent/pull/18409))
- 修复:使用 git HEAD SHA 进行陈旧代码检查,而非文件修改时间 ([#19740](https://github.com/NousResearch/hermes-agent/pull/19740))
- 修复:关闭与重启流程优化 — 排空超时、误报致命错误、成功日志记录 ([#18761](https://github.com/NousResearch/hermes-agent/pull/18761))
- 修复:环境变量重载后保留 max_turns 设置 (salvage #19183) ([#21240](https://github.com/NousResearch/hermes-agent/pull/21240))
- 修复:在网关进程扫描中排除祖先 PID ([#19586](https://github.com/NousResearch/hermes-agent/pull/19586))
- 修复:将快捷命令别名分发移至内置命令之前 ([#19588](https://github.com/NousResearch/hermes-agent/pull/19588))
- 修复:在 'gateway status' 中显示其他配置文件以避免混淆 ([#19582](https://github.com/NousResearch/hermes-agent/pull/19582))
- 修复:在 Telegram/Discord 斜杠命令中包含 external_dirs 技能 (salvage #8790) ([#18741](https://github.com/NousResearch/hermes-agent/pull/18741))
- 修复:通过 frontmatter slug 匹配禁用/可选技能,而非目录名 ([#18753](https://github.com/NousResearch/hermes-agent/pull/18753))
- 修复:从 SessionDB 读取 /status 令牌总量 (#17158) ([#18206](https://github.com/NousResearch/hermes-agent/pull/18206))
- 修复:在代理绑定后再生成快照回调,而非绑定前 ([#18219](https://github.com/NousResearch/hermes-agent/pull/18219))
- 修复:在 /new 或 /reset 后重新注入主题绑定技能 ([#18205](https://github.com/NousResearch/hermes-agent/pull/18205))
- 修复:按会话隔离待处理的本地图像路径 ([#18202](https://github.com/NousResearch/hermes-agent/pull/18202))
- 修复:在 new/resume/branch 时清除排队重载技能的提示 ([#19431](https://github.com/NousResearch/hermes-agent/pull/19431))
- 修复:从 Telegram 菜单中隐藏需要参数的命令 ([#19400](https://github.com/NousResearch/hermes-agent/pull/19400))
- 修复:将顶层 require_mention 桥接至 Telegram 配置 ([#19429](https://github.com/NousResearch/hermes-agent/pull/19429))
- 修复:抑制重复的语音转写文本 ([#19428](https://github.com/NousResearch/hermes-agent/pull/19428))
- 修复:服务未安装时显示友好错误提示 ([#19707](https://github.com/NousResearch/hermes-agent/pull/19707))
- 修复:从会话信息头部的 custom_providers 读取 context_length ([#19708](https://github.com/NousResearch/hermes-agent/pull/19708))
- 修复:在 systemd 单元中保留 WSL 互操作 PATH ([#19867](https://github.com/NousResearch/hermes-agent/pull/19867))
- 修复:处理计划内的服务停止 (salvage #19876) ([#19936](https://github.com/NousResearch/hermes-agent/pull/19936))
- 修复:保留与系统 DNS 匹配的 DoH 确认 Telegram IP (salvage #17043) ([#20175](https://github.com/NousResearch/hermes-agent/pull/20175))
- 修复:为 Discord 和 Telegram 从 config.yaml 加载 reply_to_mode (salvage #17117) ([#20171](https://github.com/NousResearch/hermes-agent/pull/20171))
- 修复:容忍格式错误的 HERMES_HUMAN_DELAY_* 环境变量 (salvage #16933) ([#20217](https://github.com/NousResearch/hermes-agent/pull/20217))
- 修复:确定性线程驱逐策略保留最新条目 (salvage #13639) ([#20285](https://github.com/NousResearch/hermes-agent/pull/20285))
- 修复:仅安装系统级单元时不使设置向导陷入死胡同 ([#20905](https://github.com/NousResearch/hermes-agent/pull/20905))
- 修复:等待 systemd 重启就绪 + 强化 Discord 斜杠命令同步 ([#20949](https://github.com/NousResearch/hermes-agent/pull/20949))
- 修复:避免 Responses 历史记录重复 (salvage #18995) ([#21185](https://github.com/NousResearch/hermes-agent/pull/21185))
- 修复:将引导失败信息输出至 stderr (salvage #21157) ([#21278](https://github.com/NousResearch/hermes-agent/pull/21278))
- 修复:记录代理任务失败日志,而非静默丢失使用数据 (salvage #21159) ([#21274](https://github.com/NousResearch/hermes-agent/pull/21274))
- 修复:以速率限制方式记录 runtime-status 写入失败 (salvage #21158) ([#21285](https://github.com/NousResearch/hermes-agent/pull/21285))
- 修复:在每次回退重启前执行 reset-failed,防止网关陷入停滞 ([#21371](https://github.com/NousResearch/hermes-agent/pull/21371))
- 修复:Telegram — 为论坛 General 频道保留 thread_id=1 的输入指示器 ([#21390](https://github.com/NousResearch/hermes-agent/pull/21390))
- 修复:批量关键修复 — 会话恢复、/new 竞态条件、HA WebSocket 方案 (@kshitijk4poor) ([#19182](https://github.com/NousResearch/hermes-agent/pull/19182))
### Telegram
- **DM 用户管理多会话主题** (挽救 #19185) ([#19206](https://github.com/NousResearch/hermes-agent/pull/19206))
### Discord
- **消息删除操作** (挽救 #19052) ([#21197](https://github.com/NousResearch/hermes-agent/pull/21197))
- 修复:允许 `free_response_channels` 覆盖 `DISCORD_IGNORE_NO_MENTION` ([#19629](https://github.com/NousResearch/hermes-agent/pull/19629))
### Slack
- 修复:临时斜杠命令确认、私有通知发送、format_message 修复 (@kshitijk4poor) ([#18198](https://github.com/NousResearch/hermes-agent/pull/18198))
### WhatsApp
- 修复:从环境变量覆盖中加载 WhatsApp 主频道 ([#18190](https://github.com/NousResearch/hermes-agent/pull/18190))
### Feishu
- **运营者可配置的机器人准入与提及策略** ([#18208](https://github.com/NousResearch/hermes-agent/pull/18208))
- 修复:强制 Markdown 表格使用文本模式 (挽救 #13723 by @WuTianyi123) ([#20275](https://github.com/NousResearch/hermes-agent/pull/20275))
### Matrix + Email
- 修复:Matrix 和 Email 上的 `/sethome` 现在重启后依然保持配置 ([#18272](https://github.com/NousResearch/hermes-agent/pull/18272))
### Teams
- **文档 + 功能:侧边栏 + 线程支持及群聊回退机制** ([#20042](https://github.com/NousResearch/hermes-agent/pull/20042))
### Weixin
- 修复:通过内容指纹对微信消息进行去重 ([#19742](https://github.com/NousResearch/hermes-agent/pull/19742))
### QQBot
- **引入 SDK 改进 — 分块上传、审批键盘、引用附件** ([#21342](https://github.com/NousResearch/hermes-agent/pull/21342))
- **通过内联键盘实现原生工具审批交互体验** ([#21353](https://github.com/NousResearch/hermes-agent/pull/21353))
---
## 🏗️ 核心代理与架构
### 提供商与模型支持
#### 可插拔提供商
- **ProviderProfile ABC + `plugins/model-providers/`** — 推理提供商现已成为可插拔接口 (挽救 #14424) ([#20324](https://github.com/NousResearch/hermes-agent/pull/20324))
- **`list_picker_providers`** — 凭据过滤的选择器 (挽救 #13561) ([#20298](https://github.com/NousResearch/hermes-agent/pull/20298))
- **移除 `/model` 的 `/provider` 别名** ([#20358](https://github.com/NousResearch/hermes-agent/pull/20358))
- **CLI 与插件共享 Hermes dotenv 加载器** (挽救 #13660) ([#20281](https://github.com/NousResearch/hermes-agent/pull/20281))
- **通过共享令牌存储实现跨配置文件的 Nous OAuth 持久化** ([#19712](https://github.com/NousResearch/hermes-agent/pull/19712))
#### 新模型
- `deepseek/deepseek-v4-pro` 已添加至 OpenRouter + Nous Portal ([#20495](https://github.com/NousResearch/hermes-agent/pull/20495))
- `x-ai/grok-4.3` 已添加至 OpenRouter + Nous Portal ([#20497](https://github.com/NousResearch/hermes-agent/pull/20497))
- `openrouter/owl-alpha`(免费层)已添加至精选 OpenRouter 列表 ([#18071](https://github.com/NousResearch/hermes-agent/pull/18071))
- `tencent/hy3-preview` 付费路由已上线 OpenRouter (@Contentment003111) ([#21077](https://github.com/NousResearch/hermes-agent/pull/21077))
- Arcee Trinity Large Thinking — 温度与压缩覆盖参数 ([#20473](https://github.com/NousResearch/hermes-agent/pull/20473))
- 将 `x-ai/grok-4.20-beta` 重命名为 `x-ai/grok-4.20` ([#19640](https://github.com/NousResearch/hermes-agent/pull/19640))
- 将 Vercel AI Gateway 降级至提供商选择器底部 ([#18112](https://github.com/NousResearch/hermes-agent/pull/18112))
#### 提供商配置
- **OpenRouter — 响应缓存支持** (@kshitijk4poor) ([#19132](https://github.com/NousResearch/hermes-agent/pull/19132))
- **尊重 `config.yaml` 中的 `image_gen.model` 配置** (挽救 #19376) ([#21273](https://github.com/NousResearch/hermes-agent/pull/21273))
- 修复:在委托提供商解析期间尊重运行时默认模型 (@johnncenae) ([#17587](https://github.com/NousResearch/hermes-agent/pull/17587))
- 修复:避免在提供商选择器中探测 Bedrock 凭据 (@helix4u) ([#18998](https://github.com/NousResearch/hermes-agent/pull/18998))
- 修复:丢弃 cron 任务中持久化提供商的过期环境变量覆盖 ([#19627](https://github.com/NousResearch/hermes-agent/pull/19627))
- 修复:将辅助策展人的 api_key/base_url 纳入运行时解析 ([#19421](https://github.com/NousResearch/hermes-agent/pull/19421))
### 代理循环与对话
- **`video_analyze` — 原生视频理解工具** (@alt-glitch) ([#19301](https://github.com/NousResearch/hermes-agent/pull/19301))
- **在状态栏显示上下文压缩计数** (CLI + TUI) ([#21218](https://github.com/NousResearch/hermes-agent/pull/21218))
- **隔离 `get_tool_definitions` quiet_mode 缓存 + 去重 LCM 注入** (#17335) ([#17889](https://github.com/NousResearch/hermes-agent/pull/17889))
- 修复:工具调用循环的警告优先防护机制 ([#18227](https://github.com/NousResearch/hermes-agent/pull/18227))
- 修复:打破由游离工具调用链尾引发的永久空响应循环 ([#21385](https://github.com/NousResearch/hermes-agent/pull/21385))
- 修复:将 ContextVars 传播至并发工具工作线程 (挽救 #16660) ([#18123](https://github.com/NousResearch/hermes-agent/pull/18123))
- 修复:在 CLI、TUI 和网关中展示自我改进审查摘要 ([#18073](https://github.com/NousResearch/hermes-agent/pull/18073))
- 修复:序列化来自 `execute_code` 的并发 `hermes_tools` RPC 调用 ([#17894](https://github.com/NousResearch/hermes-agent/pull/17894), [#17902](https://github.com/NousResearch/hermes-agent/pull/17902))
- 修复:在压缩的令牌估算中包含系统提示词与工具模式 ([#18265](https://github.com/NousResearch/hermes-agent/pull/18265))
### 压缩
- 修复:在去重遍历中跳过非字符串工具内容,以防止 AttributeError ([#19398](https://github.com/NousResearch/hermes-agent/pull/19398))
- 修复:在会话重置时重置 `_summary_failure_cooldown_until` ([#19622](https://github.com/NousResearch/hermes-agent/pull/19622))
- 修复:在模型不可用错误之外,对超时错误也触发降级机制 ([#19665](https://github.com/NousResearch/hermes-agent/pull/19665))
- 修复:`_prune_old_tool_results` 的边界方向 ([#19725](https://github.com/NousResearch/hermes-agent/pull/19725))
- 修复:柔化内容过滤器的摘要提示词(挽救 #19456) ([#21302](https://github.com/NousResearch/hermes-agent/pull/21302))
### 委托
- 修复:在 `_build_child_agent` 中继承父级的 fallback_chain ([#19601](https://github.com/NousResearch/hermes-agent/pull/19601))
- 修复:防御 `config.yaml` 中 `delegation: null` 对 `_load_config()` 的影响 ([#19662](https://github.com/NousResearch/hermes-agent/pull/19662))
- 修复:当仅设置 `delegation.base_url` 而未设置 `delegation.api_key` 时,继承父级 api_key ([#19741](https://github.com/NousResearch/hermes-agent/pull/19741))
- 修复:在求交集前展开复合工具集(挽救 #19455) ([#21300](https://github.com/NousResearch/hermes-agent/pull/21300))
- 修复:更正 ACP 文档 — Claude Code CLI 没有 --acp 参数(挽救 #19058) ([#21201](https://github.com/NousResearch/hermes-agent/pull/21201))
### 会话与记忆
- **Hindsight — 探测 API 以支持 `update_mode='append'` 实现跨进程去重** (@nicoloboschi) ([#20222](https://github.com/NousResearch/hermes-agent/pull/20222))
### 策展模块
- **新增 `hermes curator archive` 和 `prune` 子命令** ([#20200](https://github.com/NousResearch/hermes-agent/pull/20200))
- **新增 `hermes curator list-archived`** (#20651) ([#21236](https://github.com/NousResearch/hermes-agent/pull/21236))
- **支持同步手动执行 `hermes curator run`** (#20555) ([#21216](https://github.com/NousResearch/hermes-agent/pull/21216))
- 修复:在状态中保留 `last_report_path` ([#18169](https://github.com/NousResearch/hermes-agent/pull/18169))
- 修复:合并后重写定时任务技能引用 ([#18253](https://github.com/NousResearch/hermes-agent/pull/18253))
- 修复:推迟首次运行 + `--dry-run` 预览 (#18373) ([#18389](https://github.com/NousResearch/hermes-agent/pull/18389))
- 修复:删除时权威处理 `absorbed_into` + 回滚时恢复定时任务技能链接 (#18671) ([#18731](https://github.com/NousResearch/hermes-agent/pull/18731))
- 修复:防止子字符串匹配导致误合并 ([#19573](https://github.com/NousResearch/hermes-agent/pull/19573))
- 修复:仅对后台审查的沉淀记录标记为 agent-created ([#19621](https://github.com/NousResearch/hermes-agent/pull/19621))
- 修复:通过 frontmatter 名称保护 hub 技能 ([#20194](https://github.com/NousResearch/hermes-agent/pull/20194))
---
## 🔧 工具系统
### 文件工具
- **在 `write_file` 和 `patch` 后执行增量代码检查** — 针对 Python、JSON、YAML、TOML 的进程内检查器 ([#20191](https://github.com/NousResearch/hermes-agent/pull/20191))
### 定时任务
- **`no_agent` 模式 — 仅脚本的定时任务(看门狗模式)** ([#19709](https://github.com/NousResearch/hermes-agent/pull/19709))
- **`context_from` 链式调用文档** (挽救 #15724) ([#20394](https://github.com/NousResearch/hermes-agent/pull/20394))
- 修复:将非字典来源视为缺失,避免调度周期 (tick) 崩溃 ([#19283](https://github.com/NousResearch/hermes-agent/pull/19283))
- 修复:定时任务加载技能时增加技能使用计数 ([#19433](https://github.com/NousResearch/hermes-agent/pull/19433))
- 修复:恢复 `next_run_at` 为 null 的任务 ([#19576](https://github.com/NousResearch/hermes-agent/pull/19576))
- 修复:当 prerun 脚本无输出时跳过 AI 调用 ([#19628](https://github.com/NousResearch/hermes-agent/pull/19628))
- 修复:在任务执行期间展开 config.yaml 引用 ([#19872](https://github.com/NousResearch/hermes-agent/pull/19872))
- 修复:序列化 `get_due_jobs` 写入操作,防止并行状态损坏 ([#19874](https://github.com/NousResearch/hermes-agent/pull/19874))
- 修复:在构建 cron AIAgent 之前初始化 MCP 服务器 ([#21354](https://github.com/NousResearch/hermes-agent/pull/21354))
### MCP
- **支持 SSE 传输** (salvage #19135) ([#21227](https://github.com/NousResearch/hermes-agent/pull/21227))
- **转发 OAuth 认证 + 在 SSE 传输中提高 `sse_read_timeout`** ([#21323](https://github.com/NousResearch/hermes-agent/pull/21323))
- **将过期的管道传输失败重试为会话过期** ([#21289](https://github.com/NousResearch/hermes-agent/pull/21289))
- **将图像工具结果以 MEDIA 标签形式展示,而非直接丢弃** ([#21328](https://github.com/NousResearch/hermes-agent/pull/21328))
- **向 `_wait_for_lifecycle_event` 添加周期性保活心跳** (salvage #17016) ([#20209](https://github.com/NousResearch/hermes-agent/pull/20209))
- 修复:在会话终止时重新连接 ([#19380](https://github.com/NousResearch/hermes-agent/pull/19380))
- 修复:将 AnyUrl 导入与 mcp 依赖解耦 ([#19695](https://github.com/NousResearch/hermes-agent/pull/19695))
- 修复:`mcp add --command` 获取独立的 argparse 目标参数 ([#21204](https://github.com/NousResearch/hermes-agent/pull/21204))
- 修复:在 MCP 发现前清除过期的线程中断 ([#21276](https://github.com/NousResearch/hermes-agent/pull/21276))
- 修复:在 MCP 调用错误中报告配置的超时时间 ([#21281](https://github.com/NousResearch/hermes-agent/pull/21281))
- 修复:当 `str(exc)` 为空时,在错误消息中包含异常类型 (salvage #19425) ([#21292](https://github.com/NousResearch/hermes-agent/pull/21292))
- 修复:在 `MCPServerTask.run` 中显式重新抛出 CancelledError ([#21318](https://github.com/NousResearch/hermes-agent/pull/21318))
- 修复:在 `mcp_serve` 中防御性地强制转换数字工具参数 ([#21329](https://github.com/NousResearch/hermes-agent/pull/21329))
- 修复:根据服务器声明的能力限制实用程序存根 ([#21347](https://github.com/NousResearch/hermes-agent/pull/21347))
### 浏览器
- 修复:允许在不使用本地 agent-browser 的情况下显式覆盖 CDP ([#19670](https://github.com/NousResearch/hermes-agent/pull/19670))
- 修复:为 root 用户及 AppArmor 用户命名空间限制注入 `--no-sandbox` ([#19747](https://github.com/NousResearch/hermes-agent/pull/19747))
- 修复:收紧 Lightpanda 回退机制的边缘情况 (@kshitijk4poor) ([#20672](https://github.com/NousResearch/hermes-agent/pull/20672))
### Web 工具
- **按能力选择后端 —— 搜索/提取分离** (@kshitijk4poor) ([#20061](https://github.com/NousResearch/hermes-agent/pull/20061))
- **SearXNG 原生仅搜索后端** (@kshitijk4poor) ([#20823](https://github.com/NousResearch/hermes-agent/pull/20823))
### 审批 / 工具门控
- 修复:在会话清理时唤醒被阻塞的网关审批 ([#18171](https://github.com/NousResearch/hermes-agent/pull/18171))
- 修复:增强 YOLO 模式的环境变量解析,防止引号包裹的布尔字符串 ([#18214](https://github.com/NousResearch/hermes-agent/pull/18214))
- 修复:扩展敏感写入目标范围,涵盖 shell RC 文件和凭证文件 ([#19282](https://github.com/NousResearch/hermes-agent/pull/19282))
---
## 🔌 插件系统
- **`transform_llm_output` 插件钩子** (salvage of #20813) ([#21235](https://github.com/NousResearch/hermes-agent/pull/21235))
- **文档化 `env_enablement_fn` + `cron_deliver_env_var` 平台插件钩子** ([#21331](https://github.com/NousResearch/hermes-agent/pull/21331))
- **可插拔表面覆盖范围 —— 模型提供商指南、完整插件地图、可选修复** ([#20749](https://github.com/NousResearch/hermes-agent/pull/20749))
- **插件开发空白 —— 图像生成提供商指南 + 发布技能 tap** ([#20800](https://github.com/NousResearch/hermes-agent/pull/20800))
---
## 🧩 技能生态
### 新增可选技能
- **Shopify** —— 管理后台 + 商店前端 GraphQL 可选技能 ([#18116](https://github.com/NousResearch/hermes-agent/pull/18116))
- **here.now** —— 可选技能 ([#18170](https://github.com/NousResearch/hermes-agent/pull/18170))
- **shop-app** —— 个人购物助手(可选) ([#20702](https://github.com/NousResearch/hermes-agent/pull/20702))
- **Anthropic 金融服务套件** —— 移植为可选金融技能 ([#21180](https://github.com/NousResearch/hermes-agent/pull/21180))
- **kanban-video-orchestrator** —— 创意可选技能 (@SHL0MS) ([#19281](https://github.com/NousResearch/hermes-agent/pull/19281))
- **searxng-search** —— 可选技能 + Web Search + Extract 文档页 (@kshitijk4poor) ([#20841](https://github.com/NousResearch/hermes-agent/pull/20841), [#20844](https://github.com/NousResearch/hermes-agent/pull/20844))
### 技能用户体验
- **Linear 技能 —— 新增文档支持 + Python 辅助脚本** ([#20752](https://github.com/NousResearch/hermes-agent/pull/20752))
- **现代化 Obsidian 技能以使用文件工具** (salvage #19332) ([#20413](https://github.com/NousResearch/hermes-agent/pull/20413))
- **将自定义工具创建默认指向插件** (@kshitijk4poor) ([#19755](https://github.com/NousResearch/hermes-agent/pull/19755))
- **skill_commands 缓存 —— 在平台作用域变更时重新扫描** (salvage #14570 by @LeonSGP43) ([#18739](https://github.com/NousResearch/hermes-agent/pull/18739))
- **技能 —— skill_commands 缓存中的额外重新扫描路径** (salvage #19042) ([#21181](https://github.com/NousResearch/hermes-agent/pull/21181))
- 修复:`extract_skill_conditions` 中非字典元数据的回归测试 ([#18213](https://github.com/NousResearch/hermes-agent/pull/18213))
- 文档:解释恢复内置技能 (salvage #19254) ([#20404](https://github.com/NousResearch/hermes-agent/pull/20404))
- 文档:文档化 `hermes skills reset` 子命令 (salvage #11544) ([#20395](https://github.com/NousResearch/hermes-agent/pull/20395))
- 文档:himalaya v1.2.0 `folder.aliases` 语法 ([#19882](https://github.com/NousResearch/hermes-agent/pull/19882))
- 将代理指向 `hermes-agent` 技能 + 文档站点同步 ([#20390](https://github.com/NousResearch/hermes-agent/pull/20390))
---
## 🖥️ CLI 与用户体验
### CLI
- **`/new` 接受可选的会话名称参数**(由 #19555 恢复)([#19637](https://github.com/NousResearch/hermes-agent/pull/19637))
- **新增 100 条 CLI 启动提示** ([#20168](https://github.com/NousResearch/hermes-agent/pull/20168))
- **`display.language` — 静态消息翻译**(支持中/日/德/西语)([#20231](https://github.com/NousResearch/hermes-agent/pull/20231))
- **法语 (fr) 区域设置** (@Foolafroos) ([#20329](https://github.com/NousResearch/hermes-agent/pull/20329))
- **乌克兰语 (uk) 区域设置** ([#20467](https://github.com/NousResearch/hermes-agent/pull/20467))
- **土耳其语 (tr) 区域设置** ([#20474](https://github.com/NousResearch/hermes-agent/pull/20474))
- 修复:调整大小后恢复经典 CLI 输出 (@helix4u) ([#20444](https://github.com/NousResearch/hermes-agent/pull/20444))
- 修复:将绝对路径补全为路径 (@helix4u) ([#19930](https://github.com/NousResearch/hermes-agent/pull/19930))
- 修复:解决延迟会话创建的回归问题(#18370 的后续影响)(@alt-glitch) ([#20363](https://github.com/NousResearch/hermes-agent/pull/20363))
- 修复:本地后端 CLI 始终使用启动目录 (@alt-glitch) ([#19334](https://github.com/NousResearch/hermes-agent/pull/19334))
- 重构:移除无效的 c-S-c 快捷键绑定(#19895 的后续)([#19919](https://github.com/NousResearch/hermes-agent/pull/19919))
### TUI (Ink)
- **`/model` 选择器重构以匹配 `hermes model` 并支持内联认证** (@austinpickett) ([#18117](https://github.com/NousResearch/hermes-agent/pull/18117))
- **启动横幅中的可折叠区域** — 技能、系统提示词、MCP (@kshitijk4poor) ([#20625](https://github.com/NousResearch/hermes-agent/pull/20625))
- **在状态栏显示上下文压缩计数** ([#21218](https://github.com/NousResearch/hermes-agent/pull/21218))
- 性能:通过聚焦选择器减少覆盖层渲染抖动 (@OutThisLife) ([#20393](https://github.com/NousResearch/hermes-agent/pull/20393))
- 修复:恢复语音按键说话功能的一致性(由 @Montbra 恢复的 #16189)(@OutThisLife) ([#20897](https://github.com/NousResearch/hermes-agent/pull/20897))
- 修复:看板按钮 (@austinpickett) ([#18358](https://github.com/NousResearch/hermes-agent/pull/18358))
### Dashboard
- **插件页面 — 管理、启用/禁用、认证状态** (@austinpickett) ([#18095](https://github.com/NousResearch/hermes-agent/pull/18095))
- **配置文件管理页面** (@vincez-hms-coder) ([#16419](https://github.com/NousResearch/hermes-agent/pull/16419))
- **分析表格中的交互式列排序** ([#18192](https://github.com/NousResearch/hermes-agent/pull/18192))
- **内置 `default-large` 主题,基础字号 18px** ([#20820](https://github.com/NousResearch/hermes-agent/pull/20820))
- **支持通过 `X-Forwarded-Prefix` 在 URL 前缀下提供服务**(由 #19450 恢复)([#21296](https://github.com/NousResearch/hermes-agent/pull/21296))
- **在 Docker 中通过 `HERMES_DASHBOARD=1` 将仪表盘作为子进程启动** (@benbarclay) ([#19540](https://github.com/NousResearch/hermes-agent/pull/19540))
- 修复:仪表盘主题布局偏移 (@AllardQuek) ([#17232](https://github.com/NousResearch/hermes-agent/pull/17232))
- 修复:网关模型选择器当前上下文 (@helix4u) ([#20513](https://github.com/NousResearch/hermes-agent/pull/20513))
### 更新与设置
- **`hermes update --yes/-y` 跳过交互式提示** ([#18261](https://github.com/NousResearch/hermes-agent/pull/18261))
- **更新后重启手动配置的配置文件网关** ([#18178](https://github.com/NousResearch/hermes-agent/pull/18178))
### 配置文件
- **创建空配置文件时使用 `--no-skills` 参数** ([#20986](https://github.com/NousResearch/hermes-agent/pull/20986))
---
## 🎵 语音、图像与媒体
- **xAI 自定义语音 — 语音克隆** (@alt-glitch) ([#18776](https://github.com/NousResearch/hermes-agent/pull/18776))
- **成就系统 — 解锁徽章时渲染分享卡片** ([#19657](https://github.com/NousResearch/hermes-agent/pull/19657))
- **网关启动时刷新 systemd 单元(不仅限于启动/重启)** (@alt-glitch) ([#19684](https://github.com/NousResearch/hermes-agent/pull/19684))
---
## 🔗 API 服务器与远程访问
- **`X-Hermes-Session-Key` 请求头用于长期记忆作用域控制**(关闭 #20060)([#20199](https://github.com/NousResearch/hermes-agent/pull/20199))
---
## 🧰 ACP 适配器(VS Code / Zed / JetBrains)
- **`/steer` 和 `/queue` 斜杠命令** (@HenkDz) ([#18114](https://github.com/NousResearch/hermes-agent/pull/18114))
- 修复:为 WSL 会话转换 Windows 当前工作目录(由 #18128 恢复)([#18233](https://github.com/NousResearch/hermes-agent/pull/18233))
- 修复:在空闲会话中将 `/steer` 作为常规提示运行 ([#18258](https://github.com/NousResearch/hermes-agent/pull/18258))
- 修复:将 Zed 思考路由至推理模块 + 优化工具/上下文渲染 ([#19139](https://github.com/NousResearch/hermes-agent/pull/19139))
- 修复:通过 `replace_messages` 实现原子化会话持久化(由 #13675 恢复)([#20279](https://github.com/NousResearch/hermes-agent/pull/20279))
- 修复:在会话持久化中保留助手推理元数据(由 #13575 恢复)([#20296](https://github.com/NousResearch/hermes-agent/pull/20296))
- 文档:更新 ACP 客户端扩展的 VS Code 设置指南(由 #12495 恢复)([#20433](https://github.com/NousResearch/hermes-agent/pull/20433))
---
## 🐳 Docker
- **通过 `HERMES_DASHBOARD=1` 将仪表盘作为子进程启动** (@benbarclay) ([#19540](https://github.com/NousResearch/hermes-agent/pull/19540))
- **拒绝在官方镜像中以 root 身份运行网关** (salvage #19215) ([#21250](https://github.com/NousResearch/hermes-agent/pull/21250))
- **将运行时 `node_modules` 目录的所有权归属给 hermes 用户** (salvage #19303) ([#21267](https://github.com/NousResearch/hermes-agent/pull/21267))
- 修复:从构建上下文中排除 compose/profile 运行时状态 ([#19626](https://github.com/NousResearch/hermes-agent/pull/19626))
- CI:不取消重叠的构建,保护 `:latest` 标签 (@ethernet8023) ([#20890](https://github.com/NousResearch/hermes-agent/pull/20890))
- 测试:使 Dockerfile 契约测试与简化的 TUI 流程对齐 (salvage #19024) ([#21174](https://github.com/NousResearch/hermes-agent/pull/21174))
- 文档:连接本地推理服务器 (vLLM, Ollama) (salvage #12335) ([#20407](https://github.com/NousResearch/hermes-agent/pull/20407))
- 文档:记录 `API_SERVER_*` 环境变量 (salvage #11758) ([#20409](https://github.com/NousResearch/hermes-agent/pull/20409))
- 文档:明确 Docker 终端后端为单个持久化容器 ([#20003](https://github.com/NousResearch/hermes-agent/pull/20003))
---
## 🐛 显著修复
### Agent
- 修复:恢复延迟会话创建的回归问题 (#18370 后续影响) (@alt-glitch) ([#20363](https://github.com/NousResearch/hermes-agent/pull/20363))
- 修复:将 ContextVars 传播至并发工具工作线程 (salvage #16660) ([#18123](https://github.com/NousResearch/hermes-agent/pull/18123))
- 修复:优先警告的工具调用循环护栏机制 ([#18227](https://github.com/NousResearch/hermes-agent/pull/18227))
- 修复:在 CLI、TUI 和网关中展示自我改进审查摘要 ([#18073](https://github.com/NousResearch/hermes-agent/pull/18073))
### Gateway streaming
- 修复:增强 StreamingConfig 布尔值与数值强制转换的健壮性 (@simbam99) ([#16463](https://github.com/NousResearch/hermes-agent/pull/16463))
### Model
- 修复:在提供商选择器中避免触发 Bedrock 凭证探测 (@helix4u) ([#18998](https://github.com/NousResearch/hermes-agent/pull/18998))
### Doctor
- 修复:未找到本地安装时检查全局 agent-browser ([#19671](https://github.com/NousResearch/hermes-agent/pull/19671))
- 测试:kimi-coding-cn 提供商验证回归测试 ([#19734](https://github.com/NousResearch/hermes-agent/pull/19734))
### Update
- 修复:修补真实流上的 `isatty` 以解决 xdist 不稳定的 `--yes` 测试 (salvage #19026) ([#21175](https://github.com/NousResearch/hermes-agent/pull/21175))
- 修复:使重启模拟机制知晓更新后的幸存者清理流程 (salvage #19031) ([#21177](https://github.com/NousResearch/hermes-agent/pull/21177))
### Auth
- 修复:acp 保留助手推理元数据 ([#20296](https://github.com/NousResearch/hermes-agent/pull/20296))
### Redact
- 修复:添加 `code_file` 参数以跳过 ENV/JSON 模式的误报 ([#19715](https://github.com/NousResearch/hermes-agent/pull/19715))
### Email
- 修复:工具邮件路径中的引号相对文件拖放路径及 Date 头 ([#19646](https://github.com/NousResearch/hermes-agent/pull/19646))
---
## 🧪 测试
- **ACP — 在 MCP 端到端模拟中接受提示词持久化参数** (@stephenschoettler) ([#18047](https://github.com/NousResearch/hermes-agent/pull/18047))
- **工具集 — 在 #17805 后的预期工具集断言中包含看板** (@briandevans) ([#18122](https://github.com/NousResearch/hermes-agent/pull/18122))
- **智能体 — 覆盖最大迭代次数摘要消息的清理逻辑** ([#19580](https://github.com/NousResearch/hermes-agent/pull/19580))
- **run_agent — 为 `_coerce_number` 添加 `-inf` 和 `nan` 的回归测试覆盖** ([#19703](https://github.com/NousResearch/hermes-agent/pull/19703))
---
## 📚 文档
### 重大文档新增
- **`llms.txt` + `llms-full.txt` —— 面向 Agent 的文档摄入** ([#18276](https://github.com/NousResearch/hermes-agent/pull/18276))
- **用户故事与用例合集页面** ([#18282](https://github.com/NousResearch/hermes-agent/pull/18282))
- **持久目标(/goal)功能页面** ([#18275](https://github.com/NousResearch/hermes-agent/pull/18275))
- **Windows (WSL2) 指南扩展** —— 文件系统、网络、服务及常见陷阱 ([#20748](https://github.com/NousResearch/hermes-agent/pull/20748))
- **中文(zh-CN)README 翻译** (抢救 #13508) ([#20431](https://github.com/NousResearch/hermes-agent/pull/20431))
- **zh-Hans Docusaurus 语言包** + 工具网关 / 图像生成 / WSL 快速入门翻译 (抢救 #11728) ([#20430](https://github.com/NousResearch/hermes-agent/pull/20430))
- **工具网关文档重构** —— 以功能说明为首,配置移至底部 ([#20827](https://github.com/NousResearch/hermes-agent/pull/20827))
- **快速入门 —— Onchain AI Garage Hermes 教程播放列表** ([#20192](https://github.com/NousResearch/hermes-agent/pull/20192))
- **Open WebUI 引导脚本** (抢救 #9566) ([#20427](https://github.com/NousResearch/hermes-agent/pull/20427))
- **本地 Ollama 配置指南** (抢救 #5842) ([#20426](https://github.com/NousResearch/hermes-agent/pull/20426))
- **Google Gemini 指南** (抢救 #17450) ([#20401](https://github.com/NousResearch/hermes-agent/pull/20401))
- **/model 命令的自定义模型别名** ([#20475](https://github.com/NousResearch/hermes-agent/pull/20475))
- **通过 `custom_providers` 实现 Together/Groq/Perplexity 示例指南** (抢救 #15214) ([#20400](https://github.com/NousResearch/hermes-agent/pull/20400))
- **豆包语音集成示例** (TTS + STT) (抢救 #18065) ([#20418](https://github.com/NousResearch/hermes-agent/pull/20418))
- **WSL 到 Windows Chrome 的 MCP 桥接** (抢救 #8313) ([#20428](https://github.com/NousResearch/hermes-agent/pull/20428))
- **Hermes 技能文档同步** —— 斜杠命令 + 持久系统章节 ([#20390](https://github.com/NousResearch/hermes-agent/pull/20390))
- **AGENTS.md —— 策展人/定时任务/委托/工具集 + 修复插件树** ([#20226](https://github.com/NousResearch/hermes-agent/pull/20226))
- **Bedrock 快速入门条目 + 降级注释 + 部署链接** (抢救 #11093) ([#20397](https://github.com/NousResearch/hermes-agent/pull/20397))
### 文档优化
- 将展开的技能树折叠为单个 Skills 节点 ([#18259](https://github.com/NousResearch/hermes-agent/pull/18259))
- 明确 `session_search` 辅助模型文档 ([#19593](https://github.com/NousResearch/hermes-agent/pull/19593))
- 补全 Open WebUI 快速设置文档 ([#19654](https://github.com/NousResearch/hermes-agent/pull/19654))
- 默认自定义工具创建方式改为插件 (@kshitijk4poor) ([#19755](https://github.com/NousResearch/hermes-agent/pull/19755))
- 明确 Telegram 群聊故障排除指南 (抢救 #18672) ([#20416](https://github.com/NousResearch/hermes-agent/pull/20416))
- 明确 Codex OAuth 认证前置条件 (抢救 #18688) ([#20417](https://github.com/NousResearch/hermes-agent/pull/20417))
- Discord 服务器成员意图 + SSRC 映射漂移 + /voice 加入斜杠命令选项 (抢救 #11350) ([#20411](https://github.com/NousResearch/hermes-agent/pull/20411))
- 补充 `ctx.dispatch_tool()` 文档 (抢救 #10955) ([#20391](https://github.com/NousResearch/hermes-agent/pull/20391))
- 补充 `hermes webhook subscribe --deliver-only` 文档 (抢救 #12612) ([#20392](https://github.com/NousResearch/hermes-agent/pull/20392))
- 补充 `hermes import` 参考文档 (抢救 #14711) ([#20396](https://github.com/NousResearch/hermes-agent/pull/20396))
- 补充各提供商 TTS `max_text_length` 上限说明 (抢救 #13825) ([#20389](https://github.com/NousResearch/hermes-agent/pull/20389))
- 明确支持的提示词自定义范围 (抢救 #19987) ([#20383](https://github.com/NousResearch/hermes-agent/pull/20383))
- 修正 `web_extract` 摘要器超时注释 (抢救 #20051) ([#20381](https://github.com/NousResearch/hermes-agent/pull/20381))
- 修复降级提供商配置路径 (抢救 #20033) ([#20382](https://github.com/NousResearch/hermes-agent/pull/20382))
- 修正关于 RL 安装扩展的误导性说明 (抢救 #19080) ([#21213](https://github.com/NousResearch/hermes-agent/pull/21213))
- 明确 API 服务器工具执行的本地性 (抢救 #19117) ([#21223](https://github.com/NousResearch/hermes-agent/pull/21223))
- 优先使用 `.venv` 以与 AGENTS.md 和 scripts/run_tests.sh 保持一致 (@xxxigm) ([#21334](https://github.com/NousResearch/hermes-agent/pull/21334))
- 使工具发现与测试运行器与 AGENTS.md 对齐 (@xxxigm) ([#20791](https://github.com/NousResearch/hermes-agent/pull/20791))
- 统一文档与代码中的终端后端数量及命名 (抢救 #19044) ([#20402](https://github.com/NousResearch/hermes-agent/pull/20402))
- 更新过期的平台数量统计 (抢救 #19053) ([#20403](https://github.com/NousResearch/hermes-agent/pull/20403))
---
## 👥 贡献者
### 核心成员
- **@teknium1** —— 抢救、分类、审核、功能开发与版本管理
### 社区顶级贡献者
- **@kshitijk4poor** (21 PRs) — SearXNG 原生搜索后端、按能力选择后端、可折叠的 TUI 启动横幅、Slack 临时确认消息与格式修复、Lightpanda 回退机制加固、searxng-search 可选技能 + Web Search + Extract 文档、默认自定义工具创建改为插件、看板失败列修复
- **@alt-glitch** (13 PRs) — video_analyze 工具、xAI 自定义语音(语音克隆)、本地后端 CLI 启动目录修复、恢复延迟会话创建的回归问题、网关启动时刷新 systemd 单元
- **@OutThisLife** (9 PRs) — TUI 性能优化 — 减少覆盖层渲染开销、语音按键说话(PTT)功能恢复(挽救 @Montbra 的 PR)
- **@helix4u** (6 PRs) — 调整窗口大小后恢复经典 CLI 输出、TUI 绝对路径补全、网关模型选择器当前上下文修复、避免 Bedrock 凭证探测、看板文档修复
- **@ethernet8023** (3 PRs) — Docker CI — 不取消重叠构建、:latest 版本保护
- **@benbarclay** (3 PRs) — Docker — 通过 HERMES_DASHBOARD=1 将仪表盘作为子进程启动
- **@austinpickett** (3 PRs) — 仪表盘插件页面、TUI /model 选择器重构(支持内联认证)、看板按钮修复
- **@sprmn24** (2 PRs) — 贡献者(2 个 PR)
- **@asheriif** (2 PRs) — 贡献者(2 个 PR)
- **@xxxigm** (2 PRs) — 贡献指南文档 — .venv 偏好设置及测试运行器与 AGENTS.md 对齐
- **@stephenschoettler** (1 PR) — ACP — MCP 端到端测试模拟参数
- **@vincez-hms-coder** (1 PR) — 仪表盘 — 配置文件管理页面
- **@cdanis** (1 PR) — 贡献者
- **@briandevans** (1 PR) — 工具集测试 — #17805 之后的看板断言
- **@heyitsaamir** (1 PR) — 贡献者
### 所有贡献者
感谢所有为 v0.13.0 做出贡献的人——包括提交代码、共同创作以及挽救/继承的 PR。一周内共有 295 位贡献者。
@0oAstro, @0xDevNinja, @0xharryriddle, @0xKingBack, @0xsir0000, @0xyg3n, @0z1-ghb, @abhinav11082001-stack,
@acc001k, @acesjohnny, @adamludwin, @adybag14-cyber, @agentlinker, @agilejava, @ai-ag2026, @AJV20,
@alanxchen85, @albert748, @AllardQuek, @alt-glitch, @altmazza0-star, @ambition0802, @amitgaur, @amroessam,
@andrewhosf, @Asce66, @asheriif, @ashermorse, @asimons81, @Aslaaen, @Asunfly, @atongrun, @austinpickett,
@banditburai, @barteqpl, @Bartok9, @Beandon13, @beardthelion, @beibi9966, @benbarclay, @binhnt92, @bjianhang,
@BlackJulySnow, @bobashopcashier, @bogerman1, @Bongulielmi, @Brecht-H, @briandevans, @brooklynnicholson,
@c3115644151, @camaragon, @CashWilliams, @CCClelo, @cdanis, @CES4751, @cg2aigc, @changchun989, @ChanlerDev,
@CharlieKerfoot, @chengoak, @chenyunbo411, @chinadbo, @CIRWEL, @cixuuz, @cmcgrabby-hue, @colorcross,
@Contentment003111, @CoreyNoDream, @counterposition, @curiouscleo, @DaniuXie, @deep-name, @dengtaoyuan450-a11y,
@discodirector, @donramon77, @dpaluy, @ee-blog, @ehz0ah, @el-analista, @elmatadorgh, @EmelyanenkoK,
@Emidomenge, @emozilla, @Es1la, @EthanGuo-coder, @etherman-os, @ethernet8023, @EvilDrag0n, @exxmen, @Fearvox,
@Feranmi10, @firefly, @flobo3, @fmercurio, @Foolafroos, @formulahendry, @franksong2702, @ggnnggez, @GinWU05,
@giwaov, @glesperance, @gnanirahulnutakki, @GodsBoy, @Gosuj, @Grey0202, @guillaumemeyer, @Gutslabs, @h0tp-ftw,
@haidao1919, @halmisen, @happy5318, @hedirman, @helix4u, @hendrixfreire, @HenkDz, @hex-clawd, @heyitsaamir,
@hharry11, @Hinotoi-agent, @holynn-q, @hrkzogw, @Hypn0sis, @Hypnus-Yuan, @ideathinklab01-source, @IMHaoyan,
@Interstellar-code, @ishardo, @jacdevos, @jackey8616, @JanCong, @jasonoutland, @jatingodnani, @JayGwod,
@jethac, @JezzaHehn, @JiaDe-Wu, @jjjojoj, @jkausel-ai, @John-tip, @johnncenae, @jrusso1020, @jslizar,
@JTroyerOvermatch, @julysir, @Junass1, @JustinUssuri, @Kailigithub, @keepcalmqqf, @kiala9, @konsisumer,
@kowenhaoai, @Krionex, @kshitijk4poor, @kyan12, @leavrcn, @leon7609, @LeonSGP43, @leprincep35700, @lhysdl,
@likejudy, @lisanhu, @liu-collab, @liuguangyong93, @liuhao1024, @LucianoSP, @luoyuctl, @luyao618, @M3RCUR2Y,
@maciekczech, @Magicray1217, @magicray1217, @MaHaoHao-ch, @malaiwah, @manateelazycat, @masonjames, @megastary,
@memosr, @MichaelWDanko, @mikeyobrien, @millerc79, @Mind-Dragon, @mioimotoai-lgtm, @misery-hl, @molvikar,
@momowind, @Montbra, @MottledShadow, @mrbob-git, @mrcharlesiv, @mrcoferland, @ms-alan, @mwnickerson,
@nazirulhafiy, @nftpoetrist, @nicoloboschi, @nightq, @nikolay-bratanov, @NikolayGusev-astra, @nocturnum91,
@noOne-list, @nouseman666, @novax635, @npmisantosh, @nudiltoys-cmyk, @olisikh, @oluwadareab12, @Oxidane-bot,
@pama0227, @pander, @pasevin, @paul-tian, @pdonizete, @perlowja, @pingchesu, @PratikRai0101, @priveperfumes,
@probepark, @QifengKuang, @quocanh261997, @qWaitCrypto, @qxxaa, @r266-tech, @rames-jusso, @revaraver,
@Ricardo-M-L, @rob-maron, @Roy-oss1, @rxdxxxx, @SandroHub013, @Sanjays2402, @Sertug17, @shashwatgokhe,
@shellybotmoyer, @SHL0MS, @SimbaKingjoe, @simbam99, @simplenamebox-ops, @socrates1024, @sonic-netizen,
@sprmn24, @steezkelly, @stephen0110, @stephenschoettler, @stevenchanin, @stevenchouai, @stormhierta,
@subtract0, @suncokret12, @swithek, @taeng0204, @TakeshiSawaguchi, @tangyuanjc, @TheEpTic, @thelumiereguy,
@Tkander1715, @tmdgusya, @Tranquil-Flow, @TruaShamu, @UgwujaGeorge, @valda, @vincez-hms-coder, @VinVC,
@vominh1919, @wabrent, @WadydX, @wanazhar, @WanderWang, @warabe1122, @web-dev0521, @WideLee, @willy-scr,
@wmagev, @WuTianyi123, @wxst, @wysie, @Wysie, @xsfX20, @xxxigm, @xyiy001, @YanzhongSu, @ygd58, @Yoimex,
@yuehei, @Yukipukii1, @yuqianma, @YX234, @zeejaytan, @zhanggttry, @zhao0112, @zng8418, @zons-zhaozhy, @Zyproth
---
**完整更新日志**: [v2026.4.30...v2026.5.7](https://github.com/NousResearch/hermes-agent/compare/v2026.4.30...v2026.5.7)
# Hermes Agent v0.13.0 (v2026.5.7)
**Release Date:** May 7, 2026
**Since v0.12.0:** 864 commits · 588 merged PRs · 829 files changed · 128,366 insertions · 282 issues closed (13 P0, 36 P1) · 295 community contributors (including co-authors)
> The Tenacity Release — Hermes Agent now finishes what it starts. Kanban ships as a durable multi-agent board (heartbeat, reclaim, zombie detection, auto-block on incomplete exit, per-task retries, hallucination recovery). `/goal` keeps the agent locked on a target across turns (Ralph loop). Checkpoints v2 rewrites state persistence with real pruning. Gateway auto-resumes interrupted sessions after restart. Cron grows a `no_agent` watchdog mode. A security wave closes 8 P0s — redaction is now ON by default, Discord role-allowlists are guild-scoped, WhatsApp rejects strangers by default, and TOCTOU windows close across auth.json and MCP OAuth. Google Chat becomes the 20th platform. Providers become a pluggable surface. Seven i18n locales ship.
---
## ✨ Highlights
- **Multi-agent Kanban — delegate to an AI team that actually finishes** — Spin up a durable board, drop tasks on it, and let multiple Hermes workers pick them up, hand off, and close them out. Heartbeats, reclaim, zombie detection, retry budgets, and a hallucination gate keep the team honest. One install, many kanbans. ([#17805](https://github.com/NousResearch/hermes-agent/pull/17805), [#19653](https://github.com/NousResearch/hermes-agent/pull/19653), [#20232](https://github.com/NousResearch/hermes-agent/pull/20232), [#20332](https://github.com/NousResearch/hermes-agent/pull/20332), [#21330](https://github.com/NousResearch/hermes-agent/pull/21330), [#21183](https://github.com/NousResearch/hermes-agent/pull/21183), [#21214](https://github.com/NousResearch/hermes-agent/pull/21214))
- **`/goal` — the agent doesn't forget what you asked it to do** — Lock the agent onto a target and it stays on task across turns. The Ralph loop as a first-class primitive. ([#18262](https://github.com/NousResearch/hermes-agent/pull/18262), [#18275](https://github.com/NousResearch/hermes-agent/pull/18275), [#21287](https://github.com/NousResearch/hermes-agent/pull/21287))
- **Show it a video** — new `video_analyze` tool for native video understanding on Gemini and compatible multimodal models. (@alt-glitch) ([#19301](https://github.com/NousResearch/hermes-agent/pull/19301))
- **Clone a voice** — xAI Custom Voices lands as a TTS provider with voice cloning support. (@alt-glitch) ([#18776](https://github.com/NousResearch/hermes-agent/pull/18776))
- **Hermes speaks your language** — static gateway + CLI messages translate to 7 locales: Chinese, Japanese, German, Spanish, French, Ukrainian, and Turkish. Docs site gains a Chinese (zh-Hans) locale. ([#20231](https://github.com/NousResearch/hermes-agent/pull/20231), [#20329](https://github.com/NousResearch/hermes-agent/pull/20329), [#20467](https://github.com/NousResearch/hermes-agent/pull/20467), [#20474](https://github.com/NousResearch/hermes-agent/pull/20474), [#20430](https://github.com/NousResearch/hermes-agent/pull/20430), [#20431](https://github.com/NousResearch/hermes-agent/pull/20431))
- **Google Chat — the 20th messaging platform** — plus a generic platform-plugin hooks surface so third-party adapters drop in without touching core (IRC and Teams migrated). ([#21306](https://github.com/NousResearch/hermes-agent/pull/21306), [#21331](https://github.com/NousResearch/hermes-agent/pull/21331))
- **Sessions survive restarts** — gateway bounces mid-agent, `/update` restarts, source-file reloads — conversations auto-resume when the gateway comes back. ([#21192](https://github.com/NousResearch/hermes-agent/pull/21192))
- **Security wave — 8 P0 closures** — redaction ON by default, Discord role-allowlists guild-scoped (CVSS 8.1 cross-guild DM bypass closed), WhatsApp rejects strangers by default, TOCTOU windows closed across `auth.json` and MCP OAuth, browser enforces cloud-metadata SSRF floor, cron prompt-injection scans assembled skill content, `hermes debug share` redacts at upload. ([#21193](https://github.com/NousResearch/hermes-agent/pull/21193), [#21241](https://github.com/NousResearch/hermes-agent/pull/21241), [#21291](https://github.com/NousResearch/hermes-agent/pull/21291), [#21176](https://github.com/NousResearch/hermes-agent/pull/21176), [#21194](https://github.com/NousResearch/hermes-agent/pull/21194), [#21228](https://github.com/NousResearch/hermes-agent/pull/21228), [#21350](https://github.com/NousResearch/hermes-agent/pull/21350), [#19318](https://github.com/NousResearch/hermes-agent/pull/19318))
- **Checkpoints v2** — state persistence rewritten. Real pruning, disk guardrails, no more orphan shadow repos. ([#20709](https://github.com/NousResearch/hermes-agent/pull/20709))
- **The agent lints its own writes** — post-write delta lint on `write_file` + `patch`. Python, JSON, YAML, TOML. Syntax errors surface immediately instead of shipping downstream. ([#20191](https://github.com/NousResearch/hermes-agent/pull/20191))
- **`no_agent` cron mode — script-only watchdog** — cron jobs can now skip the agent entirely and just run a script. Empty stdout is silent, non-empty gets delivered verbatim. ([#19709](https://github.com/NousResearch/hermes-agent/pull/19709))
- **Platform allowlists everywhere** — `allowed_channels` / `allowed_chats` / `allowed_rooms` config across Slack, Telegram, Mattermost, Matrix, and DingTalk. ([#21251](https://github.com/NousResearch/hermes-agent/pull/21251))
- **Providers are now plugins** — `ProviderProfile` ABC + `plugins/model-providers/`. Drop in third-party providers without touching core. ([#20324](https://github.com/NousResearch/hermes-agent/pull/20324))
- **API server — long-term memory per session** — `X-Hermes-Session-Key` header gives memory providers a stable session identifier. ([#20199](https://github.com/NousResearch/hermes-agent/pull/20199))
- **MCP levels up** — SSE transport with OAuth forwarding, stale-pipe retries, image results surface as MEDIA tags instead of getting dropped, keepalive on long-lived lifecycle waits. ([#21227](https://github.com/NousResearch/hermes-agent/pull/21227), [#21323](https://github.com/NousResearch/hermes-agent/pull/21323), [#21289](https://github.com/NousResearch/hermes-agent/pull/21289), [#21328](https://github.com/NousResearch/hermes-agent/pull/21328), [#20209](https://github.com/NousResearch/hermes-agent/pull/20209))
- **Curator grows subcommands** — `hermes curator archive`, `prune`, `list-archived`. Manual `hermes curator run` is synchronous now — you see results without polling. ([#20200](https://github.com/NousResearch/hermes-agent/pull/20200), [#21236](https://github.com/NousResearch/hermes-agent/pull/21236), [#21216](https://github.com/NousResearch/hermes-agent/pull/21216))
- **ACP — `/steer` and `/queue`** — direct the in-flight agent or queue follow-ups from Zed, VS Code, or JetBrains. Plus atomic session persistence and reasoning-metadata preservation across restarts. (@HenkDz) ([#18114](https://github.com/NousResearch/hermes-agent/pull/18114), [#20279](https://github.com/NousResearch/hermes-agent/pull/20279), [#20296](https://github.com/NousResearch/hermes-agent/pull/20296), [#20433](https://github.com/NousResearch/hermes-agent/pull/20433))
- **TUI glow-up** — `/model` picker matches `hermes model` with inline auth (@austinpickett), collapsible startup banner sections (@kshitijk4poor), context-compression counter in the status bar. ([#18117](https://github.com/NousResearch/hermes-agent/pull/18117), [#20625](https://github.com/NousResearch/hermes-agent/pull/20625), [#21218](https://github.com/NousResearch/hermes-agent/pull/21218))
- **Dashboard grows up** — Plugins page (manage, enable/disable, auth status) (@austinpickett), Profiles management page (@vincez-hms-coder), sortable analytics tables, reverse-proxy support via `X-Forwarded-Prefix`, new `default-large` 18px theme. ([#18095](https://github.com/NousResearch/hermes-agent/pull/18095), [#16419](https://github.com/NousResearch/hermes-agent/pull/16419), [#18192](https://github.com/NousResearch/hermes-agent/pull/18192), [#21296](https://github.com/NousResearch/hermes-agent/pull/21296), [#20820](https://github.com/NousResearch/hermes-agent/pull/20820))
- **SearXNG + split web tools** — SearXNG ships as a native search-only backend; web tools now let you pick different backends per capability (search vs extract vs browse). (@kshitijk4poor) ([#20823](https://github.com/NousResearch/hermes-agent/pull/20823), [#20061](https://github.com/NousResearch/hermes-agent/pull/20061), [#20841](https://github.com/NousResearch/hermes-agent/pull/20841))
- **OpenRouter response caching** — explicit cache control for models that expose it. (@kshitijk4poor) ([#19132](https://github.com/NousResearch/hermes-agent/pull/19132))
- **`[[as_document]]` — skill media-routing directive** — skills can force the gateway to deliver output as a document on platforms that support it. ([#21210](https://github.com/NousResearch/hermes-agent/pull/21210))
- **`transform_llm_output` plugin hook** — new lifecycle hook that lets plugins reshape or filter LLM output before it hits the conversation. Useful for context-window reducers and content filters. ([#21235](https://github.com/NousResearch/hermes-agent/pull/21235))
- **Nous OAuth persists across profiles** — shared token store: sign in once, every profile inherits the session. ([#19712](https://github.com/NousResearch/hermes-agent/pull/19712))
- **QQBot — native approval keyboards** — feature parity with Telegram / Discord approval UX. Chunked upload, quoted attachments. ([#21342](https://github.com/NousResearch/hermes-agent/pull/21342), [#21353](https://github.com/NousResearch/hermes-agent/pull/21353))
- **6 new optional skills** — Shopify (Admin + Storefront GraphQL), here.now, shop-app personal shopping assistant, Anthropic financial-services bundle, kanban-video-orchestrator (@SHL0MS), searxng-search (@kshitijk4poor). ([#18116](https://github.com/NousResearch/hermes-agent/pull/18116), [#18170](https://github.com/NousResearch/hermes-agent/pull/18170), [#20702](https://github.com/NousResearch/hermes-agent/pull/20702), [#21180](https://github.com/NousResearch/hermes-agent/pull/21180), [#19281](https://github.com/NousResearch/hermes-agent/pull/19281), [#20841](https://github.com/NousResearch/hermes-agent/pull/20841))
- **New models** — `deepseek/deepseek-v4-pro`, `x-ai/grok-4.3`, `openrouter/owl-alpha` (free), `tencent/hy3-preview` (@Contentment003111), Arcee Trinity Large Thinking temperature + compression overrides. ([#20495](https://github.com/NousResearch/hermes-agent/pull/20495), [#20497](https://github.com/NousResearch/hermes-agent/pull/20497), [#18071](https://github.com/NousResearch/hermes-agent/pull/18071), [#21077](https://github.com/NousResearch/hermes-agent/pull/21077), [#20473](https://github.com/NousResearch/hermes-agent/pull/20473))
- **100 fresh CLI startup tips** — the random tip banner gets 100 new entries covering cron, kanban, curator, plugins, and lesser-known flags. ([#20168](https://github.com/NousResearch/hermes-agent/pull/20168))
---
## 🧩 Multi-Agent Kanban (Durable)
### New — durable multi-profile collaboration board
- **`feat(kanban): durable multi-profile collaboration board`** — post-revert reimplementation, multi-profile by design ([#17805](https://github.com/NousResearch/hermes-agent/pull/17805))
- **Multi-project boards** — one install, many kanbans ([#19653](https://github.com/NousResearch/hermes-agent/pull/19653), [#19679](https://github.com/NousResearch/hermes-agent/pull/19679))
- **Share board, workspaces, and worker logs across profiles** ([#19378](https://github.com/NousResearch/hermes-agent/pull/19378))
- **Hallucination gate + recovery UX for worker-created-card claims** (closes #20017) ([#20232](https://github.com/NousResearch/hermes-agent/pull/20232))
- **Generic diagnostics engine for task distress signals** ([#20332](https://github.com/NousResearch/hermes-agent/pull/20332))
- **Per-task `max_retries` override** (supersedes #20972) ([#21330](https://github.com/NousResearch/hermes-agent/pull/21330))
- **Multiline textarea for inline-create title** (salvage of #20970) ([#21243](https://github.com/NousResearch/hermes-agent/pull/21243))
### Kanban Dashboard
- **Workspace kind + path inputs in inline create form** ([#19679](https://github.com/NousResearch/hermes-agent/pull/19679))
- **Per-platform home-channel notification toggles** ([#19864](https://github.com/NousResearch/hermes-agent/pull/19864))
- **Sharper home-channel toggle contrast + drop → running action** ([#19916](https://github.com/NousResearch/hermes-agent/pull/19916))
- Fix: reject direct status transition to 'running' via dashboard API (salvage of #19554) ([#19705](https://github.com/NousResearch/hermes-agent/pull/19705))
- Fix: dashboard board pin authoritative over server current file (#20879) ([#21230](https://github.com/NousResearch/hermes-agent/pull/21230))
- Fix: treat dashboard event-stream cancellation as normal shutdown (#20790) ([#21222](https://github.com/NousResearch/hermes-agent/pull/21222))
- Fix: filter dashboard board by selected tenant (#19817) ([#21349](https://github.com/NousResearch/hermes-agent/pull/21349))
- Fix: code/pre styling theme-immune across all themes (#21086) ([#21247](https://github.com/NousResearch/hermes-agent/pull/21247))
- Fix: reset `<code>` background inside dashboard board ([#20687](https://github.com/NousResearch/hermes-agent/pull/20687))
- Fix: preserve dashboard completion summaries + add kanban edit (salvages #20016) ([#20195](https://github.com/NousResearch/hermes-agent/pull/20195))
- Fix: avoid fragile failure-column renames (salvage #20848) (@kshitijk4poor) ([#20855](https://github.com/NousResearch/hermes-agent/pull/20855))
### Worker lifecycle + reliability
- **Heartbeat + reclaim + zombie + retry-cap fixes** (#21147, #21141, #21169, #20881) ([#21183](https://github.com/NousResearch/hermes-agent/pull/21183))
- **Auto-block workers that exit without completing + shutdown race** (#20894) ([#21214](https://github.com/NousResearch/hermes-agent/pull/21214))
- **Detect darwin zombie workers** (salvages #20023) ([#20188](https://github.com/NousResearch/hermes-agent/pull/20188))
- **Unify failure counter across spawn/timeout/crash outcomes** ([#20410](https://github.com/NousResearch/hermes-agent/pull/20410))
- **Enforce worker task-ownership on destructive tool calls** ([#19713](https://github.com/NousResearch/hermes-agent/pull/19713))
- **Drop worker identity claim from KANBAN_GUIDANCE** ([#19427](https://github.com/NousResearch/hermes-agent/pull/19427))
- Fix: skip dispatch for tasks assigned to non-profile lanes (salvages #20105, #20134) ([#20165](https://github.com/NousResearch/hermes-agent/pull/20165))
- Fix: include default profile in on-disk assignee enumeration (salvages #20123) ([#20170](https://github.com/NousResearch/hermes-agent/pull/20170))
- Fix: ignore stale current board pointers (salvages #20063) ([#20183](https://github.com/NousResearch/hermes-agent/pull/20183))
- Fix: profile discovery ignores HERMES_HOME in custom-root deployments (@jackey8616) ([#19020](https://github.com/NousResearch/hermes-agent/pull/19020))
- Fix: allow orchestrator profiles to see kanban tools via toolsets config ([#19606](https://github.com/NousResearch/hermes-agent/pull/19606))
### Batch salvages
- Tier-1 batch — metadata test, max_spawn config, run-id lifecycle guard (salvages #19522 #19556 #19829) ([#20440](https://github.com/NousResearch/hermes-agent/pull/20440))
- Tier-2 batch — doctor, started_at, parent-guard, latest_summary, selects, linked-children ([#20448](https://github.com/NousResearch/hermes-agent/pull/20448))
### Documentation
- Backfill multi-board refs in reference docs ([#19704](https://github.com/NousResearch/hermes-agent/pull/19704))
- Document `/kanban` slash command ([#19584](https://github.com/NousResearch/hermes-agent/pull/19584))
- Document recommended handoff evidence metadata (salvage #19512) ([#20415](https://github.com/NousResearch/hermes-agent/pull/20415))
- Fix orchestrator + worker skill setup instructions (@helix4u) ([#20958](https://github.com/NousResearch/hermes-agent/pull/20958), [#20960](https://github.com/NousResearch/hermes-agent/pull/20960))
---
## 🎯 Persistent Goals, Checkpoints & Session Durability
### `/goal` — persistent cross-turn goals (Ralph loop)
- **`feat: /goal — persistent cross-turn goals`** ([#18262](https://github.com/NousResearch/hermes-agent/pull/18262))
- **Docs page — Persistent Goals (/goal)** ([#18275](https://github.com/NousResearch/hermes-agent/pull/18275))
- Fix: honor configured goal turn budget (salvage #19423) ([#21287](https://github.com/NousResearch/hermes-agent/pull/21287))
### Checkpoints v2
- **Single-store rewrite with real pruning + disk guardrails** ([#20709](https://github.com/NousResearch/hermes-agent/pull/20709))
### Session durability
- **Auto-resume interrupted sessions after gateway restart** (salvage #20888) ([#21192](https://github.com/NousResearch/hermes-agent/pull/21192))
- **Preserve pending update prompts across restarts** ([#20160](https://github.com/NousResearch/hermes-agent/pull/20160))
- **Preserve home-channel thread targets across restart notifications** (salvage #18440) ([#19271](https://github.com/NousResearch/hermes-agent/pull/19271))
- **Preserve thread routing from cached live session sources** ([#21206](https://github.com/NousResearch/hermes-agent/pull/21206))
- **Preserve assistant metadata when branching sessions** ([#18222](https://github.com/NousResearch/hermes-agent/pull/18222))
- **Preserve thread routing for /update progress and prompts** ([#18193](https://github.com/NousResearch/hermes-agent/pull/18193))
- **Preserve document type when merging queued events** ([#18215](https://github.com/NousResearch/hermes-agent/pull/18215))
---
## 🛡️ Security & Reliability
### Security hardening (8 P0 closures)
- **Enable secret redaction by default** (#17691, #20785) ([#21193](https://github.com/NousResearch/hermes-agent/pull/21193))
- **Discord — scope `DISCORD_ALLOWED_ROLES` to originating guild** (#12136, CVSS 8.1) ([#21241](https://github.com/NousResearch/hermes-agent/pull/21241))
- **WhatsApp — reject strangers by default, never respond in self-chat** (#8389) ([#21291](https://github.com/NousResearch/hermes-agent/pull/21291))
- **MCP OAuth — close TOCTOU window when saving credentials** ([#21176](https://github.com/NousResearch/hermes-agent/pull/21176))
- **`hermes_cli/auth.py` — close TOCTOU window in credential writers** ([#21194](https://github.com/NousResearch/hermes-agent/pull/21194))
- **Browser — enforce cloud-metadata SSRF floor in hybrid routing** (#16234) ([#21228](https://github.com/NousResearch/hermes-agent/pull/21228))
- **`hermes debug share` — redact log content at upload time** (@GodsBoy) ([#19318](https://github.com/NousResearch/hermes-agent/pull/19318))
- **Cron — scan assembled prompt including skill content for prompt injection** (#3968) ([#21350](https://github.com/NousResearch/hermes-agent/pull/21350))
- **Restore .env/auth.json/state.db with 0600 perms** ([#19699](https://github.com/NousResearch/hermes-agent/pull/19699))
- **SRI integrity for dashboard plugin scripts** (salvage #19389) ([#21277](https://github.com/NousResearch/hermes-agent/pull/21277))
- **Bind Meet node server to localhost, restrict token file to owner read** ([#19597](https://github.com/NousResearch/hermes-agent/pull/19597))
- **Extend sensitive-write target to cover shell RC and credential files** ([#19282](https://github.com/NousResearch/hermes-agent/pull/19282))
- **Harden YOLO mode env parsing against quoted-bool strings** ([#18214](https://github.com/NousResearch/hermes-agent/pull/18214))
- **OSV-Scanner CI + Dependabot for github-actions only** ([#20037](https://github.com/NousResearch/hermes-agent/pull/20037))
### Reliability — critical bug closures
- **CLI crash on startup — `Invalid key 'c-S-c'`** (P0, prompt_toolkit doesn't support Shift modifier) ([#19895](https://github.com/NousResearch/hermes-agent/pull/19895), [#19919](https://github.com/NousResearch/hermes-agent/pull/19919))
- **CLOSE_WAIT fd leak audit** — httpx keepalive + WhatsApp aiohttp leak + Feishu hygiene (#18451) ([#18766](https://github.com/NousResearch/hermes-agent/pull/18766))
- **Gateway creates AIAgent with empty OpenRouter API key when OPENROUTER_API_KEY is missing** (#20982) — fallback providers correctly honored
- **Background review + curator protected from overwriting bundled/hub skills** (#20273) ([#20194](https://github.com/NousResearch/hermes-agent/pull/20194))
- **TUI compression continuation — ghost sessions with incomplete metadata** (#20001)
- **`hermes mcp add` silently launches chat instead of registering MCP server** (#19785) ([#21204](https://github.com/NousResearch/hermes-agent/pull/21204))
- **Background review agent runtime propagation** — provider/model/credentials now actually inherit from parent
- **Inbound document host paths translated to container paths for Docker backend** (salvage #19048) ([#21184](https://github.com/NousResearch/hermes-agent/pull/21184))
- **Matrix gateway race between auto-redaction and message delivery with high-speed models** (#19075)
- **`/new` during active agent session never sends response on Telegram** (#18912)
---
## 📱 Messaging Platforms (Gateway)
### New platform
- **Google Chat — 20th platform** + generic `env_enablement_fn` / `cron_deliver_env_var` platform-plugin hooks (IRC + Teams migrated) ([#21306](https://github.com/NousResearch/hermes-agent/pull/21306), [#21331](https://github.com/NousResearch/hermes-agent/pull/21331))
### Cross-platform
- **`allowed_{channels,chats,rooms}` whitelist** — Slack (salvage #7401), Telegram, Mattermost, Matrix, DingTalk ([#21251](https://github.com/NousResearch/hermes-agent/pull/21251))
- **Per-platform `gateway_restart_notification` flag** ([#20892](https://github.com/NousResearch/hermes-agent/pull/20892))
- **`busy_ack_enabled` config — suppress ack messages** ([#18194](https://github.com/NousResearch/hermes-agent/pull/18194))
- **Auto-delete slash-command system notices after TTL** ([#18266](https://github.com/NousResearch/hermes-agent/pull/18266))
- **Opt-in cleanup of temporary progress bubbles** ([#21186](https://github.com/NousResearch/hermes-agent/pull/21186))
- **`[[as_document]]` directive — skill media routing** (salvage #19069) ([#21210](https://github.com/NousResearch/hermes-agent/pull/21210))
- **`hermes gateway list` — cross-profile status** (salvage #19129) ([#21225](https://github.com/NousResearch/hermes-agent/pull/21225))
- **Auto-resume interrupted sessions after restart** (salvage #20888) ([#21192](https://github.com/NousResearch/hermes-agent/pull/21192))
- **Atomic restart markers + Windows runtime-lock offset** (#17842) ([#18179](https://github.com/NousResearch/hermes-agent/pull/18179))
- Fix: `config.yaml` wins over `.env` for agent/display/timezone settings ([#18764](https://github.com/NousResearch/hermes-agent/pull/18764))
- Fix: auto-restart when source files change out from under us (#17648) ([#18409](https://github.com/NousResearch/hermes-agent/pull/18409))
- Fix: use git HEAD SHA for stale-code check, not file mtimes ([#19740](https://github.com/NousResearch/hermes-agent/pull/19740))
- Fix: shutdown + restart hygiene — drain timeout, false-fatal, success log ([#18761](https://github.com/NousResearch/hermes-agent/pull/18761))
- Fix: preserve max_turns after env reload (salvage #19183) ([#21240](https://github.com/NousResearch/hermes-agent/pull/21240))
- Fix: exclude ancestor PIDs from gateway process scan ([#19586](https://github.com/NousResearch/hermes-agent/pull/19586))
- Fix: move quick-command alias dispatch before built-ins ([#19588](https://github.com/NousResearch/hermes-agent/pull/19588))
- Fix: show other profiles in 'gateway status' to prevent confusion ([#19582](https://github.com/NousResearch/hermes-agent/pull/19582))
- Fix: include external_dirs skills in Telegram/Discord slash commands (salvage #8790) ([#18741](https://github.com/NousResearch/hermes-agent/pull/18741))
- Fix: match disabled/optional skills by frontmatter slug, not dir name ([#18753](https://github.com/NousResearch/hermes-agent/pull/18753))
- Fix: read /status token totals from SessionDB (#17158) ([#18206](https://github.com/NousResearch/hermes-agent/pull/18206))
- Fix: snapshot callback generation after agent binds it, not before ([#18219](https://github.com/NousResearch/hermes-agent/pull/18219))
- Fix: re-inject topic-bound skill after /new or /reset ([#18205](https://github.com/NousResearch/hermes-agent/pull/18205))
- Fix: isolate pending native image paths by session ([#18202](https://github.com/NousResearch/hermes-agent/pull/18202))
- Fix: clear queued reload skills notes on new/resume/branch ([#19431](https://github.com/NousResearch/hermes-agent/pull/19431))
- Fix: hide required-arg commands from Telegram menu ([#19400](https://github.com/NousResearch/hermes-agent/pull/19400))
- Fix: bridge top-level `require_mention` to Telegram config ([#19429](https://github.com/NousResearch/hermes-agent/pull/19429))
- Fix: suppress duplicate voice transcripts ([#19428](https://github.com/NousResearch/hermes-agent/pull/19428))
- Fix: show friendly error when service is not installed ([#19707](https://github.com/NousResearch/hermes-agent/pull/19707))
- Fix: read context_length from custom_providers in session info header ([#19708](https://github.com/NousResearch/hermes-agent/pull/19708))
- Fix: preserve WSL interop PATH in systemd units ([#19867](https://github.com/NousResearch/hermes-agent/pull/19867))
- Fix: handle planned service stops (salvage #19876) ([#19936](https://github.com/NousResearch/hermes-agent/pull/19936))
- Fix: keep DoH-confirmed Telegram IPs that match system DNS (salvage #17043) ([#20175](https://github.com/NousResearch/hermes-agent/pull/20175))
- Fix: load `reply_to_mode` from config.yaml for Discord + Telegram (salvage #17117) ([#20171](https://github.com/NousResearch/hermes-agent/pull/20171))
- Fix: tolerate malformed HERMES_HUMAN_DELAY_* env vars (salvage #16933) ([#20217](https://github.com/NousResearch/hermes-agent/pull/20217))
- Fix: deterministic thread eviction preserves newest entries (salvage #13639) ([#20285](https://github.com/NousResearch/hermes-agent/pull/20285))
- Fix: don't dead-end setup wizard when only system-scope unit is installed ([#20905](https://github.com/NousResearch/hermes-agent/pull/20905))
- Fix: wait for systemd restart readiness + harden Discord slash-command sync ([#20949](https://github.com/NousResearch/hermes-agent/pull/20949))
- Fix: avoid duplicated Responses history (salvage #18995) ([#21185](https://github.com/NousResearch/hermes-agent/pull/21185))
- Fix: surface bootstrap failures to stderr (salvage #21157) ([#21278](https://github.com/NousResearch/hermes-agent/pull/21278))
- Fix: log agent task failures instead of silently losing usage data (salvage #21159) ([#21274](https://github.com/NousResearch/hermes-agent/pull/21274))
- Fix: log runtime-status write failures with rate-limiting (salvage #21158) ([#21285](https://github.com/NousResearch/hermes-agent/pull/21285))
- Fix: reset-failed before every fallback restart so the gateway can't get stranded ([#21371](https://github.com/NousResearch/hermes-agent/pull/21371))
- Fix: Telegram — preserve `thread_id=1` for forum General typing indicator ([#21390](https://github.com/NousResearch/hermes-agent/pull/21390))
- Fix: batch critical fixes — session resume, /new race, HA WebSocket scheme (@kshitijk4poor) ([#19182](https://github.com/NousResearch/hermes-agent/pull/19182))
### Telegram
- **DM user-managed multi-session topics** (salvage of #19185) ([#19206](https://github.com/NousResearch/hermes-agent/pull/19206))
### Discord
- **Message deletion action** (salvage #19052) ([#21197](https://github.com/NousResearch/hermes-agent/pull/21197))
- Fix: allow `free_response_channels` to override `DISCORD_IGNORE_NO_MENTION` ([#19629](https://github.com/NousResearch/hermes-agent/pull/19629))
### Slack
- Fix: ephemeral slash-command ack, private notice delivery, format_message fixes (@kshitijk4poor) ([#18198](https://github.com/NousResearch/hermes-agent/pull/18198))
### WhatsApp
- Fix: load WhatsApp home channel from env overrides ([#18190](https://github.com/NousResearch/hermes-agent/pull/18190))
### Feishu
- **Operator-configurable bot admission and mention policy** ([#18208](https://github.com/NousResearch/hermes-agent/pull/18208))
- Fix: force text mode for markdown tables (salvage of #13723 by @WuTianyi123) ([#20275](https://github.com/NousResearch/hermes-agent/pull/20275))
### Matrix + Email
- Fix: `/sethome` on Matrix and Email now persists across restarts ([#18272](https://github.com/NousResearch/hermes-agent/pull/18272))
### Teams
- **Docs + feat: sidebar + threading with group-chat fallback** ([#20042](https://github.com/NousResearch/hermes-agent/pull/20042))
### Weixin
- Fix: deduplicate Weixin messages by content fingerprint ([#19742](https://github.com/NousResearch/hermes-agent/pull/19742))
### QQBot
- **Port SDK improvements in-tree — chunked upload, approval keyboards, quoted attachments** ([#21342](https://github.com/NousResearch/hermes-agent/pull/21342))
- **Wire native tool-approval UX via inline keyboards** ([#21353](https://github.com/NousResearch/hermes-agent/pull/21353))
---
## 🏗️ Core Agent & Architecture
### Provider & Model Support
#### Pluggable providers
- **ProviderProfile ABC + `plugins/model-providers/`** — inference providers are now a pluggable surface (salvage of #14424) ([#20324](https://github.com/NousResearch/hermes-agent/pull/20324))
- **`list_picker_providers`** — credential-filtered picker (salvage #13561) ([#20298](https://github.com/NousResearch/hermes-agent/pull/20298))
- **Remove `/provider` alias for `/model`** ([#20358](https://github.com/NousResearch/hermes-agent/pull/20358))
- **Shared Hermes dotenv loader across CLI + plugins** (salvage #13660) ([#20281](https://github.com/NousResearch/hermes-agent/pull/20281))
- **Nous OAuth persisted across profiles via shared token store** ([#19712](https://github.com/NousResearch/hermes-agent/pull/19712))
#### New models
- `deepseek/deepseek-v4-pro` added to OpenRouter + Nous Portal ([#20495](https://github.com/NousResearch/hermes-agent/pull/20495))
- `x-ai/grok-4.3` added to OpenRouter + Nous Portal ([#20497](https://github.com/NousResearch/hermes-agent/pull/20497))
- `openrouter/owl-alpha` (free tier) added to curated OpenRouter list ([#18071](https://github.com/NousResearch/hermes-agent/pull/18071))
- `tencent/hy3-preview` paid route on OpenRouter (@Contentment003111) ([#21077](https://github.com/NousResearch/hermes-agent/pull/21077))
- Arcee Trinity Large Thinking — temperature + compression overrides ([#20473](https://github.com/NousResearch/hermes-agent/pull/20473))
- Rename `x-ai/grok-4.20-beta` to `x-ai/grok-4.20` ([#19640](https://github.com/NousResearch/hermes-agent/pull/19640))
- Demote Vercel AI Gateway to bottom of provider picker ([#18112](https://github.com/NousResearch/hermes-agent/pull/18112))
#### Provider configuration
- **OpenRouter — response caching support** (@kshitijk4poor) ([#19132](https://github.com/NousResearch/hermes-agent/pull/19132))
- **`image_gen.model` from config.yaml honored** (salvage #19376) ([#21273](https://github.com/NousResearch/hermes-agent/pull/21273))
- Fix: honor runtime default model during delegate provider resolution (@johnncenae) ([#17587](https://github.com/NousResearch/hermes-agent/pull/17587))
- Fix: avoid Bedrock credential probe in provider picker (@helix4u) ([#18998](https://github.com/NousResearch/hermes-agent/pull/18998))
- Fix: drop stale env-var override of persisted provider for cron ([#19627](https://github.com/NousResearch/hermes-agent/pull/19627))
- Fix: auxiliary curator api_key/base_url into runtime resolution ([#19421](https://github.com/NousResearch/hermes-agent/pull/19421))
### Agent Loop & Conversation
- **`video_analyze` — native video understanding tool** (@alt-glitch) ([#19301](https://github.com/NousResearch/hermes-agent/pull/19301))
- **Show context compression count in status bar** (CLI + TUI) ([#21218](https://github.com/NousResearch/hermes-agent/pull/21218))
- **Isolate `get_tool_definitions` quiet_mode cache + dedup LCM injection** (#17335) ([#17889](https://github.com/NousResearch/hermes-agent/pull/17889))
- Fix: warning-first tool-call loop guardrails ([#18227](https://github.com/NousResearch/hermes-agent/pull/18227))
- Fix: break permanent empty-response loop from orphan tool-tail ([#21385](https://github.com/NousResearch/hermes-agent/pull/21385))
- Fix: propagate ContextVars to concurrent tool worker threads (salvage #16660) ([#18123](https://github.com/NousResearch/hermes-agent/pull/18123))
- Fix: surface self-improvement review summaries across CLI, TUI, and gateway ([#18073](https://github.com/NousResearch/hermes-agent/pull/18073))
- Fix: serialize concurrent `hermes_tools` RPC calls from `execute_code` ([#17894](https://github.com/NousResearch/hermes-agent/pull/17894), [#17902](https://github.com/NousResearch/hermes-agent/pull/17902))
- Fix: include system prompt + tool schemas in token estimates for compression ([#18265](https://github.com/NousResearch/hermes-agent/pull/18265))
### Compression
- Fix: skip non-string tool content in dedup pass to prevent AttributeError ([#19398](https://github.com/NousResearch/hermes-agent/pull/19398))
- Fix: reset `_summary_failure_cooldown_until` on session reset ([#19622](https://github.com/NousResearch/hermes-agent/pull/19622))
- Fix: trigger fallback on timeout errors alongside model-unavailable errors ([#19665](https://github.com/NousResearch/hermes-agent/pull/19665))
- Fix: `_prune_old_tool_results` boundary direction ([#19725](https://github.com/NousResearch/hermes-agent/pull/19725))
- Fix: soften summary prompt for content filters (salvage #19456) ([#21302](https://github.com/NousResearch/hermes-agent/pull/21302))
### Delegate
- Fix: inherit parent fallback_chain in `_build_child_agent` ([#19601](https://github.com/NousResearch/hermes-agent/pull/19601))
- Fix: guard `_load_config()` against `delegation: null` in config.yaml ([#19662](https://github.com/NousResearch/hermes-agent/pull/19662))
- Fix: inherit parent api_key when `delegation.base_url` set without `delegation.api_key` ([#19741](https://github.com/NousResearch/hermes-agent/pull/19741))
- Fix: expand composite toolsets before intersection (salvage #19455) ([#21300](https://github.com/NousResearch/hermes-agent/pull/21300))
- Fix: correct ACP docs — Claude Code CLI has no --acp flag (salvage #19058) ([#21201](https://github.com/NousResearch/hermes-agent/pull/21201))
### Session & Memory
- **Hindsight — probe API for `update_mode='append'` to dedupe across processes** (@nicoloboschi) ([#20222](https://github.com/NousResearch/hermes-agent/pull/20222))
### Curator
- **`hermes curator archive` and `prune` subcommands** ([#20200](https://github.com/NousResearch/hermes-agent/pull/20200))
- **`hermes curator list-archived`** (#20651) ([#21236](https://github.com/NousResearch/hermes-agent/pull/21236))
- **Synchronous manual `hermes curator run`** (#20555) ([#21216](https://github.com/NousResearch/hermes-agent/pull/21216))
- Fix: preserve `last_report_path` in state ([#18169](https://github.com/NousResearch/hermes-agent/pull/18169))
- Fix: rewrite cron job skill refs after consolidation ([#18253](https://github.com/NousResearch/hermes-agent/pull/18253))
- Fix: defer first run + `--dry-run` preview (#18373) ([#18389](https://github.com/NousResearch/hermes-agent/pull/18389))
- Fix: authoritative `absorbed_into` on delete + restore cron skill links on rollback (#18671) ([#18731](https://github.com/NousResearch/hermes-agent/pull/18731))
- Fix: prevent false-positive consolidation from substring matching ([#19573](https://github.com/NousResearch/hermes-agent/pull/19573))
- Fix: only mark agent-created for background-review sediment ([#19621](https://github.com/NousResearch/hermes-agent/pull/19621))
- Fix: protect hub skills by frontmatter name ([#20194](https://github.com/NousResearch/hermes-agent/pull/20194))
---
## 🔧 Tool System
### File tools
- **Post-write delta lint on `write_file` + `patch`** — in-proc linters for Python, JSON, YAML, TOML ([#20191](https://github.com/NousResearch/hermes-agent/pull/20191))
### Cron
- **`no_agent` mode — script-only cron jobs (watchdog pattern)** ([#19709](https://github.com/NousResearch/hermes-agent/pull/19709))
- **`context_from` chaining docs** (salvage #15724) ([#20394](https://github.com/NousResearch/hermes-agent/pull/20394))
- Fix: treat non-dict origin as missing instead of crashing tick ([#19283](https://github.com/NousResearch/hermes-agent/pull/19283))
- Fix: bump skill usage when cron jobs load skills ([#19433](https://github.com/NousResearch/hermes-agent/pull/19433))
- Fix: recover null `next_run_at` jobs ([#19576](https://github.com/NousResearch/hermes-agent/pull/19576))
- Fix: skip AI call when prerun script produces no output ([#19628](https://github.com/NousResearch/hermes-agent/pull/19628))
- Fix: expand config.yaml refs during job execution ([#19872](https://github.com/NousResearch/hermes-agent/pull/19872))
- Fix: serialize `get_due_jobs` writes to prevent parallel state corruption ([#19874](https://github.com/NousResearch/hermes-agent/pull/19874))
- Fix: initialize MCP servers before constructing the cron AIAgent ([#21354](https://github.com/NousResearch/hermes-agent/pull/21354))
### MCP
- **SSE transport support** (salvage #19135) ([#21227](https://github.com/NousResearch/hermes-agent/pull/21227))
- **Forward OAuth auth + bump `sse_read_timeout` on SSE transport** ([#21323](https://github.com/NousResearch/hermes-agent/pull/21323))
- **Retry stale pipe transport failures as session-expired** ([#21289](https://github.com/NousResearch/hermes-agent/pull/21289))
- **Surface image tool results as MEDIA tags instead of dropping them** ([#21328](https://github.com/NousResearch/hermes-agent/pull/21328))
- **Periodic keepalive to `_wait_for_lifecycle_event`** (salvage #17016) ([#20209](https://github.com/NousResearch/hermes-agent/pull/20209))
- Fix: reconnect on terminated sessions ([#19380](https://github.com/NousResearch/hermes-agent/pull/19380))
- Fix: decouple AnyUrl import from mcp dependency ([#19695](https://github.com/NousResearch/hermes-agent/pull/19695))
- Fix: `mcp add --command` gets distinct argparse dest ([#21204](https://github.com/NousResearch/hermes-agent/pull/21204))
- Fix: clear stale thread interrupt before MCP discovery ([#21276](https://github.com/NousResearch/hermes-agent/pull/21276))
- Fix: report configured timeout in MCP call errors ([#21281](https://github.com/NousResearch/hermes-agent/pull/21281))
- Fix: include exception type in error messages when str(exc) is empty (salvage #19425) ([#21292](https://github.com/NousResearch/hermes-agent/pull/21292))
- Fix: re-raise CancelledError explicitly in `MCPServerTask.run` ([#21318](https://github.com/NousResearch/hermes-agent/pull/21318))
- Fix: coerce numeric tool args defensively in `mcp_serve` ([#21329](https://github.com/NousResearch/hermes-agent/pull/21329))
- Fix: gate utility stubs on server-advertised capabilities ([#21347](https://github.com/NousResearch/hermes-agent/pull/21347))
### Browser
- Fix: allow explicit CDP override without local agent-browser ([#19670](https://github.com/NousResearch/hermes-agent/pull/19670))
- Fix: inject `--no-sandbox` for root + AppArmor userns restrictions ([#19747](https://github.com/NousResearch/hermes-agent/pull/19747))
- Fix: tighten Lightpanda fallback edge cases (@kshitijk4poor) ([#20672](https://github.com/NousResearch/hermes-agent/pull/20672))
### Web tools
- **Per-capability backend selection — search/extract split** (@kshitijk4poor) ([#20061](https://github.com/NousResearch/hermes-agent/pull/20061))
- **SearXNG native search-only backend** (@kshitijk4poor) ([#20823](https://github.com/NousResearch/hermes-agent/pull/20823))
### Approval / Tool gating
- Fix: wake blocked gateway approvals on session cleanup ([#18171](https://github.com/NousResearch/hermes-agent/pull/18171))
- Fix: harden YOLO mode env parsing against quoted-bool strings ([#18214](https://github.com/NousResearch/hermes-agent/pull/18214))
- Fix: extend sensitive write target to cover shell RC and credential files ([#19282](https://github.com/NousResearch/hermes-agent/pull/19282))
---
## 🔌 Plugin System
- **`transform_llm_output` plugin hook** (salvage of #20813) ([#21235](https://github.com/NousResearch/hermes-agent/pull/21235))
- **Document `env_enablement_fn` + `cron_deliver_env_var` platform-plugin hooks** ([#21331](https://github.com/NousResearch/hermes-agent/pull/21331))
- **Pluggable surfaces coverage — model-provider guide, full plugin map, opt-in fix** ([#20749](https://github.com/NousResearch/hermes-agent/pull/20749))
- **Plugin-authoring gaps — image-gen provider guide + publishing a skill tap** ([#20800](https://github.com/NousResearch/hermes-agent/pull/20800))
---
## 🧩 Skills Ecosystem
### New optional skills
- **Shopify** — Admin + Storefront GraphQL optional skill ([#18116](https://github.com/NousResearch/hermes-agent/pull/18116))
- **here.now** — optional skill ([#18170](https://github.com/NousResearch/hermes-agent/pull/18170))
- **shop-app** — personal shopping assistant (optional) ([#20702](https://github.com/NousResearch/hermes-agent/pull/20702))
- **Anthropic financial-services bundle** — ported as optional finance skills ([#21180](https://github.com/NousResearch/hermes-agent/pull/21180))
- **kanban-video-orchestrator** — creative optional skill (@SHL0MS) ([#19281](https://github.com/NousResearch/hermes-agent/pull/19281))
- **searxng-search** — optional skill + Web Search + Extract docs page (@kshitijk4poor) ([#20841](https://github.com/NousResearch/hermes-agent/pull/20841), [#20844](https://github.com/NousResearch/hermes-agent/pull/20844))
### Skill UX
- **Linear skill — add Documents support + Python helper script** ([#20752](https://github.com/NousResearch/hermes-agent/pull/20752))
- **Modernize Obsidian skill to use file tools** (salvage #19332) ([#20413](https://github.com/NousResearch/hermes-agent/pull/20413))
- **Default custom tool creation to plugins** (@kshitijk4poor) ([#19755](https://github.com/NousResearch/hermes-agent/pull/19755))
- **skill_commands cache — rescan on platform scope changes** (salvage #14570 by @LeonSGP43) ([#18739](https://github.com/NousResearch/hermes-agent/pull/18739))
- **Skills — additional rescan paths in skill_commands cache** (salvage #19042) ([#21181](https://github.com/NousResearch/hermes-agent/pull/21181))
- Fix: regression tests for non-dict metadata in `extract_skill_conditions` ([#18213](https://github.com/NousResearch/hermes-agent/pull/18213))
- Docs: explain restoring bundled skills (salvage #19254) ([#20404](https://github.com/NousResearch/hermes-agent/pull/20404))
- Docs: document `hermes skills reset` subcommand (salvage #11544) ([#20395](https://github.com/NousResearch/hermes-agent/pull/20395))
- Docs: himalaya v1.2.0 `folder.aliases` syntax ([#19882](https://github.com/NousResearch/hermes-agent/pull/19882))
- Point agent at `hermes-agent` skill + docs site sync ([#20390](https://github.com/NousResearch/hermes-agent/pull/20390))
---
## 🖥️ CLI & User Experience
### CLI
- **`/new` accepts optional session name argument** (salvage of #19555) ([#19637](https://github.com/NousResearch/hermes-agent/pull/19637))
- **100 new CLI startup tips** ([#20168](https://github.com/NousResearch/hermes-agent/pull/20168))
- **`display.language` — static message translation** (zh/ja/de/es) ([#20231](https://github.com/NousResearch/hermes-agent/pull/20231))
- **French (fr) locale** (@Foolafroos) ([#20329](https://github.com/NousResearch/hermes-agent/pull/20329))
- **Ukrainian (uk) locale** ([#20467](https://github.com/NousResearch/hermes-agent/pull/20467))
- **Turkish (tr) locale** ([#20474](https://github.com/NousResearch/hermes-agent/pull/20474))
- Fix: recover classic CLI output after resize (@helix4u) ([#20444](https://github.com/NousResearch/hermes-agent/pull/20444))
- Fix: complete absolute paths as paths (@helix4u) ([#19930](https://github.com/NousResearch/hermes-agent/pull/19930))
- Fix: resolve lazy session creation regressions (#18370 fallout) (@alt-glitch) ([#20363](https://github.com/NousResearch/hermes-agent/pull/20363))
- Fix: local backend CLI always uses launch directory (@alt-glitch) ([#19334](https://github.com/NousResearch/hermes-agent/pull/19334))
- Refactor: drop dead c-S-c key binding (follow-up to #19895) ([#19919](https://github.com/NousResearch/hermes-agent/pull/19919))
### TUI (Ink)
- **`/model` picker overhaul to match `hermes model` with inline auth** (@austinpickett) ([#18117](https://github.com/NousResearch/hermes-agent/pull/18117))
- **Collapsible sections in startup banner** — skills, system prompt, MCP (@kshitijk4poor) ([#20625](https://github.com/NousResearch/hermes-agent/pull/20625))
- **Show context compression count in status bar** ([#21218](https://github.com/NousResearch/hermes-agent/pull/21218))
- Perf: reduce overlay render churn with focused selectors (@OutThisLife) ([#20393](https://github.com/NousResearch/hermes-agent/pull/20393))
- Fix: restore voice push-to-talk parity (salvage of #16189 by @Montbra) (@OutThisLife) ([#20897](https://github.com/NousResearch/hermes-agent/pull/20897))
- Fix: kanban button (@austinpickett) ([#18358](https://github.com/NousResearch/hermes-agent/pull/18358))
### Dashboard
- **Plugins page — manage, enable/disable, auth status** (@austinpickett) ([#18095](https://github.com/NousResearch/hermes-agent/pull/18095))
- **Profiles management page** (@vincez-hms-coder) ([#16419](https://github.com/NousResearch/hermes-agent/pull/16419))
- **Interactive column sorting in analytics tables** ([#18192](https://github.com/NousResearch/hermes-agent/pull/18192))
- **`default-large` built-in theme with 18px base size** ([#20820](https://github.com/NousResearch/hermes-agent/pull/20820))
- **Support serving under URL prefix via `X-Forwarded-Prefix`** (salvage #19450) ([#21296](https://github.com/NousResearch/hermes-agent/pull/21296))
- **Launch dashboard as side-process via `HERMES_DASHBOARD=1` in Docker** (@benbarclay) ([#19540](https://github.com/NousResearch/hermes-agent/pull/19540))
- Fix: dashboard theme layout shift (@AllardQuek) ([#17232](https://github.com/NousResearch/hermes-agent/pull/17232))
- Fix: gateway model picker current context (@helix4u) ([#20513](https://github.com/NousResearch/hermes-agent/pull/20513))
### Update + setup
- **`hermes update --yes/-y` to skip interactive prompts** ([#18261](https://github.com/NousResearch/hermes-agent/pull/18261))
- **Restart manual profile gateways after update** ([#18178](https://github.com/NousResearch/hermes-agent/pull/18178))
### Profiles
- **`--no-skills` flag for empty profile creation** ([#20986](https://github.com/NousResearch/hermes-agent/pull/20986))
---
## 🎵 Voice, Image & Media
- **xAI Custom Voices — voice cloning** (@alt-glitch) ([#18776](https://github.com/NousResearch/hermes-agent/pull/18776))
- **Achievements — share card render on unlocked badges** ([#19657](https://github.com/NousResearch/hermes-agent/pull/19657))
- **Refresh systemd unit on gateway boot (not just start/restart)** (@alt-glitch) ([#19684](https://github.com/NousResearch/hermes-agent/pull/19684))
---
## 🔗 API Server & Remote Access
- **`X-Hermes-Session-Key` header for long-term memory scoping** (closes #20060) ([#20199](https://github.com/NousResearch/hermes-agent/pull/20199))
---
## 🧰 ACP Adapter (VS Code / Zed / JetBrains)
- **`/steer` and `/queue` slash commands** (@HenkDz) ([#18114](https://github.com/NousResearch/hermes-agent/pull/18114))
- Fix: translate Windows cwd for WSL sessions (salvage #18128) ([#18233](https://github.com/NousResearch/hermes-agent/pull/18233))
- Fix: run `/steer` as a regular prompt on idle sessions ([#18258](https://github.com/NousResearch/hermes-agent/pull/18258))
- Fix: route Zed thoughts to reasoning + polish tool/context rendering ([#19139](https://github.com/NousResearch/hermes-agent/pull/19139))
- Fix: atomic session persistence via `replace_messages` (salvage #13675) ([#20279](https://github.com/NousResearch/hermes-agent/pull/20279))
- Fix: preserve assistant reasoning metadata in session persistence (salvage #13575) ([#20296](https://github.com/NousResearch/hermes-agent/pull/20296))
- Docs: update VS Code setup for ACP Client extension (salvage #12495) ([#20433](https://github.com/NousResearch/hermes-agent/pull/20433))
---
## 🐳 Docker
- **Launch dashboard as side-process via `HERMES_DASHBOARD=1`** (@benbarclay) ([#19540](https://github.com/NousResearch/hermes-agent/pull/19540))
- **Refuse root gateway runs in official image** (salvage #19215) ([#21250](https://github.com/NousResearch/hermes-agent/pull/21250))
- **Chown runtime `node_modules` trees to hermes user** (salvage #19303) ([#21267](https://github.com/NousResearch/hermes-agent/pull/21267))
- Fix: exclude compose/profile runtime state from build context ([#19626](https://github.com/NousResearch/hermes-agent/pull/19626))
- CI: don't cancel overlapping builds, guard `:latest` (@ethernet8023) ([#20890](https://github.com/NousResearch/hermes-agent/pull/20890))
- Test: align Dockerfile contract tests with simplified TUI flow (salvage #19024) ([#21174](https://github.com/NousResearch/hermes-agent/pull/21174))
- Docs: connect to local inference servers (vLLM, Ollama) (salvage #12335) ([#20407](https://github.com/NousResearch/hermes-agent/pull/20407))
- Docs: document `API_SERVER_*` env vars (salvage #11758) ([#20409](https://github.com/NousResearch/hermes-agent/pull/20409))
- Docs: clarify Docker terminal backend is a single persistent container ([#20003](https://github.com/NousResearch/hermes-agent/pull/20003))
---
## 🐛 Notable Bug Fixes
### Agent
- Fix: recover lazy session creation regressions (#18370 fallout) (@alt-glitch) ([#20363](https://github.com/NousResearch/hermes-agent/pull/20363))
- Fix: propagate ContextVars to concurrent tool worker threads (salvage #16660) ([#18123](https://github.com/NousResearch/hermes-agent/pull/18123))
- Fix: warning-first tool-call loop guardrails ([#18227](https://github.com/NousResearch/hermes-agent/pull/18227))
- Fix: surface self-improvement review summaries across CLI, TUI, and gateway ([#18073](https://github.com/NousResearch/hermes-agent/pull/18073))
### Gateway streaming
- Fix: harden StreamingConfig bool and numeric coercion (@simbam99) ([#16463](https://github.com/NousResearch/hermes-agent/pull/16463))
### Model
- Fix: avoid Bedrock credential probe in provider picker (@helix4u) ([#18998](https://github.com/NousResearch/hermes-agent/pull/18998))
### Doctor
- Fix: check global agent-browser when local install not found ([#19671](https://github.com/NousResearch/hermes-agent/pull/19671))
- Test: kimi-coding-cn provider validation regression ([#19734](https://github.com/NousResearch/hermes-agent/pull/19734))
### Update
- Fix: patch `isatty` on real streams to fix xdist-flaky `--yes` tests (salvage #19026) ([#21175](https://github.com/NousResearch/hermes-agent/pull/21175))
- Fix: teach restart-mocks about the post-update survivor sweep (salvage #19031) ([#21177](https://github.com/NousResearch/hermes-agent/pull/21177))
### Auth
- Fix: acp preserve assistant reasoning metadata ([#20296](https://github.com/NousResearch/hermes-agent/pull/20296))
### Redact
- Fix: add `code_file` param to skip false-positive ENV/JSON patterns ([#19715](https://github.com/NousResearch/hermes-agent/pull/19715))
### Email
- Fix: quoted-relative file-drop paths + Date header on tool email path ([#19646](https://github.com/NousResearch/hermes-agent/pull/19646))
---
## 🧪 Testing
- **ACP — accept prompt persistence kwargs in MCP E2E mocks** (@stephenschoettler) ([#18047](https://github.com/NousResearch/hermes-agent/pull/18047))
- **Toolsets — include kanban in expected post-#17805 toolset assertions** (@briandevans) ([#18122](https://github.com/NousResearch/hermes-agent/pull/18122))
- **Agent — cover max-iterations summary message sanitization** ([#19580](https://github.com/NousResearch/hermes-agent/pull/19580))
- **run_agent — `-inf` and `nan` regression coverage for `_coerce_number`** ([#19703](https://github.com/NousResearch/hermes-agent/pull/19703))
---
## 📚 Documentation
### Major docs additions
- **`llms.txt` + `llms-full.txt` — agent-friendly ingestion** ([#18276](https://github.com/NousResearch/hermes-agent/pull/18276))
- **User Stories and Use Cases collage page** ([#18282](https://github.com/NousResearch/hermes-agent/pull/18282))
- **Persistent Goals (/goal) feature page** ([#18275](https://github.com/NousResearch/hermes-agent/pull/18275))
- **Windows (WSL2) guide expansion** — filesystem, networking, services, pitfalls ([#20748](https://github.com/NousResearch/hermes-agent/pull/20748))
- **Chinese (zh-CN) README translation** (salvage #13508) ([#20431](https://github.com/NousResearch/hermes-agent/pull/20431))
- **zh-Hans Docusaurus locale** + Tool Gateway / image-gen / WSL quickstart translations (salvage #11728) ([#20430](https://github.com/NousResearch/hermes-agent/pull/20430))
- **Tool Gateway docs restructure** — lead with what it does, config moved to bottom ([#20827](https://github.com/NousResearch/hermes-agent/pull/20827))
- **Quickstart — Onchain AI Garage Hermes tutorials playlist** ([#20192](https://github.com/NousResearch/hermes-agent/pull/20192))
- **Open WebUI bootstrap script** (salvage #9566) ([#20427](https://github.com/NousResearch/hermes-agent/pull/20427))
- **Local Ollama setup guide** (salvage #5842) ([#20426](https://github.com/NousResearch/hermes-agent/pull/20426))
- **Google Gemini guide** (salvage #17450) ([#20401](https://github.com/NousResearch/hermes-agent/pull/20401))
- **Custom model aliases for /model command** ([#20475](https://github.com/NousResearch/hermes-agent/pull/20475))
- **Together/Groq/Perplexity cookbook via `custom_providers`** (salvage #15214) ([#20400](https://github.com/NousResearch/hermes-agent/pull/20400))
- **Doubao speech integration examples** (TTS + STT) (salvage #18065) ([#20418](https://github.com/NousResearch/hermes-agent/pull/20418))
- **WSL-to-Windows Chrome MCP bridge** (salvage #8313) ([#20428](https://github.com/NousResearch/hermes-agent/pull/20428))
- **Hermes skills docs sync** — slash commands + durable-systems section ([#20390](https://github.com/NousResearch/hermes-agent/pull/20390))
- **AGENTS.md — curator/cron/delegation/toolsets + fix plugin tree** ([#20226](https://github.com/NousResearch/hermes-agent/pull/20226))
- **Bedrock quickstart entry + fallback comment + deployment link** (salvage #11093) ([#20397](https://github.com/NousResearch/hermes-agent/pull/20397))
### Docs polish
- Collapse exploding skills tree to a single Skills node ([#18259](https://github.com/NousResearch/hermes-agent/pull/18259))
- Clarify `session_search` auxiliary model docs ([#19593](https://github.com/NousResearch/hermes-agent/pull/19593))
- Open WebUI Quick Setup gap fill ([#19654](https://github.com/NousResearch/hermes-agent/pull/19654))
- Default custom tool creation to plugins (@kshitijk4poor) ([#19755](https://github.com/NousResearch/hermes-agent/pull/19755))
- Clarify Telegram group chat troubleshooting (salvage #18672) ([#20416](https://github.com/NousResearch/hermes-agent/pull/20416))
- Codex OAuth auth prerequisite clarification (salvage #18688) ([#20417](https://github.com/NousResearch/hermes-agent/pull/20417))
- Discord Server Members Intent + SSRC-mapping drift + /voice join slash Choice (salvage #11350) ([#20411](https://github.com/NousResearch/hermes-agent/pull/20411))
- Document `ctx.dispatch_tool()` (salvage #10955) ([#20391](https://github.com/NousResearch/hermes-agent/pull/20391))
- Document `hermes webhook subscribe --deliver-only` (salvage #12612) ([#20392](https://github.com/NousResearch/hermes-agent/pull/20392))
- Document `hermes import` reference (salvage #14711) ([#20396](https://github.com/NousResearch/hermes-agent/pull/20396))
- Document per-provider TTS `max_text_length` caps (salvage #13825) ([#20389](https://github.com/NousResearch/hermes-agent/pull/20389))
- Clarify supported prompt customization surfaces (salvage #19987) ([#20383](https://github.com/NousResearch/hermes-agent/pull/20383))
- Correct `web_extract` summarizer timeout comment (salvage #20051) ([#20381](https://github.com/NousResearch/hermes-agent/pull/20381))
- Fix fallback provider config paths (salvage #20033) ([#20382](https://github.com/NousResearch/hermes-agent/pull/20382))
- Fix misleading RL install-extras claim (salvage #19080) ([#21213](https://github.com/NousResearch/hermes-agent/pull/21213))
- Clarify API server tool execution locality (salvage #19117) ([#21223](https://github.com/NousResearch/hermes-agent/pull/21223))
- Prefer `.venv` to match AGENTS.md and scripts/run_tests.sh (@xxxigm) ([#21334](https://github.com/NousResearch/hermes-agent/pull/21334))
- Align tool discovery + test runner with AGENTS.md (@xxxigm) ([#20791](https://github.com/NousResearch/hermes-agent/pull/20791))
- Align terminal-backend count and naming across docs and code (salvage #19044) ([#20402](https://github.com/NousResearch/hermes-agent/pull/20402))
- Refresh stale platform counts (salvage #19053) ([#20403](https://github.com/NousResearch/hermes-agent/pull/20403))
---
## 👥 Contributors
### Core
- **@teknium1** — salvage, triage, review, feature work, and release management
### Top Community Contributors
- **@kshitijk4poor** (21 PRs) — SearXNG native search backend, per-capability backend selection, collapsible TUI startup banner, Slack ephemeral ack + format fixes, Lightpanda fallback hardening, searxng-search optional skill + Web Search + Extract docs, default custom tool creation to plugins, kanban failure-column fix
- **@alt-glitch** (13 PRs) — video_analyze tool, xAI Custom Voices (voice cloning), local-backend CLI launch-directory fix, lazy-session creation regression recovery, systemd unit refresh on gateway boot
- **@OutThisLife** (9 PRs) — TUI perf — overlay render churn reduction, voice push-to-talk parity restoration (salvaging @Montbra)
- **@helix4u** (6 PRs) — Classic CLI output recovery after resize, absolute-path TUI completion, gateway model picker current-context fix, Bedrock credential probe avoidance, kanban docs fixes
- **@ethernet8023** (3 PRs) — Docker CI — don't cancel overlapping builds, :latest guard
- **@benbarclay** (3 PRs) — Docker — launch dashboard as side-process via HERMES_DASHBOARD=1
- **@austinpickett** (3 PRs) — Dashboard Plugins page, TUI /model picker overhaul with inline auth, kanban button fix
- **@sprmn24** (2 PRs) — Contributor (2 PRs)
- **@asheriif** (2 PRs) — Contributor (2 PRs)
- **@xxxigm** (2 PRs) — Contributing docs — .venv preference and test runner alignment with AGENTS.md
- **@stephenschoettler** (1 PR) — ACP — MCP E2E mock kwargs
- **@vincez-hms-coder** (1 PR) — Dashboard — Profiles management page
- **@cdanis** (1 PR) — Contributor
- **@briandevans** (1 PR) — Toolsets test — kanban assertions post-#17805
- **@heyitsaamir** (1 PR) — Contributor
### All Contributors
Thanks to everyone who contributed to v0.13.0 — commits, co-authored work, and salvaged PRs. 295 contributors in one week.
@0oAstro, @0xDevNinja, @0xharryriddle, @0xKingBack, @0xsir0000, @0xyg3n, @0z1-ghb, @abhinav11082001-stack,
@acc001k, @acesjohnny, @adamludwin, @adybag14-cyber, @agentlinker, @agilejava, @ai-ag2026, @AJV20,
@alanxchen85, @albert748, @AllardQuek, @alt-glitch, @altmazza0-star, @ambition0802, @amitgaur, @amroessam,
@andrewhosf, @Asce66, @asheriif, @ashermorse, @asimons81, @Aslaaen, @Asunfly, @atongrun, @austinpickett,
@banditburai, @barteqpl, @Bartok9, @Beandon13, @beardthelion, @beibi9966, @benbarclay, @binhnt92, @bjianhang,
@BlackJulySnow, @bobashopcashier, @bogerman1, @Bongulielmi, @Brecht-H, @briandevans, @brooklynnicholson,
@c3115644151, @camaragon, @CashWilliams, @CCClelo, @cdanis, @CES4751, @cg2aigc, @changchun989, @ChanlerDev,
@CharlieKerfoot, @chengoak, @chenyunbo411, @chinadbo, @CIRWEL, @cixuuz, @cmcgrabby-hue, @colorcross,
@Contentment003111, @CoreyNoDream, @counterposition, @curiouscleo, @DaniuXie, @deep-name, @dengtaoyuan450-a11y,
@discodirector, @donramon77, @dpaluy, @ee-blog, @ehz0ah, @el-analista, @elmatadorgh, @EmelyanenkoK,
@Emidomenge, @emozilla, @Es1la, @EthanGuo-coder, @etherman-os, @ethernet8023, @EvilDrag0n, @exxmen, @Fearvox,
@Feranmi10, @firefly, @flobo3, @fmercurio, @Foolafroos, @formulahendry, @franksong2702, @ggnnggez, @GinWU05,
@giwaov, @glesperance, @gnanirahulnutakki, @GodsBoy, @Gosuj, @Grey0202, @guillaumemeyer, @Gutslabs, @h0tp-ftw,
@haidao1919, @halmisen, @happy5318, @hedirman, @helix4u, @hendrixfreire, @HenkDz, @hex-clawd, @heyitsaamir,
@hharry11, @Hinotoi-agent, @holynn-q, @hrkzogw, @Hypn0sis, @Hypnus-Yuan, @ideathinklab01-source, @IMHaoyan,
@Interstellar-code, @ishardo, @jacdevos, @jackey8616, @JanCong, @jasonoutland, @jatingodnani, @JayGwod,
@jethac, @JezzaHehn, @JiaDe-Wu, @jjjojoj, @jkausel-ai, @John-tip, @johnncenae, @jrusso1020, @jslizar,
@JTroyerOvermatch, @julysir, @Junass1, @JustinUssuri, @Kailigithub, @keepcalmqqf, @kiala9, @konsisumer,
@kowenhaoai, @Krionex, @kshitijk4poor, @kyan12, @leavrcn, @leon7609, @LeonSGP43, @leprincep35700, @lhysdl,
@likejudy, @lisanhu, @liu-collab, @liuguangyong93, @liuhao1024, @LucianoSP, @luoyuctl, @luyao618, @M3RCUR2Y,
@maciekczech, @Magicray1217, @magicray1217, @MaHaoHao-ch, @malaiwah, @manateelazycat, @masonjames, @megastary,
@memosr, @MichaelWDanko, @mikeyobrien, @millerc79, @Mind-Dragon, @mioimotoai-lgtm, @misery-hl, @molvikar,
@momowind, @Montbra, @MottledShadow, @mrbob-git, @mrcharlesiv, @mrcoferland, @ms-alan, @mwnickerson,
@nazirulhafiy, @nftpoetrist, @nicoloboschi, @nightq, @nikolay-bratanov, @NikolayGusev-astra, @nocturnum91,
@noOne-list, @nouseman666, @novax635, @npmisantosh, @nudiltoys-cmyk, @olisikh, @oluwadareab12, @Oxidane-bot,
@pama0227, @pander, @pasevin, @paul-tian, @pdonizete, @perlowja, @pingchesu, @PratikRai0101, @priveperfumes,
@probepark, @QifengKuang, @quocanh261997, @qWaitCrypto, @qxxaa, @r266-tech, @rames-jusso, @revaraver,
@Ricardo-M-L, @rob-maron, @Roy-oss1, @rxdxxxx, @SandroHub013, @Sanjays2402, @Sertug17, @shashwatgokhe,
@shellybotmoyer, @SHL0MS, @SimbaKingjoe, @simbam99, @simplenamebox-ops, @socrates1024, @sonic-netizen,
@sprmn24, @steezkelly, @stephen0110, @stephenschoettler, @stevenchanin, @stevenchouai, @stormhierta,
@subtract0, @suncokret12, @swithek, @taeng0204, @TakeshiSawaguchi, @tangyuanjc, @TheEpTic, @thelumiereguy,
@Tkander1715, @tmdgusya, @Tranquil-Flow, @TruaShamu, @UgwujaGeorge, @valda, @vincez-hms-coder, @VinVC,
@vominh1919, @wabrent, @WadydX, @wanazhar, @WanderWang, @warabe1122, @web-dev0521, @WideLee, @willy-scr,
@wmagev, @WuTianyi123, @wxst, @wysie, @Wysie, @xsfX20, @xxxigm, @xyiy001, @YanzhongSu, @ygd58, @Yoimex,
@yuehei, @Yukipukii1, @yuqianma, @YX234, @zeejaytan, @zhanggttry, @zhao0112, @zng8418, @zons-zhaozhy, @Zyproth
---
**Full Changelog**: [v2026.4.30...v2026.5.7](https://github.com/NousResearch/hermes-agent/compare/v2026.4.30...v2026.5.7)