# Hermes Agent v0.15.0 (v2026.5.28)
**发布日期:** 2026年5月28日
**自 v0.14.0 以来:** 1,302 次提交 · 747 个合并的 PR · 1,746 个文件更改 · 282,712 行新增 · 36,699 行删除 · 560+ 个问题关闭(15 个 P0,65 个 P1,19 个安全标记) · 321 位社区贡献者(包括合著者)
> **速度版。** Hermes 变得更快——启动更快、运行更快、交付工作更快、发展更快。16,083 行的 `run_agent.py` 缩减至 3,821 行(-76%),分散到 14 个内聚的 `agent/*` 模块。看板发展成一个真正的多智能体平台,历经 104 个 PR——编排器自动分解、群体拓扑、定时任务、每任务工作树、每任务模型覆盖。冷启动性能浪潮持续:启动时间再减一秒,每轮对话函数调用减少 47%,`hermes --version` 在与 Codex CLI 的正面基准测试中逆转局面。`session_search` 速度提升 4,500 倍且免费。Promptware 防御落地,抵御 Brainworm 类攻击。Bitwarden Secrets Manager 将每个提供商的多个 API 密钥替换为一个引导令牌。技能包让一个斜杠命令加载整个工作流。Ink TUI 获得多会话编排器。两个新的图像生成提供商(Krea 2 Medium + Large,FAL 移植为插件),Nous 批准的 MCP 目录及交互式选择器,一个 OpenHands 编排技能,ntfy 作为第 23 个消息平台,以及深入的 xAI 集成轮次(Web 搜索插件、xai-oauth `hermes proxy` 上游、5 月 15 日退役模型检测 + `hermes migrate xai`、自然 TTS 语音标签暂停、base_url 泄漏防护、Grok 的 OpenAI 风格执行指导)。同时关闭了 15 个 P0 + 65 个 P1。
---
## ✨ 亮点
- **重大重构——`run_agent.py` 不再有 16,000 行** — Hermes 的核心文件——智能体对话循环——已从 16,083 行减少到 3,821 行(-76%),提取的代码重新分布到 `agent/` 下的 14 个内聚模块。行为不变:每次提取都在 `AIAgent` 上保留一个轻量转发器,每个测试补丁路径仍然有效,每个外部调用者兼容。您在意的原因是:未来的 Hermes 开发更快,插件作者终于可以 grep 代码库,而那个需要 90 秒才能在编辑器中加载的文件现在瞬间打开。([#27248](https://github.com/NousResearch/hermes-agent/pull/27248))
- **看板发展成一个真正的多智能体平台——端到端 104 个 PR** — 分诊自动将一个任务分解成一棵子任务树。`hermes kanban swarm` 一条命令创建一个完整的 Swarm v1 图——根节点、并行工作器、门控验证器、门控综合器、共享黑板。任务支持每任务模型覆盖(样板任务用廉价模型,困难子任务用昂贵模型)、看板级默认工作目录、每任务工作树路径和分支、定时开始时间、可配置的声明 TTL、重试指纹、陈旧任务检测、重生防护,以及拖拽删除区。工作器通过 `/workers/active`、`/runs/{id}` 和 `/inspect` 端点报告。([#27572](https://github.com/NousResearch/hermes-agent/pull/27572)、[#28443](https://github.com/NousResearch/hermes-agent/pull/28443)、[#28364](https://github.com/NousResearch/hermes-agent/pull/28364)、[#28394](https://github.com/NousResearch/hermes-agent/pull/28394)、[#28462](https://github.com/NousResearch/hermes-agent/pull/28462)、[#28384](https://github.com/NousResearch/hermes-agent/pull/28384)、[#28467](https://github.com/NousResearch/hermes-agent/pull/28467)、[#28455](https://github.com/NousResearch/hermes-agent/pull/28455)、[#28452](https://github.com/NousResearch/hermes-agent/pull/28452)、[#28432](https://github.com/NousResearch/hermes-agent/pull/28432)、[#28468](https://github.com/NousResearch/hermes-agent/pull/28468)、[#28420](https://github.com/NousResearch/hermes-agent/pull/28420))
- **冷启动性能浪潮持续——再节省一秒,每轮函数调用减少 47%** — 三轮新的优化:延迟导入 `openai._base_client`(每次 CLI 调用 -240ms / -17MB)、热路径优化使每轮对话函数调用减少 47%(31 轮聊天从 399k 降至 213k)、延迟压缩可行性检查(每次构建智能体 -170 到 -290ms)、自适应子进程轮询(每次工具调用 -195ms,每轮超过 1 秒)。Termux 冷启动从 2.9 秒降至 0.8 秒。`hermes --version` 冷启动降低 63%(701ms → 258ms),在与 Codex CLI 的正面基准测试中从 5/11 胜场转为 6/11。([#28864](https://github.com/NousResearch/hermes-agent/pull/28864)、[#28866](https://github.com/NousResearch/hermes-agent/pull/28866)、[#28957](https://github.com/NousResearch/hermes-agent/pull/28957)、[#29006](https://github.com/NousResearch/hermes-agent/pull/29006)、[#29419](https://github.com/NousResearch/hermes-agent/pull/29419)、[#30121](https://github.com/NousResearch/hermes-agent/pull/30121)、[#30609](https://github.com/NousResearch/hermes-agent/pull/30609)、[#31968](https://github.com/NousResearch/hermes-agent/pull/31968))
- **`session_search` 重建——无 LLM,零成本,快 4,500 倍** — 旧的 `session_search` 是一个辅助 LLM 驱动的工具,每次调用花费约 0.30 美元,总结三个会话需要约 30 秒,有时在正确会话甚至不在 FTS5 命中列表时也会虚构。新形态是一个工具,三种模式(发现、滚动、浏览)根据设置的参数推断——没有 `mode` 参数,没有辅助 LLM,没有配置旋钮,没有配套技能。发现模式约 20ms 而非约 90s;滚动模式约 1ms。搜索您的过去会话以获取上下文现在免费且即时。([#27590](https://github.com/NousResearch/hermes-agent/pull/27590))
- **Promptware 防御——三个阻塞点阻止 Brainworm 类攻击** — 受近期 Brainworm / Promptware 杀伤链研究(Origin HQ,arxiv 2601.09625)启发,Hermes 现在保护上下文窗口免受提示注入攻击,这些攻击试图通过工具输出、召回内存或存储的技能劫持智能体。单一事实来源(`tools/threat_patterns.py`)包含约 15 个新的 Brainworm/C2 模式;召回的内存在加载时扫描;工具结果获得分隔符标记,以便恶意文件或远程服务无法冒充 Hermes 自身的系统内容。配合一个新的 `security-guidance` 插件,可模式匹配危险的代码写入。([#32269](https://github.com/NousResearch/hermes-agent/pull/32269)、[#33131](https://github.com/NousResearch/hermes-agent/pull/33131)、[#9151](https://github.com/NousResearch/hermes-agent/pull/9151))
- **Bitwarden Secrets Manager——一个引导令牌取代每个提供商的 API 密钥** — 停止在 `~/.hermes/.env` 中保存明文 API 密钥。安装 Bitwarden Secrets Manager(`bws` 在首次使用时延迟自动安装),用一个引导令牌(`BWS_ACCESS_TOKEN`)让 Hermes 指向它,启动时所需的每个凭证都来自 Bitwarden。在 Bitwarden 网页应用中轮换密钥,轮换实际生效——Bitwarden 默认为事实来源,因此其值在启动时覆盖匹配的环境变量。设置 `secrets.bitwarden.override_existing: false` 可反转。支持欧盟云和自托管 Bitwarden 服务器 URL。检测到的凭证现在标有其来源,因此您可以一目了然地看到哪些密钥来自 Bitwarden 与本地环境。([#30035](https://github.com/NousResearch/hermes-agent/pull/30035)、[#31378](https://github.com/NousResearch/hermes-agent/pull/31378)、[#30364](https://github.com/NousResearch/hermes-agent/pull/30364))
- **ntfy 作为第 23 个消息平台——无需账户即可推送通知** — ntfy 是自托管的推送通知服务,无需注册、无需 API 密钥,只需一个主题 URL。Hermes 现在将其适配为平台插件(无需编辑核心),因此您的智能体可以从任何定时任务、看板任务完成或聊天 `send_message` 向您发送推送通知——到您的手机、手表、桌面或家庭实验室。(来自 [#30625](https://github.com/NousResearch/hermes-agent/pull/30625) → 原 [#4043](https://github.com/NousResearch/hermes-agent/pull/4043))([#30867](https://github.com/NousResearch/hermes-agent/pull/30867))
- **技能包——`/<名称>` 一次加载多个技能** — 技能包是一个命名的技能组,用一个斜杠命令全部加载。设置您的“写作日”包(人性化 + 构思 + Obsidian + YouTube 内容),`/writing-day` 即为该会话激活所有四个技能。技能中心现在有健康检查、新鲜度徽章和看门狗定时任务。三个新的可选技能落地:`code-wiki`(Karpathy 的 LLM-Wiki,持久索引的开发维基)、`openhands`(委托给 OpenHands 进行并行编码智能体)和 `web-pentest`(OWASP 风格的 Web 渗透测试方案)。([#28373](https://github.com/NousResearch/hermes-agent/pull/28373)、[#32345](https://github.com/NousResearch/hermes-agent/pull/32345)、[#32240](https://github.com/NousResearch/hermes-agent/pull/32240)、[#32261](https://github.com/NousResearch/hermes-agent/pull/32261)、[#32265](https://github.com/NousResearch/hermes-agent/pull/32265))
- **TUI 会话编排器——一个 TUI 窗口中的多个实时会话** — Ink TUI 获得了活动会话切换器覆盖层。在不离开 TUI 的情况下列出、切换、刷新和关闭多个实时的进程本地会话;使用会话范围的模型选择器启动新会话。再加上一波 TUI 优化——鼠标跟踪 DEC 模式预设、跨分支和 Termux 的回滚保留、斜杠下拉菜单修复、x.com 链接渲染以及 CJK/IME 输入渲染改进。(来自 [#27642](https://github.com/NousResearch/hermes-agent/pull/27642))([#32980](https://github.com/NousResearch/hermes-agent/pull/32980)、[#30084](https://github.com/NousResearch/hermes-agent/pull/30084))
- **两个新的 image_gen 提供商——Krea 2 Medium + Large,FAL 移植为插件** — Krea 作为内置插件加入 image_gen 阵容:`Krea 2 Medium`($0.03)和 `Krea 2 Large`($0.06),自动发现,可通过 `hermes tools` → Image Generation → Krea 选择。通过原生 Krea 插件和 FAL.ai 目录均可使用。FAL.ai 后端从单体图像生成工具中抽出,放入 `plugins/image_gen/fal/`,完成了 web、browser 和 video_gen 已建立的四向架构对等——新的图像提供商现在只需要一个文件,而不是一个分支。([#33236](https://github.com/NousResearch/hermes-agent/pull/33236)、[#30380](https://github.com/NousResearch/hermes-agent/pull/30380)、[#33506](https://github.com/NousResearch/hermes-agent/pull/33506))
- **Nous 批准的 MCP 目录及交互式选择器** — 一个经过 Nous 审查的 MCP 服务器精选目录,镜像可选技能形态。运行 `hermes mcp` 即可获得交互式选择器;一键安装,安装时提示凭证并写入 `~/.hermes/.env`。首先附带 n8n 清单。弥合了用户需要在 GitHub 上搜索可信 MCP 服务器的发现差距。([#30870](https://github.com/NousResearch/hermes-agent/pull/30870))
- **OpenHands 编排技能** — `optional-skills/autonomous-ai-agents/openhands/` 下的一个新可选技能,让智能体将编码任务委托给 OpenHands CLI,与 `claude-code`、`codex` 和 `opencode` 并列。OpenHands 是该系列中与模型无关的成员——任何 LiteLLM 支持的提供商都可以使用(OpenAI、Anthropic、OpenRouter、您自己的),因此您可以将子任务路由到能够完成它的最便宜模型。可作为看板集群和 `/delegate` 流程的即插即用工作器。(关闭 [#477](https://github.com/NousResearch/hermes-agent/issues/477))([#32261](https://github.com/NousResearch/hermes-agent/pull/32261))
- **深度 xAI 集成轮次——Web 搜索插件、OAuth 代理上游、5 月 15 日退役检测、自然 TTS、安全加固** — 六项相互关联的 xAI 改进:
- **xAI Web 搜索**作为 `plugins/web/xai/` 提供商落地,与 Brave / Tavily / Exa / SearXNG / DDGS / Firecrawl 并列——重用您现有的 Grok OAuth 或 `XAI_API_KEY` 凭证,无需新的环境变量。([#29042](https://github.com/NousResearch/hermes-agent/pull/29042))
- **`hermes proxy` 新增 xAI 上游** — 您的本地 OpenAI 兼容端点现在可以由 SuperGrok OAuth 支持,无需在客户端编写 PKCE 刷新代码。([#28356](https://github.com/NousResearch/hermes-agent/pull/28356))
- **5 月 15 日模型退役检测** — `grok-4`、`grok-4-fast{,-reasoning,-non-reasoning}`、`grok-3`、`grok-code-fast-1`、`grok-imagine-image-pro` 等在医生和聊天启动时被检测,并提供 `hermes migrate xai` 一键配置迁移到支持的模型。退役日期后不再有静默的 404。([#29277](https://github.com/NousResearch/hermes-agent/pull/29277))
- **xAI TTS 的 `auto_speech_tags` 功能(可选)** — 在段落和句子之间插入轻量 `[pause]` 标签,使语音回复听起来更自然。默认关闭。([#29376](https://github.com/NousResearch/hermes-agent/pull/29376))
- **`xai-oauth` 的 `base_url` 固定为 `x.ai` 源** — 关闭了一个静默凭证泄漏向量,其中 `XAI_BASE_URL` 可以将 OAuth 认证的推理重定向到攻击者控制的主机。([#28952](https://github.com/NousResearch/hermes-agent/pull/28952))
- **OpenAI 风格执行指导应用于 Grok 模型** — Grok 和 xai-oauth 现在获得与 GPT/Codex 相同的特定系列执行纪律块,因此模型停止声称完成而没有工具调用,停止建议变通方法而不是使用现有工具。([#27797](https://github.com/NousResearch/hermes-agent/pull/27797))
- 此外还有 `x_search` 降级结果展示、层级门控 403 及 API 密钥回退、PKCE `code_challenge` 往返修复、终端刷新失败时的死令牌隔离、每个请求的 MiniMax 风格短令牌刷新,以及两个分类器站点上对 `WKE=unauthenticated` 的遵守。([#29484](https://github.com/NousResearch/hermes-agent/pull/29484)、[#28351](https://github.com/NousResearch/hermes-agent/pull/28351)、[#27560](https://github.com/NousResearch/hermes-agent/pull/27560)、[#28116](https://github.com/NousResearch/hermes-agent/pull/28116)、[#30619](https://github.com/NousResearch/hermes-agent/pull/30619)、[#30872](https://github.com/NousResearch/hermes-agent/pull/30872))
---
## 🏗️ 核心智能体与架构
### 重大重构——`run_agent.py` 16k → 3.8k
- `run_agent.py` 从 16,083 行减至 3,821 行(-76%),提取到 14 个内聚的 `agent/*` 模块。仅 `run_conversation` 在重构前就有 3,877 行。每次提取都在 `AIAgent` 上保留一个轻量转发器,每个测试补丁路径都保留,每个外部调用者保持兼容。([#27248](https://github.com/NousResearch/hermes-agent/pull/27248))
### 智能体循环与对话
- 辅助任务分层回退(主 → 链 → 主智能体 → 优雅失败),针对容量错误(402/429/连接)。(来自 [#26811](https://github.com/NousResearch/hermes-agent/pull/26811) + [#26998](https://github.com/NousResearch/hermes-agent/pull/26998))([#27625](https://github.com/NousResearch/hermes-agent/pull/27625))
- 缓冲重试/回退状态;仅在最终失败时展示(不再在运行中输出中嘈杂地显示“重试中...”)。([#33816](https://github.com/NousResearch/hermes-agent/pull/33816))
- 外部上下文引擎的主机契约——将之前的 5 个 PR 浓缩为一个扩展表面。([#33750](https://github.com/NousResearch/hermes-agent/pull/33750))
- 在提供商内容策略阻止时立即回退。([#33883](https://github.com/NousResearch/hermes-agent/pull/33883))
- 跨提供商回退至需要侧提供商时重新填充 `reasoning_content`。(来自 [#33784](https://github.com/NousResearch/hermes-agent/pull/33784))([#33795](https://github.com/NousResearch/hermes-agent/pull/33795))
- 每轮工具结果验证器——`patch` 工具获得缩进保留、CRLF 保留、按文件失败升级。([#32273](https://github.com/NousResearch/hermes-agent/pull/32273))
- 自定义提供商模型的单旋钮原生视觉。([#29679](https://github.com/NousResearch/hermes-agent/pull/29679))
- 后台审查分支与外部内存插件隔离。([#27190](https://github.com/NousResearch/hermes-agent/pull/27190))
- 后台审查继承父工具集配置以实现 `tools[]` 缓存对等。([#29704](https://github.com/NousResearch/hermes-agent/pull/29704))
- 从返回列表类型工具内容的提供商中恢复。([#30259](https://github.com/NousResearch/hermes-agent/pull/30259))
- 将部分流存根响应视为长度截断而非干净停止。([#30998](https://github.com/NousResearch/hermes-agent/pull/30998))
- OpenAI 执行指导应用于 xAI Grok / xai-oauth。([#27797](https://github.com/NousResearch/hermes-agent/pull/27797))
- ContextVars 传播到并发工具工作线程。
- 预加载 `jiter` 原生解析器。([#33692](https://github.com/NousResearch/hermes-agent/pull/33692))
- 使用保存的工具集暴露上下文引擎工具。(来自 [#31194](https://github.com/NousResearch/hermes-agent/pull/31194))([#33719](https://github.com/NousResearch/hermes-agent/pull/33719))
### 会话与内存
- `session_search` 重建——单一形态(发现 + 滚动 + 浏览),无辅助 LLM,约 20ms 对比约 90s。([#27590](https://github.com/NousResearch/hermes-agent/pull/27590))
- 来自 [#29182](https://github.com/NousResearch/hermes-agent/pull/29182) 的修复——会话的可选 JSON 快照写入器。([#29278](https://github.com/NousResearch/hermes-agent/pull/29278))
- 持久化 `platform_message_id` 以便跨网关重启召回。([#29449](https://github.com/NousResearch/hermes-agent/pull/29449))
- 内联内存上下文提及在对话中保持可见。([#28132](https://github.com/NousResearch/hermes-agent/pull/28132))
- 召回的内存标记为信息性而非权威性。([#28583](https://github.com/NousResearch/hermes-agent/pull/28583))
- 内存 + 上下文引擎工具注入通过 `enabled_toolsets` 门控。([#30177](https://github.com/NousResearch/hermes-agent/pull/30177))
- 防范 `MEMORY.md` / `USER.md` 的外部漂移。([#30877](https://github.com/NousResearch/hermes-agent/pull/30877))
- Honcho 运行时对等映射——正确性后续 + 设置向导 + 文档。([#30077](https://github.com/NousResearch/hermes-agent/pull/30077))
- 定期内存记录以检测泄漏。(来自 [#17667](https://github.com/NousResearch/hermes-agent/pull/17667))([#27102](https://github.com/NousResearch/hermes-agent/pull/27102))
### Codex / Responses-API 成熟
- TTFB 看门狗用于停滞的 Codex Responses 流。([#32042](https://github.com/NousResearch/hermes-agent/pull/32042))
- 当陈旧调用检测器在已知静默拒绝模式上触发时提供可操作提示。([#32016](https://github.com/NousResearch/hermes-agent/pull/32016)、[#33133](https://github.com/NousResearch/hermes-agent/pull/33133))
- 丢弃 SDK `responses.stream()` 辅助函数;直接消费事件。([#33042](https://github.com/NousResearch/hermes-agent/pull/33042))
- 从 `invalid_encrypted_content` 中优雅恢复。(来自 [#10144](https://github.com/NousResearch/hermes-agent/pull/10144))([#33035](https://github.com/NousResearch/hermes-agent/pull/33035))
- 恢复输出为空的 Codex Responses 流。([#32963](https://github.com/NousResearch/hermes-agent/pull/32963)、[#33390](https://github.com/NousResearch/hermes-agent/pull/33390))
- 丢弃外部发行者推理和临时 `rs_tmp` 推理重放状态。([#33156](https://github.com/NousResearch/hermes-agent/pull/33156)、[#33146](https://github.com/NousResearch/hermes-agent/pull/33146))
- Codex 429 配额归类为速率限制而非缺失凭证。([#33168](https://github.com/NousResearch/hermes-agent/pull/33168))
- Codex 聊天路径在单例为空时回退到 credential_pool。([#33189](https://github.com/NousResearch/hermes-agent/pull/33189))
- Codex 重新认证同步 credential_pool。([#33164](https://github.com/NousResearch/hermes-agent/pull/33164))
- 当没有注册工具时省略 `tools` 键。([#33409](https://github.com/NousResearch/hermes-agent/pull/33409))
- 直接解析 Codex 图像生成 SSE。([#32933](https://github.com/NousResearch/hermes-agent/pull/32933))
---
## 🎛️ 看板——多智能体成熟浪潮
### 编排与分派
- 编排器驱动的分诊自动分解。([#27572](https://github.com/NousResearch/hermes-agent/pull/27572))
- 看板集群拓扑辅助工具——`hermes kanban swarm` 创建一个 Swarm v1 图(根节点 + 并行工作器 + 门控验证器 + 门控综合器 + 共享黑板)。(来自 @Niraven 的 [#26791](https://github.com/NousResearch/hermes-agent/pull/26791))([#28443](https://github.com/NousResearch/hermes-agent/pull/28443))
- 分派器从审查列连接审查智能体。([#28449](https://github.com/NousResearch/hermes-agent/pull/28449))
- 分派器中运行任务的陈旧检测。([#28452](https://github.com/NousResearch/hermes-agent/pull/28452))
- 重生防护阻止重复的工作器风暴。([#28455](https://github.com/NousResearch/hermes-agent/pull/28455))
- 重生防护延迟 `blocker_auth` 而非自动阻止。([#28683](https://github.com/NousResearch/hermes-agent/pull/28683))
- 跨配置文件的定时任务在仪表盘中展示。([#28457](https://github.com/NousResearch/hermes-agent/pull/28457))
- 工作器可见性端点:`/workers/active`、`/runs/{id}`、`/inspect`。(来自 @Interstellar-code 的 [#23761](https://github.com/NousResearch/hermes-agent/pull/23761))([#28432](https://github.com/NousResearch/hermes-agent/pull/28432))
### 任务配置与调度
- 每任务模型覆盖。([#28364](https://github.com/NousResearch/hermes-agent/pull/28364))
- 看板级默认工作目录。([#28394](https://github.com/NousResearch/hermes-agent/pull/28394))
- 可配置的工作树路径和分支。([#28462](https://github.com/NousResearch/hermes-agent/pull/28462))
- 定时任务开始时间。([#28384](https://github.com/NousResearch/hermes-agent/pull/28384))
- 延迟后续的定时状态。([#28467](https://github.com/NousResearch/hermes-agent/pull/28467))
- 裁剪的任务注释。([#28399](https://github.com/NousResearch/hermes-agent/pull/28399))
- 人工操作卡片的初始状态。([#28414](https://github.com/NousResearch/hermes-agent/pull/28414))
- `max_in_progress` 配置用于限制并发运行任务数。([#28420](https://github.com/NousResearch/hermes-agent/pull/28420))
- 按工作流字段过滤任务。([#28454](https://github.com/NousResearch/hermes-agent/pull/28454))
- `hermes kanban list` 的 `--sort` 选项。([#28427](https://github.com/NousResearch/hermes-agent/pull/28427))
- 所有 MCP 工具上的可选 `board` 参数。([#28444](https://github.com/NousResearch/hermes-agent/pull/28444))
- 在任务上标记发起 ACP 会话 ID。([#28447](https://github.com/NousResearch/hermes-agent/pull/28447))
- `auto_promote_children` 配置开关。([#28344](https://github.com/NousResearch/hermes-agent/pull/28344))
- `archive --rm` 用于硬删除归档任务。([#28355](https://github.com/NousResearch/hermes-agent/pull/28355))
- 父任务归档时提升依赖。([#28372](https://github.com/NousResearch/hermes-agent/pull/28372))
- 父依赖完成时提升阻塞任务。([#28377](https://github.com/NousResearch/hermes-agent/pull/28377))
- 父任务重新打开时降级就绪子任务。([#28382](https://github.com/NousResearch/hermes-agent/pull/28382))
- `promote` 动词用于手动 `todo→ready` 恢复 + 批量 `--ids`。(来自 [#29464](https://github.com/NousResearch/hermes-agent/pull/29464))([#31334](https://github.com/NousResearch/hermes-agent/pull/31334))
### 仪表盘
- 拖拽删除区 + 批量删除。([#28468](https://github.com/NousResearch/hermes-agent/pull/28468))
- 在展示和工具输出中表面每任务 `model_override`。([#28442](https://github.com/NousResearch/hermes-agent/pull/28442))
- 通过 `kanban.notification_sources` 跨配置文件通知投递。([#28395](https://github.com/NousResearch/hermes-agent/pull/28395))
- 向用户显示临时工作区删除警告。([#30949](https://github.com/NousResearch/hermes-agent/pull/30949))
- 移动仪表盘 UX 优化。([#28127](https://github.com/NousResearch/hermes-agent/pull/28127))
### 可靠性
- 工作器日志保留可配置。([#27867](https://github.com/NousResearch/hermes-agent/pull/27867))
- 可配置的声明 TTL。([#28392](https://github.com/NousResearch/hermes-agent/pull/28392))
- 崩溃错误指纹防止集群范围的重试耗尽。([#28380](https://github.com/NousResearch/hermes-agent/pull/28380))
- 在 `unblock_task` 时重置失败计数器。([#28379](https://github.com/NousResearch/hermes-agent/pull/28379))
- 在 `decompose_triage_task` 兄弟链接预验证中检测循环。([#28088](https://github.com/NousResearch/hermes-agent/pull/28088))
- 表面不可用的分诊辅助模型(自动分解感知)。([#27871](https://github.com/NousResearch/hermes-agent/pull/27871))
- 使失败诊断与重试限制对齐。([#27868](https://github.com/NousResearch/hermes-agent/pull/27868))
- 使工作器终端超时与任务运行时间对齐。([#27864](https://github.com/NousResearch/hermes-agent/pull/27864))
- 初始化时自动安装捆绑技能(看板工作器)。([#28368](https://github.com/NousResearch/hermes-agent/pull/28368))
- 使旧任务迁移幂等。([#28397](https://github.com/NousResearch/hermes-agent/pull/28397))
- 序列化数据库初始化。([#28383](https://github.com/NousResearch/hermes-agent/pull/28383))
- 完成时持久化工作器会话元数据。([#28387](https://github.com/NousResearch/hermes-agent/pull/28387))
- 将 `accept-hooks` 传递给工作器聊天子进程。([#28393](https://github.com/NousResearch/hermes-agent/pull/28393))
- 使用受限工具集保留工作器工具。([#28396](https://github.com/NousResearch/hermes-agent/pull/28396))
- 避免不安全的 Windows 工作器 Hermes 垫片解析。([#28398](https://github.com/NousResearch/hermes-agent/pull/28398))
- 使斜杠子命令与实时解析器同步。([#28376](https://github.com/NousResearch/hermes-agent/pull/28376))
- 在仪表盘中显示定时看板任务。([#28400](https://github.com/NousResearch/hermes-agent/pull/28400))
- 分配单任务看板分解。([#28401](https://github.com/NousResearch/hermes-agent/pull/28401))
- 可配置的 `max_tokens` 用于看板指定。([#28374](https://github.com/NousResearch/hermes-agent/pull/28374))
- 定时任务的每任务配置文件支持。([#28124](https://github.com/NousResearch/hermes-agent/pull/28124))
- Codex 应用服务器:在 `writable_roots` 中包含每个看板固定的路径。([#28435](https://github.com/NousResearch/hermes-agent/pull/28435))
- 在会话初始化时缓存看板工作器指导以实现提示缓存重用。([#28425](https://github.com/NousResearch/hermes-agent/pull/28425))
---
## ⚡ 性能
- 延迟导入 `openai._base_client`——每次 CLI 冷启动减少 240ms / 17MB。([#28864](https://github.com/NousResearch/hermes-agent/pull/28864))
- 智能体循环热路径优化——每轮对话函数调用减少 47%(31 轮聊天从 399k 降至 213k)。([#28866](https://github.com/NousResearch/hermes-agent/pull/28866))
- 延迟压缩可行性检查——每次构建智能体减少 170-290ms。([#28957](https://github.com/NousResearch/hermes-agent/pull/28957))
- 自适应子进程轮询——每次工具调用减少约 195ms,每轮超过 1 秒。([#29006](https://github.com/NousResearch/hermes-agent/pull/29006))
- Termux TUI 冷启动加速。([#29419](https://github.com/NousResearch/hermes-agent/pull/29419))
- Termux 非 TUI 冷启动加速。(来自 [#29438](https://github.com/NousResearch/hermes-agent/pull/29438))([#30121](https://github.com/NousResearch/hermes-agent/pull/30121))
- Termux 快速路径版本 + 延迟裸提示智能体启动。([#30609](https://github.com/NousResearch/hermes-agent/pull/30609))
- 将 `hermes --version` 墙壁时间降低 63%——逆转与 Codex CLI 的正面较量。([#31968](https://github.com/NousResearch/hermes-agent/pull/31968))
- 仅日期时间戳 + 响亮网关数据库往返日志——提高提示缓存命中率。([#27675](https://github.com/NousResearch/hermes-agent/pull/27675))
- 在会话初始化时缓存看板工作器指导以实现提示缓存重用。([#28425](https://github.com/NousResearch/hermes-agent/pull/28425))
---
## 🔧 工具系统
### 工具表面
- `patch`:缩进保留、CRLF 保留、按文件失败升级。([#32273](https://github.com/NousResearch/hermes-agent/pull/32273))
- `terminal`:当 `background=true` 静默运行时在调用时发出警告。([#31289](https://github.com/NousResearch/hermes-agent/pull/31289))
- `terminal`:在工具表面提示自建 CI 轮询器。([#33142](https://github.com/NousResearch/hermes-agent/pull/33142))
- `x_search`:表面降级结果 + 验证日期。([#29484](https://github.com/NousResearch/hermes-agent/pull/29484))
- `x_search`:配置 xAI 凭证时自动启用工具集。([#27376](https://github.com/NousResearch/hermes-agent/pull/27376))
- `computer_use`:通过 auxiliary.vision 路由 SOM/视觉捕获。([#30126](https://github.com/NousResearch/hermes-agent/pull/30126))
- `transcription`:拒绝符号链接的音频输入。([#10082](https://github.com/NousResearch/hermes-agent/pull/10082))
- TTS:防止 xAI 自动语音标签中出现重复的 `[pause]`。([#32237](https://github.com/NousResearch/hermes-agent/pull/32237))
- TTS:在 Telegram 语音投递之外保留原生音频。([#28512](https://github.com/NousResearch/hermes-agent/pull/28512))
- TTS:xAI `auto_speech_tags` 语音标签暂停功能(可选),用于自然语音回复。([#29376](https://github.com/NousResearch/hermes-agent/pull/29376))
- 语音:将过大的 CLI 录音分块。([#30044](https://github.com/NousResearch/hermes-agent/pull/30044))
- 语音:在 Docker 内遵守 `PULSE_SERVER` / `PIPEWIRE_REMOTE`。([#22534](https://github.com/NousResearch/hermes-agent/pull/22534))
### 浏览器
- 所有云浏览器提供商(Browserbase、Anchor、Camofox、Hyperbrowser 等)迁移到 image_gen 风格的插件。(来自 [#25580](https://github.com/NousResearch/hermes-agent/pull/25580))([#27403](https://github.com/NousResearch/hermes-agent/pull/27403))
- 自动启动 Chromium 系列浏览器用于 CDP。([#29106](https://github.com/NousResearch/hermes-agent/pull/29106))
- Docker:启动时发现 agent-browser Chromium 二进制文件。([#33184](https://github.com/NousResearch/hermes-agent/pull/33184))
### 图像生成
- **Krea** 提供商插件(Krea 2 Medium + Large)。([#33236](https://github.com/NousResearch/hermes-agent/pull/33236))
- FAL 后端移植到 `plugins/image_gen/fal`。(来自 [#27966](https://github.com/NousResearch/hermes-agent/pull/27966))([#30380](https://github.com/NousResearch/hermes-agent/pull/30380))
- 将 xAI 临时 URL 响应缓存到磁盘。([#31759](https://github.com/NousResearch/hermes-agent/pull/31759))
### 网页搜索
- **xAI Web 搜索**作为提供商插件。([#29042](https://github.com/NousResearch/hermes-agent/pull/29042))
### MCP
- **Nous 批准的 MCP 目录**及交互式选择器。([#30870](https://github.com/NousResearch/hermes-agent/pull/30870))
- **TLS 客户端证书(mTLS)支持**用于 HTTP 和 SSE MCP 服务器。([#33721](https://github.com/NousResearch/hermes-agent/pull/33721))
- 无头 OAuth 流程的 stdin 粘贴回退。([#32053](https://github.com/NousResearch/hermes-agent/pull/32053))
- 粘贴提示时的 `skip` 选项可绕过认证而不禁用服务器。([#32069](https://github.com/NousResearch/hermes-agent/pull/32069))
- 往返两端注册表感知的 `mcp_` 前缀。([#31700](https://github.com/NousResearch/hermes-agent/pull/31700))
---
## 🧩 技能生态系统
### 技能系统
- **技能包**——`/<名称>` 加载多个技能。([#28373](https://github.com/NousResearch/hermes-agent/pull/28373))
- 技能中心:健康检查、新鲜度徽章和看门狗定时任务。([#32345](https://github.com/NousResearch/hermes-agent/pull/32345))
- 技能写入的可选 AST 深度诊断。(来自 [#30918](https://github.com/NousResearch/hermes-agent/pull/30918))([#31198](https://github.com/NousResearch/hermes-agent/pull/31198))
- 后台审查提示中的捆绑/固定技能保护。([#28338](https://github.com/NousResearch/hermes-agent/pull/28338))
- 在捆绑技能同步摘要中显示用户修改的技能名称。([#28671](https://github.com/NousResearch/hermes-agent/pull/28671))
- 加载符号链接的技能斜杠命令。([#27759](https://github.com/NousResearch/hermes-agent/pull/27759))
- 按标识符而非名称对技能中心搜索结果去重。([#29490](https://github.com/NousResearch/hermes-agent/pull/29490))
### 新技能
- `openhands`——委托给 OpenHands 的编排技能(关闭 [#477](https://github.com/NousResearch/hermes-agent/issues/477))([#32261](https://github.com/NousResearch/hermes-agent/pull/32261))
- `code-wiki`——持久索引的开发维基(关闭 [#486](https://github.com/NousResearch/hermes-agent/issues/486))([#32240](https://github.com/NousResearch/hermes-agent/pull/32240))
- `web-pentest`——OWASP 方案(关闭 [#400](https://github.com/NousResearch/hermes-agent/issues/400))([#32265](https://github.com/NousResearch/hermes-agent/pull/32265))
- `baoyu-article-illustrator`([#28287](https://github.com/NousResearch/hermes-agent/pull/28287))
---
## ☁️ 提供商
### xAI 深度集成
- **xAI Web 搜索**作为 `plugins/web/xai/` 提供商插件。([#29042](https://github.com/NousResearch/hermes-agent/pull/29042))
- **`hermes proxy` xAI 上游**——由 xai-oauth 支持的 OpenAI 兼容本地代理。([#28356](https://github.com/NousResearch/hermes-agent/pull/28356))
- **5 月 15 日模型退役检测 + `hermes migrate xai`**,针对 grok-4 / grok-3 / grok-code-fast-1 / grok-imagine-image-pro。([#29277](https://github.com/NousResearch/hermes-agent/pull/29277))
- **`auto_speech_tags` 功能(可选)**,用于自然的 xAI TTS 语音回复。([#29376](https://github.com/NousResearch/hermes-agent/pull/29376))
- **xai-oauth base_url 固定为 x.ai 源**——关闭静默凭证泄漏向量。([#28952](https://github.com/NousResearch/hermes-agent/pull/28952))
- **OpenAI 风格执行指导**应用于 Grok / xai-oauth 模型。([#27797](https://github.com/NousResearch/hermes-agent/pull/27797))
- xAI:在医生/聊天启动时检测已退役的 5 月 15 日模型。([#29277](https://github.com/NousResearch/hermes-agent/pull/29277))
- xAI:解析 Grok Build 上下文用于 OAuth。([#30579](https://github.com/NousResearch/hermes-agent/pull/30579))
- xAI OAuth:层级门控 403 及 API 密钥回退。([#28351](https://github.com/NousResearch/hermes-agent/pull/28351))
- xAI OAuth:PKCE `code_challenge` 回显。([#27560](https://github.com/NousResearch/hermes-agent/pull/27560))
- xAI OAuth:终端刷新失败时隔离死令牌。([#28116](https://github.com/NousResearch/hermes-agent/pull/28116))
- xAI OAuth:在两个分类器站点遵守 `WKE=unauthenticated` 消歧器。([#30872](https://github.com/NousResearch/hermes-agent/pull/30872))
- xAI OAuth:接受裸代码手动粘贴(state=None)。(关闭 [#26923](https://github.com/NousResearch/hermes-agent/issues/26923))([#33880](https://github.com/NousResearch/hermes-agent/pull/33880))
- xAI OAuth:在环回超时时回退到手动粘贴。([#33231](https://github.com/NousResearch/hermes-agent/pull/33231))
- xAI 代理:在代理重试路径中处理 429 速率限制响应。([#33743](https://github.com/NousResearch/hermes-agent/pull/33743))
### 其他提供商
- **OpenAI API 作为一等提供商**(区别于 Codex 运行时)。([#31898](https://github.com/NousResearch/hermes-agent/pull/31898))
- **Microsoft Entra ID** 认证用于 Azure Foundry(在 Bearer 上保留 1M Anthropic-Messages beta)。(来自 [#27509](https://github.com/NousResearch/hermes-agent/pull/27509)、[#27022](https://github.com/NousResearch/hermes-agent/pull/27022))([#28101](https://github.com/NousResearch/hermes-agent/pull/28101)、[#28084](https://github.com/NousResearch/hermes-agent/pull/28084))
- **OpenRouter** 粘性路由——通过 `extra_body` 传递 `session_id`,使长时间运行的会话持续落在同一上游提供商上。(@Cybourgeoisie)([#33939](https://github.com/NousResearch/hermes-agent/pull/33939))
- Nous:JWT 令牌用于推理;停止重放无效的 Nous 刷新令牌。(@rewbs)([#27663](https://github.com/NousResearch/hermes-agent/pull/27663))
- Nous Portal:一键设置、状态 CLI 和 Nous 包含标记。([#30860](https://github.com/NousResearch/hermes-agent/pull/30860))
- Anthropic 适配器:从 `convert_messages_to_anthropic` 提取 7 个辅助函数。(来自 [#27784](https://github.com/NousResearch/hermes-agent/pull/27784))([#30386](https://github.com/NousResearch/hermes-agent/pull/30386))
- 目录:将 `qwen3.7-max` 添加到 Alibaba + Alibaba-Coding-Plan 模型列表。([#33129](https://github.com/NousResearch/hermes-agent/pull/33129))
- opencode-go:通过 `anthropic_messages` 路由 `qwen3.7-max`。(@beardthelion)([#32780](https://github.com/NousResearch/hermes-agent/pull/32780))
- opencode-go:暴露 Kimi K2 + DeepSeek 推理控制。([#30845](https://github.com/NousResearch/hermes-agent/pull/30845))
- 移除 Vercel AI Gateway 和 Vercel Sandbox。
- MiniMax OAuth:每次请求刷新短寿命访问令牌。([#30619](https://github.com/NousResearch/hermes-agent/pull/30619))
- Codex OAuth:隔离终端刷新错误。([#28118](https://github.com/NousResearch/hermes-agent/pull/28118))
- Codex:删除在 ChatGPT Pro 上返回 HTTP 400 的已失效模型 slug。([#33424](https://github.com/NousResearch/hermes-agent/pull/33424))
- Codex:重新认证时同步 `manual:device_code` 池条目。([#33744](https://github.com/NousResearch/hermes-agent/pull/33744))
- MiniMax OAuth:隔离终端刷新错误。([#28119](https://github.com/NousResearch/hermes-agent/pull/28119))
---
## 🔑 密钥
- **Bitwarden Secrets Manager** 集成,支持延迟 `bws` 安装。([#30035](https://github.com/NousResearch/hermes-agent/pull/30035))
- Bitwarden:支持欧盟云 + 自托管服务器 URL。([#31378](https://github.com/NousResearch/hermes-agent/pull/31378))
- 检测到的凭证标注其来源(Bitwarden)。([#30364](https://github.com/NousResearch/hermes-agent/pull/30364))
---
## 📱 消息平台(网关)
### 网关核心
- **可交付模式**——智能体从任何平台(Slack/Discord/Telegram/Teams/Email)将工件作为原生上传发送。([#27813](https://github.com/NousResearch/hermes-agent/pull/27813))
- `hermes send`——将任何脚本的输出通过管道发送到任何消息平台。(来自 [#19631](https://github.com/NousResearch/hermes-agent/pull/19631))([#27188](https://github.com/NousResearch/hermes-agent/pull/27188))
- 在活动会话期间对排队的文本后续进行去抖处理。(来自 [#31235](https://github.com/NousResearch/hermes-agent/pull/31235))([#31341](https://github.com/NousResearch/hermes-agent/pull/31341))
- 通过流式网关投递插件转换的最终响应。([#31433](https://github.com/NousResearch/hermes-agent/pull/31433))
- 在 `/reload-mcp` 时刷新缓存的智能体工具。([#32815](https://github.com/NousResearch/hermes-agent/pull/32815))
- 在长时间运行的工作负载上加固看板 + 提供商清理竞态条件。([#29479](https://github.com/NousResearch/hermes-agent/pull/29479))
### 新/重组的适配器
- **ntfy**——第 23 个平台,推送通知,插件形态,零核心编辑。(来自 [#30625](https://github.com/NousResearch/hermes-agent/pull/30625) → [#4043](https://github.com/NousResearch/hermes-agent/pull/4043))([#30867](https://github.com/NousResearch/hermes-agent/pull/30867))
- **Discord** 适配器迁移到捆绑插件。(来自 [#24356](https://github.com/NousResearch/hermes-agent/pull/24356))([#30591](https://github.com/NousResearch/hermes-agent/pull/30591))
- **Mattermost** 适配器迁移到捆绑插件。(来自 [#30916](https://github.com/NousResearch/hermes-agent/pull/30916))([#31748](https://github.com/NousResearch/hermes-agent/pull/31748))
### Telegram
- 原地编辑状态消息而非追加。(基于 @qike-ms 的 [#30141](https://github.com/NousResearch/hermes-agent/pull/30141))([#30864](https://github.com/NousResearch/hermes-agent/pull/30864))
- 跳过 STT 音频路径 + 通过本地 Bot API 服务器实现 2GB 上限。([#28541](https://github.com/NousResearch/hermes-agent/pull/28541))
- 将图像文档(.png/.jpg/.webp/.gif)通过视觉管道路由。([#28519](https://github.com/NousResearch/hermes-agent/pull/28519))
- 将音频文件附件从 STT 管道分离。([#28478](https://github.com/NousResearch/hermes-agent/pull/28478))
- `disable_topic_auto_rename` 网关标志。([#28523](https://github.com/NousResearch/hermes-agent/pull/28523))
- `ignore_root_dm` 配置用于丢弃没有 thread_id 的消息。([#28536](https://github.com/NousResearch/hermes-agent/pull/28536))
- 无发送者 user_id 的聊天范围认证。([#28525](https://github.com/NousResearch/hermes-agent/pull/28525))
- `TELEGRAM_ALLOWED_USERS` 为空时的失败关闭认证回退。([#28494](https://github.com/NousResearch/hermes-agent/pull/28494))
- 滚动工具进度气泡 + 限定 audio_file_paths 作用域。([#28482](https://github.com/NousResearch/hermes-agent/pull/28482))
- 避免自动 TTS 语音回复后的重复文本。([#28509](https://github.com/NousResearch/hermes-agent/pull/28509))
- 标记最终语音回复为值得通知,以便 Telegram 以音频形式投递。([#28504](https://github.com/NousResearch/hermes-agent/pull/28504))
### Discord
- 恢复 Windows 语音 opus 解码。([#33182](https://github.com/NousResearch/hermes-agent/pull/33182))
- `allow_any_attachment` 配置以接受任意文件类型。([#27245](https://github.com/NousResearch/hermes-agent/pull/27245))
- 转录原生语音笔记。([#28993](https://github.com/NousResearch/hermes-agent/pull/28993))
- 在延迟安装后定义 UI 视图类。([#28817](https://github.com/NousResearch/hermes-agent/pull/28817))
### Signal / Matrix / Feishu / Slack / WeCom
- Signal:群聊的 `require_mention` 过滤器。([#28574](https://github.com/NousResearch/hermes-agent/pull/28574))
- Matrix:时钟偏差导致静默消息丢失时发出警告。([#27330](https://github.com/NousResearch/hermes-agent/pull/27330))
- Matrix E2EE 安装完整依赖集;插件遵守 `is_connected`。([#31688](https://github.com/NousResearch/hermes-agent/pull/31688))
- Feishu:要求 Webhook 认证密钥 + 遵守配置扩展项。([#30746](https://github.com/NousResearch/hermes-agent/pull/30746))
- Feishu:对审批按钮强制认证和聊天绑定。([#30744](https://github.com/NousResearch/hermes-agent/pull/30744))
- Slack:套接字恢复 + Windows 重启去重。([#28873](https://github.com/NousResearch/hermes-agent/pull/28873))
- WeCom:安全解析不受信任的 XML。([#32442](https://github.com/NousResearch/hermes-agent/pull/32442))
### DingTalk / Webhooks / Microsoft Graph
- DingTalk:转录原生语音笔记。([#28993](https://github.com/NousResearch/hermes-agent/pull/28993))
- Webhook:在动态路由重载时执行 `INSECURE_NO_AUTH` 安全护栏。([#30863](https://github.com/NousResearch/hermes-agent/pull/30863))
- Webhook:限制默认工具集能力。([#30745](https://github.com/NousResearch/hermes-agent/pull/30745))
- Microsoft Graph:加强 Webhook 认证要求。([#30169](https://github.com/NousResearch/hermes-agent/pull/30169))
---
## 🖥️ CLI 与 TUI
### CLI
- CLI 和 TUI 中的 `/update` 斜杠命令。([#23854](https://github.com/NousResearch/hermes-agent/pull/23854))
- 拉取后语法检查失败时的更新自动回滚。([#28669](https://github.com/NousResearch/hermes-agent/pull/28669))
- `hermes update` 的 `--branch` 标志。(@jquesnelle)([#29591](https://github.com/NousResearch/hermes-agent/pull/29591))
- `/exit --delete` 标志用于退出时删除会话。(来自 [#17665](https://github.com/NousResearch/hermes-agent/pull/17665))([#27101](https://github.com/NousResearch/hermes-agent/pull/27101))
- 状态栏中运行 `/background` 任务的 `▶ N` 指示器。([#27175](https://github.com/NousResearch/hermes-agent/pull/27175))
- 状态栏中实时后台终端进程数。([#32061](https://github.com/NousResearch/hermes-agent/pull/32061))
- 在 `/status` 输出中附加会话总结。(来自 [#18587](https://github.com/NousResearch/hermes-agent/pull/18587))([#27176](https://github.com/NousResearch/hermes-agent/pull/27176))
- 可配置的粘贴折叠阈值(TUI + CLI)。(来自 [#29723](https://github.com/NousResearch/hermes-agent/pull/29723))([#32087](https://github.com/NousResearch/hermes-agent/pull/32087))
- `/resume` 接受位置编号。([#31709](https://github.com/NousResearch/hermes-agent/pull/31709))
- 恢复工具调用显示——详细模式、特定失败原因、待办进度。([#31293](https://github.com/NousResearch/hermes-agent/pull/31293))
- 在 Qwen 认证状态中验证运行时令牌刷新。([#31196](https://github.com/NousResearch/hermes-agent/pull/31196))
### TUI
- **TUI 会话编排器**——一个 TUI 窗口中的多个实时会话。(来自 [#27642](https://github.com/NousResearch/hermes-agent/pull/27642))([#32980](https://github.com/NousResearch/hermes-agent/pull/32980))
- `mouse_tracking` DEC 模式预设。(来自 @OutThisLife 的 [#26681](https://github.com/NousResearch/hermes-agent/pull/26681))([#30084](https://github.com/NousResearch/hermes-agent/pull/30084))
- Termux 回滚保留 + 触屏友好默认值。([#28910](https://github.com/NousResearch/hermes-agent/pull/28910))
- 回滚中显示完整助手文本(无历史截断)。([#28829](https://github.com/NousResearch/hermes-agent/pull/28829))
- 分支会话时保留回滚。([#30162](https://github.com/NousResearch/hermes-agent/pull/30162))
- 在 Markdown 中保留 Python 双下划线标识符。([#28582](https://github.com/NousResearch/hermes-agent/pull/28582))
- TUI 提示中显示活动配置文件。([#28581](https://github.com/NousResearch/hermes-agent/pull/28581))
- 改善 Charizard 补全菜单对比度。([#28346](https://github.com/NousResearch/hermes-agent/pull/28346))
- 修复斜杠下拉菜单截断 `/goal` 最后一个字符的问题。([#31311](https://github.com/NousResearch/hermes-agent/pull/31311))
- Linux/wayland 上的剪贴板复制。([#29342](https://github.com/NousResearch/hermes-agent/pull/29342))
- 锚定 `splitReasoning` 未闭合标签正则表达式;防止吃掉最后一段。([#29426](https://github.com/NousResearch/hermes-agent/pull/29426))
- 显示详细工具信息。([#30225](https://github.com/NousResearch/hermes-agent/pull/30225))
- 在 Termux 上加载 Linux 技能 + 保留 @adybag14-cyber 的 Termux 门控。([#30166](https://github.com/NousResearch/hermes-agent/pull/30166))
- 使用 codex 应用服务器处理图像。([#31220](https://github.com/NousResearch/hermes-agent/pull/31220))
- 视口大小变化时刷新虚拟转录本。([#31077](https://github.com/NousResearch/hermes-agent/pull/31077))
- 完成时忽略迟到的思考增量。([#31055](https://github.com/NousResearch/hermes-agent/pull/31055))
- 立即提交合成器输入突发。([#31053](https://github.com/NousResearch/hermes-agent/pull/31053))
- 记录父网关生命周期退出事件。([#31051](https://github.com/NousResearch/hermes-agent/pull/31051))
- 语音关闭时清除 TTS 环境变量 + 状态栏中的 TTS 指示器。([#30987](https://github.com/NousResearch/hermes-agent/pull/30987))
- 将 `--expose-gc` 作为节点参数而非 NODE_OPTIONS 传递。([#29998](https://github.com/NousResearch/hermes-agent/pull/29998))
- 将合成器 cursorLayout 与 wrap-ansi 对齐,消除多行光标漂移。([#27489](https://github.com/NousResearch/hermes-agent/pull/27489))
- 加强 Terminal.app 渲染和颜色路径。([#27251](https://github.com/NousResearch/hermes-agent/pull/27251))
- 将 `/goal` 判定结果排除在紧凑状态行之外。([#27971](https://github.com/NousResearch/hermes-agent/pull/27971))
- 为 8 色终端(Docker)限制 curses 颜色 8。([#30260](https://github.com/NousResearch/hermes-agent/pull/30260))
---
## 🔒 安全与可靠性
### Promptware 与内存加固
- **Promptware 防御**——共享威胁模式 + 内存加载时扫描 + 工具结果分隔符。([#32269](https://github.com/NousResearch/hermes-agent/pull/32269))
- 将内存内容扫描模式扩展至与技能防御同等。([#9151](https://github.com/NousResearch/hermes-agent/pull/9151))
- 加强技能防御的多词提示模式。(@YLChen-007)([#26852](https://github.com/NousResearch/hermes-agent/pull/26852))
- 拆分 cron 扫描器,使技能散文停止对走私模式的误报。([#32339](https://github.com/NousResearch/hermes-agent/pull/32339))
### 文件安全
- 保护 Hermes 控制面文件免受提示注入(`auth.json`、`config.yaml`、`webhook_subscriptions.json`、`mcp-tokens/`)。(来自 @PratikRai0101 的 [#14157](https://github.com/NousResearch/hermes-agent/pull/14157))([#30397](https://github.com/NousResearch/hermes-agent/pull/30397))
- 在配置文件下运行时禁止写入 `<root>/.env`。([#29687](https://github.com/NousResearch/hermes-agent/pull/29687))
- 对凭证存储的深度防御读取拒绝。(来自 [#17659](https://github.com/NousResearch/hermes-agent/pull/17659) + [#8055](https://github.com/NousResearch/hermes-agent/pull/8055))([#30721](https://github.com/NousResearch/hermes-agent/pull/30721))
- TTS `output_path` 遍历 + 更新 ZIP 符号链接拒绝。(来自 [#6693](https://github.com/NousResearch/hermes-agent/pull/6693) + [#15881](https://github.com/NousResearch/hermes-agent/pull/15881))([#32056](https://github.com/NousResearch/hermes-agent/pull/32056))
- 拒绝符号链接的音频输入。([#10082](https://github.com/NousResearch/hermes-agent/pull/10082))
### 凭证安全
- 避免持久化借用的凭证秘密——运行时环境来源的密钥不再泄漏到 `auth.json` 中。([#31416](https://github.com/NousResearch/hermes-agent/pull/31416))
- 根据主机允许列表验证 Nous Portal `inference_base_url`。(来自 [#27612](https://github.com/NousResearch/hermes-agent/pull/27612))([#30611](https://github.com/NousResearch/hermes-agent/pull/30611))
- 加强 API 服务器密钥占位符处理。([#30738](https://github.com/NousResearch/hermes-agent/pull/30738))
- 加强 Google Chat OAuth 凭证持久化。(@Zyrixtrex)([#24788](https://github.com/NousResearch/hermes-agent/pull/24788))
- xAI OAuth:将推理 `base_url` 固定到 x.ai 源。([#28952](https://github.com/NousResearch/hermes-agent/pull/28952))
- 终端刷新失败时隔离死 OAuth 令牌(xAI、Codex、MiniMax)。([#28116](https://github.com/NousResearch/hermes-agent/pull/28116)、[#28118](https://github.com/NousResearch/hermes-agent/pull/28118)、[#28119](https://github.com/NousResearch/hermes-agent/pull/28119))
### 供应链
- **通过 OSV.dev 按需进行供应链审计**——`hermes audit`。([#31460](https://github.com/NousResearch/hermes-agent/pull/31460))
- `hermes update` 在拉取后语法验证关键文件,失败时自动回滚。([#28669](https://github.com/NousResearch/hermes-agent/pull/28669))
- `hermes.exe` 与并发 Windows 实例隔离。([#26677](https://github.com/NousResearch/hermes-agent/pull/26677))
### 其他加固
- 限制默认 Webhook 工具集能力。([#30745](https://github.com/NousResearch/hermes-agent/pull/30745))
- 加强 Microsoft Graph Webhook 认证要求。([#30169](https://github.com/NousResearch/hermes-agent/pull/30169))
- 要求公共 msgraph webhook 绑定有来源 CIDR 白名单。([#33722](https://github.com/NousResearch/hermes-agent/pull/33722))
- 在分派 API 服务器工作前要求 `API_SERVER_KEY`。([#33232](https://github.com/NousResearch/hermes-agent/pull/33232))
- env_passthrough:将 GHSA-rhgp-j443-p4rf 过滤器应用于 config.yaml 路径。(@roadhero)([#27794](https://github.com/NousResearch/hermes-agent/pull/27794))
- 仪表盘 + WeCom:限制 Markdown 链接方案;安全解析不受信任的 XML。([#32442](https://github.com/NousResearch/hermes-agent/pull/32442))
- 从 PR [#29311](https://github.com/NousResearch/hermes-agent/pull/29311)(GHSA-5qr3-c538-wm9j)中修复项目插件 RCE 绕过。([#30837](https://github.com/NousResearch/hermes-agent/pull/30837))
- 跨配置文件的软防护用于文件写入工具 + 系统提示暗示。([#31290](https://github.com/NousResearch/hermes-agent/pull/31290))
- 在 Android psutil 兼容性安装程序中拒绝不安全的 tar 成员。([#33742](https://github.com/NousResearch/hermes-agent/pull/33742))
- 在 tirith 自动安装期间拒绝非常规 tar 成员。([#33786](https://github.com/NousResearch/hermes-agent/pull/33786))
---
## 🪟 原生 Windows(Beta 继续)
- 完整的 Windows 引导——`dep_ensure` + `install.ps1` + 检测。(@alt-glitch)([#27845](https://github.com/NousResearch/hermes-agent/pull/27845))
- `install.ps1`:剥离 BOM、`-Commit`/`-Tag` 固定参数、加强 git 操作。(@jquesnelle)([#28169](https://github.com/NousResearch/hermes-agent/pull/28169))
- 将 ACP 浏览器引导整合到 `install.{sh,ps1}` 中。(@alt-glitch)([#27851](https://github.com/NousResearch/hermes-agent/pull/27851))
- `hermes update` 隔离正在运行的 `hermes.exe`。([#26677](https://github.com/NousResearch/hermes-agent/pull/26677))
- Windows 上的 Discord 语音 opus 解码。([#33182](https://github.com/NousResearch/hermes-agent/pull/33182))
- 兼容 Windows Docker Desktop 的 compose 文件。(@Sunil123135)([#31031](https://github.com/NousResearch/hermes-agent/pull/31031))
---
## 🖥️ 网页仪表盘
- 加强 Slack 套接字恢复 + Windows 重启去重。([#28873](https://github.com/NousResearch/hermes-agent/pull/28873))
- 网页仪表盘:将复选框迁移到 `@nous-research/ui` + 设计系统优化。(@austinpickett)([#28814](https://github.com/NousResearch/hermes-agent/pull/28814))
- 网页仪表盘:可折叠侧边栏。(@austinpickett)([#33421](https://github.com/NousResearch/hermes-agent/pull/33421))
- 仪表盘排版和对比度优化。(来自 [#28832](https://github.com/NousResearch/hermes-agent/pull/28832))([#30714](https://github.com/NousResearch/hermes-agent/pull/30714))
- 技能页面:延迟获取目录而非将 34MB 打包到 JS 中。([#33809](https://github.com/NousResearch/hermes-agent/pull/33809))
---
## 🐳 Docker
- **s6-overlay 容器监管**——抽象的 `ServiceManager` 协议(systemd/launchd/Windows/s6 后端)、容器内按配置文件网关监管、容器重启协调、hadolint/shellcheck CI。(来自 @benbarclay 的 [#30136](https://github.com/NousResearch/hermes-agent/pull/30136))([#31760](https://github.com/NousResearch/hermes-agent/pull/31760))
- 在 s6 镜像内自动将 `gateway run` 重定向到监管模式。(@benbarclay)([#33583](https://github.com/NousResearch/hermes-agent/pull/33583))
- 将监管的网关标准输出 tee 到 docker 日志。(@benbarclay)([#33621](https://github.com/NousResearch/hermes-agent/pull/33621))
- 在调用 CLI 之前将 `docker exec` 降权到 hermes 用户 ID。(@benbarclay)([#33628](https://github.com/NousResearch/hermes-agent/pull/33628))
- 为仪表盘和 s6 网关服务对齐 HOME 环境变量。(@Dusk1e)([#33481](https://github.com/NousResearch/hermes-agent/pull/33481))
- 将构建时 Git SHA 嵌入镜像,以便 `hermes dump` 报告它。(@benbarclay)([#33655](https://github.com/NousResearch/hermes-agent/pull/33655))
- `hermes update` 打印 `docker pull` 指导而非虚假的 git 错误。(@benbarclay)([#33659](https://github.com/NousResearch/hermes-agent/pull/33659))
- 通过多阶段构建从 `node:22-bookworm-slim` 升级 Node 到 22 LTS。(@benbarclay)([#33060](https://github.com/NousResearch/hermes-agent/pull/33060))
- 从 apt 安装中移除 `build-essential`。(@benbarclay)([#33028](https://github.com/NousResearch/hermes-agent/pull/33028))
- 通过 s6 将环境变量传播到 cont-init 和主 CMD。([#32412](https://github.com/NousResearch/hermes-agent/pull/32412))
- 针对性的 chown 以保留 `HERMES_HOME` 中的主机文件所有权。([#33033](https://github.com/NousResearch/hermes-agent/pull/33033))
- 在 stage2 中以 root 身份创建 `HERMES_HOME`,然后执行 chown / 权限降权。([#33078](https://github.com/NousResearch/hermes-agent/pull/33078))
- 在 UID 重映射时 chown `ui-tui` 和 `node_modules`,以便 TUI esbuild 正常工作。([#33045](https://github.com/NousResearch/hermes-agent/pull/33045))
- 在镜像中包含 `anthropic`、`bedrock`、`azure-identity` 额外包。([#30504](https://github.com/NousResearch/hermes-agent/pull/30504))
- 停止将每次提交的 SHA 标签推送到 Docker Hub。([#29387](https://github.com/NousResearch/hermes-agent/pull/29387))
- 简化 Docker 标记——在主分支推送时同时推送 `:main` 和 `:latest`。([#33225](https://github.com/NousResearch/hermes-agent/pull/33225))
- 跨 GitHub Actions 作业的测试切片。(@ethernet8023)([#30575](https://github.com/NousResearch/hermes-agent/pull/30575))
- 启动时发现 agent-browser Chromium 二进制文件。([#33184](https://github.com/NousResearch/hermes-agent/pull/33184))
---
## 🌐 API 服务器
- **会话控制 API**——`/api/sessions/*`(创建/列出/读取/补丁/删除/分叉)+ SSE 流式聊天。(来自 @Codename-11 的 [#29302](https://github.com/NousResearch/hermes-agent/pull/29302) + @Schwartz10 的多模态后续)([#33134](https://github.com/NousResearch/hermes-agent/pull/33134))
- `GET /v1/skills` 和 `/v1/toolsets`。([#33016](https://github.com/NousResearch/hermes-agent/pull/33016))
- 在 stream/store/approval 载荷中强制转换字符串化的布尔值。(来自 [#26639](https://github.com/NousResearch/hermes-agent/pull/26639))([#27293](https://github.com/NousResearch/hermes-agent/pull/27293))
- 在认证失败回退解析中遵守 `key_env`。([#30840](https://github.com/NousResearch/hermes-agent/pull/30840))
---
## 🎟️ ACP(VS Code / Zed / JetBrains)
- 会话编辑自动批准模式。(来自 [#27034](https://github.com/NousResearch/hermes-agent/pull/27034))([#27862](https://github.com/NousResearch/hermes-agent/pull/27862))
- 丰富 Zed 权限卡片——标题中的命令 + `reject_always`。([#28148](https://github.com/NousResearch/hermes-agent/pull/28148))
- 在响应 `session/load` 之前重放会话历史。([#26957](https://github.com/NousResearch/hermes-agent/pull/26957)、[#26943](https://github.com/NousResearch/hermes-agent/pull/26943))
- 通过流式网关投递插件转换的最终响应。([#31433](https://github.com/NousResearch/hermes-agent/pull/31433))
---
## 🔌 插件表面
- `register_tts_provider()` 插件钩子。(来自 [#30420](https://github.com/NousResearch/hermes-agent/pull/30420))([#31745](https://github.com/NousResearch/hermes-agent/pull/31745))
- `register_transcription_provider()` 钩子 + `stt.providers` 命令提供商注册表。(来自 [#30493](https://github.com/NousResearch/hermes-agent/pull/30493))([#31907](https://github.com/NousResearch/hermes-agent/pull/31907))
- PluginContext API 中的 `register_auxiliary_task()`。(来自 [#29817](https://github.com/NousResearch/hermes-agent/pull/29817))([#31177](https://github.com/NousResearch/hermes-agent/pull/31177))
- 捆绑的 `security-guidance` 插件。([#33131](https://github.com/NousResearch/hermes-agent/pull/33131))
- Discord 和 Mattermost 迁移到捆绑插件。([#30591](https://github.com/NousResearch/hermes-agent/pull/30591)、[#31748](https://github.com/NousResearch/hermes-agent/pull/31748))
- ntfy 作为平台插件。([#30867](https://github.com/NousResearch/hermes-agent/pull/30867))
- 在 `hermes plugins list` 中展示分类命名空间的插件。([#27187](https://github.com/NousResearch/hermes-agent/pull/27187))
- 插件发现失败提升到 WARNING 级别。([#28318](https://github.com/NousResearch/hermes-agent/pull/28318))
- `hermes_plugins` 包含在 gateway.log 组件过滤器中。([#28313](https://github.com/NousResearch/hermes-agent/pull/28313))
- 在 `is_connected` 门控之前播种插件额外项。([#31703](https://github.com/NousResearch/hermes-agent/pull/31703))
- 仪表盘:白名单插件资产 + 黑名单影响子进程的环境变量。([#32277](https://github.com/NousResearch/hermes-agent/pull/32277))
---
## 📦 分发与安装
- 安装方法戳记 + Docker 检测。(@alt-glitch)([#27843](https://github.com/NousResearch/hermes-agent/pull/27843))
- Nix `#messaging` 和 `#full` 包变体。(@alt-glitch)([#33108](https://github.com/NousResearch/hermes-agent/pull/33108))
- 通过 `--extra messaging` 预加载消息网关依赖项。(来自 [#26394](https://github.com/NousResearch/hermes-agent/pull/26394))([#27558](https://github.com/NousResearch/hermes-agent/pull/27558))
- 避免将安装程序直接通过管道传给 `iex`(Windows)。([#28347](https://github.com/NousResearch/hermes-agent/pull/28347))
- 在 wheel 中打包捆绑技能。([#28421](https://github.com/NousResearch/hermes-agent/pull/28421))
- 在 wheel 中打包仪表盘插件资产。([#28406](https://github.com/NousResearch/hermes-agent/pull/28406))
- 将 Camofox 改为延迟安装而非急切安装。([#27055](https://github.com/NousResearch/hermes-agent/pull/27055))
- 将 STT 延迟安装接入 transcription_tools.py。([#30256](https://github.com/NousResearch/hermes-agent/pull/30256))
---
## 🐛 值得注意的错误修复(仅高亮)
- 在 `hermes model` 中通过活动 base URL 匹配裸自定义提供商。([#28908](https://github.com/NousResearch/hermes-agent/pull/28908))
- 将 `auxiliary.vision.provider=openai` 路由到 api.openai.com,跳过仅文本主模型。([#31452](https://github.com/NousResearch/hermes-agent/pull/31452))
- Lint:当 LSP 将处理文件时跳过按文件的 shell linter。([#29054](https://github.com/NousResearch/hermes-agent/pull/29054))
- 在 `/model` 选择器中将空凭证池条目视为未认证。([#28312](https://github.com/NousResearch/hermes-agent/pull/28312))
- 窗口内回退:Firecrawl 集成标签、send_message @用户名自动提及、Telegram 快速命令仅菜单、Telegram 轮次固定。
---
## 🧪 测试
- 解除延迟安装探针,使 `_HAS_FASTER_WHISPER` 补丁生效。([#30334](https://github.com/NousResearch/hermes-agent/pull/30334))
- 覆盖默认看板仪表盘固定。([#28361](https://github.com/NousResearch/hermes-agent/pull/28361))
- 覆盖 `_task_dict` 的 `task_age` 回退。([#28365](https://github.com/NousResearch/hermes-agent/pull/28365))
- 为 `kanban_notify` 工件投递测试白名单 `tmp_path`。([#30851](https://github.com/NousResearch/hermes-agent/pull/30851)、[#30852](https://github.com/NousResearch/hermes-agent/pull/30852))
- 覆盖 Codex 中空输出流终端事件。([#33137](https://github.com/NousResearch/hermes-agent/pull/33137))
---
## 📚 文档
- **30 天文档大修**——完整正确性审计,窗口内的每个 PR 都覆盖,Nous Portal 编织,侧边栏重组。([#33782](https://github.com/NousResearch/hermes-agent/pull/33782))
- 专门的 Nous Portal 集成页面和设置指南。([#31296](https://github.com/NousResearch/hermes-agent/pull/31296))
- 提供商:将 Nous Portal 放在第一位,Google Gemini OAuth 放在最后。([#31287](https://github.com/NousResearch/hermes-agent/pull/31287))
- `session_search` 重写为单一形态工具。([#27840](https://github.com/NousResearch/hermes-agent/pull/27840))
- 看板:记录 failure_limit、max_retries、内联创建快捷键、目标与看板设置。([#28357](https://github.com/NousResearch/hermes-agent/pull/28357)、[#28358](https://github.com/NousResearch/hermes-agent/pull/28358)、[#28359](https://github.com/NousResearch/hermes-agent/pull/28359)、[#28360](https://github.com/NousResearch/hermes-agent/pull/28360)、[#28362](https://github.com/NousResearch/hermes-agent/pull/28362))
- 看板 Codex 通道技能。([#28430](https://github.com/NousResearch/hermes-agent/pull/28430))
- xAI OAuth:注意 X Premium+ 也解锁 Grok OAuth。([#29055](https://github.com/NousResearch/hermes-agent/pull/29055))
- 文档站点:Docker 音频桥接说明,“在容器中安装更多工具”,xurl auth HOME 在 Docker 中。
- Email:澄清网关与 Himalaya 设置。(@helix4u)([#33634](https://github.com/NousResearch/hermes-agent/pull/33634))
- 认证文档:将过时的 `hermes login` 引用替换为 `hermes auth add`。([#32859](https://github.com/NousResearch/hermes-agent/pull/32859))
---
## 👥 贡献者
### 核心
- @teknium1(负责人)
### 值得注意的修复与精选
- **@benbarclay** — s6-overlay 容器监管(29 次提交修复)、Node 22 LTS 升级、build-essential 清理、s6 中 `gateway run` 自动重定向、将监管的标准输出 tee 到 docker 日志、`hermes update` Docker 指导、构建时 SHA 戳记
- **@OutThisLife** — `mouse_tracking` DEC 模式预设
- **@jquesnelle** — Windows 安装程序加固、`hermes update` 的 `--branch` 标志、install.ps1 BOM 剥离/提交固定
- **@alt-glitch** — Windows `dep_ensure` 引导、Nix 包变体(`.#messaging`、`.#full`)、安装方法戳记、ACP 浏览器引导整合
- **@austinpickett** — `/update` 斜杠命令、仪表盘复选框 → `@nous-research/ui`、移动仪表盘优化、可折叠侧边栏
- **@ethernet8023** — CI 测试跨 GH Actions 作业切片、TUI 剪贴板复制修复
- **@kshitijk4poor** — 医生部分横幅 + 失败与问题辅助函数提取、发布后修复集群(策展人后续、看板 SQLite 加固、安装全局可读 uv 目录、xAI 裸代码粘贴)
- **@rewbs** — Nous JWT 推理切换 + 刷新令牌重放修复
- **@Codename-11** + **@Schwartz10** — 会话控制 API(REST + SSE + 多模态后续)
- **@Niraven** — 看板集群拓扑辅助工具
- **@Interstellar-code** — 看板工作器可见性端点
- **@adybag14-cyber** — Termux 冷启动优化(多个 PR)
- **@qike-ms** — Telegram 原地状态编辑设计
- **@sprmn24** — ntfy 适配器
- **@Jaaneek** — xAI Web 搜索提供商插件
- **@yannsunn** — `hermes proxy` 的 xAI 上游适配器
- **@Cybourgeoisie** — 通过 session_id 的 OpenRouter 粘性路由
- **@memosr** — Nous Portal base_url 白名单验证
- **@Sunil123135** — 兼容 Windows Docker Desktop 的 compose 文件
- **@Dusk1e** — Docker HOME 对齐用于仪表盘 + s6 网关服务
- **@beardthelion** — opencode-go anthropic_messages 路由
- **@YLChen-007** — 技能防御多词提示模式
- **@roadhero** — env_passthrough GHSA-rhgp-j443-p4rf 过滤器
- **@Zyrixtrex** — Google Chat OAuth 凭证持久化加固
- **@briandevans**、**@tomqiaozc** — 凭证存储的深度防御读取拒绝
- **@PratikRai0101** — 控制面文件写入保护
- **@helix4u**、**@Bartok9**、**@zccyman** — 辅助回退阶梯组件
- **@ms-alan**、**@ticketclosed-wontfix**、**@donovan-yohan** — TUI 会话编排器 + 后续
- **@daimon-nous[bot]** — 定时任务每作业配置文件支持
- **@bisko** — 跨提供商回退时重新填充 `reasoning_content`
### 所有贡献者
@02356abc, @0xchainer, @0xDevNinja, @0xjackyang, @0xsir0000, @0z1-ghb, @8bit64k, @aaronlab, @AceWattGit,
@ACR27, @adam91holt, @AdamPlatin123, @Ade5954, @AdityaRajeshGadgil, @adybag14-cyber, @AhmetArif0, @ai-hana-ai,
@alaamohanad169-ship-it, @alber70g, @albert748, @alt-glitch, @aqilaziz, @argabor, @asdlem, @austinpickett,
@avifenesh, @awizemann, @B0Tch1, @Bartok9, @BaxBit, @Beandon13, @beardthelion, @benbarclay, @bensargotest-sys,
@binhnt92, @bird, @bisko, @BlackishGreen33, @booker1207, @bradhallett, @briandevans, @Brixyy, @brndnsvr,
@BROCCOLO1D, @btorresgil, @burjorjee, @carltonawong, @Carry00, @chaconne67, @chdlc, @chromalinx, @ChyuWei,
@CipherFrame, @cmullins70, @CNSeniorious000, @codeblackhole1024, @Codename-11, @colin-chang, @counterposition,
@cresslank, @CryptoByz, @cyb0rgk1tty, @Cybourgeoisie, @daizhonggeng, @darvsum, @davidcampbelldc, @deas,
@dgians, @dillweed, @DoGMaTiiC, @donovan-yohan, @draplater, @Drexuxux, @dskwe, @dsr-restyn, @Dusk1e,
@dusterbloom, @duyua9, @egilewski, @el-analista, @eliteworkstation94-ai, @eloklam, @EloquentBrush0x, @emonty,
@emozilla, @erhnysr, @erikengervall, @Erosika, @ether-btc, @ethernet8023, @EvilHumphrey, @fabiosiqueira,
@falasi, @falconexe, @fardoche6, @felix-windsor, @Fewmanism, @ffr31mr, @flamiinngo, @flanny7, @flooryyyy,
@fonhal, @francip, @fujinice, @gianfrancopiana, @glennc, @Glucksberg, @godlin-gh, @Grogger, @guillaumemeyer,
@Gutslabs, @H-Ali13381, @hanzckernel, @haran2001, @hawknewton, @hayka-pacha, @hehehe0803, @helix4u, @HenkDz,
@Hermes, @hermesagent26, @Hinotoi-agent, @hongchen1993, @honor2030, @houenyang-momo, @ht1072, @hueilau,
@iamfoz, @ilonagaja509-glitch, @InB4DevOps, @indigokarasu, @Interstellar-code, @iqdoctor, @iRonin, @Jaaneek,
@JabberELF, @jacevys, @jackey8616, @jackjin1997, @jdelmerico, @jfuenmayor, @Jiahui-Gu, @JimLiu, @joe102084,
@JohnC1009, @jonpol01, @Jpalmer95, @Julientalbot, @justemu, @justincc, @jvinals, @karthikeyann, @kasunvinod,
@kchuang1015, @kenyonxu, @khungate, @kiranvk-2011, @kjames2001, @konsisumer, @kpadilha, @kriscolab,
@krislidimo, @kronexoi, @kshitijk4poor, @kunci115, @Kylejeong2, @kylekahraman, @LaPhilosophie, @leeseoki0,
@lemassykoi, @Lempkey, @LeonJS, @LeonSGP43, @lidge-jun, @LifeJiggy, @liuhao1024, @LizerAIDev, @loicnico96,
@loongfay, @m0n3r0, @malaiwah, @matthewlai, @mavrickdeveloper, @maxmilian, @McClean-Edison, @memosr,
@Mind-Dragon, @momowind, @MoonJuhan, @MoonRay305, @moortekweb-art, @MorAlekss, @ms-alan, @Nami4D,
@nehaaprasaad, @nekwo, @nftpoetrist, @NickLarcombe, @nidhi-singh02, @Niraven, @nnnet, @noctilust, @novax635,
@nthrow, @nv-kasikritc, @nycomar, @OCWC22, @oemtalks, @OmX, @ooovenenoso, @orcool, @oseftg, @outsourc-e,
@OutThisLife, @Paperclip, @PaTTeeL, @pepelax, @phoenixshen, @Pluviobyte, @pnascimento9596, @pochi-gio, @pr7426,
@PratikRai0101, @Prithvi1994, @psionic73, @ptichalouf, @Que0x, @QuenVix, @quocanh261997, @qWaitCrypto, @Qwinty,
@r266-tech, @rak135, @rdasilva1016-ui, @rewbs, @roadhero, @rodrigoeqnit, @RonHillDev, @roycepersonalassistant,
@rudi193-cmd, @RyanRana, @sadiksaifi, @samahn0601, @samggggflynn, @SamuelZ12, @sanghyuk-seo-nexcube,
@Saurav0989, @savanne-kham, @Schrotti77, @Schwartz10, @SerenityTn, @sgtworkman, @sharziki, @shaun0927,
@shellybotmoyer, @shunsuke-hikiyama, @SimbaKingjoe, @SimoKiihamaki, @sir-ad, @Slimydog21, @slowtokki0409,
@Soju06, @someaka, @soynchux, @sprmn24, @Stark-X, @steezkelly, @stepanov1975, @stephenschoettler,
@stevehq26-bot, @steveonjava, @Strontvod, @subtract0, @Sunil123135, @superearn-fisher, @Sylw3ster, @tchanee,
@that-ambuj, @thedavidmurray, @TheOnlyMika, @therahul-yo, @thewillhuang, @ticketclosed-wontfix, @Timur00Kh,
@tomqiaozc, @Tosko4, @Tranquil-Flow, @tw2818, @uzunkuyruk, @vaddisrinivas, @vanthinh6886, @vgocoder,
@victorGPT, @vynxevainglory-ai, @waefrebeorn, @walli, @wangpuv, @wanwan2qq, @wesleysimplicio, @worlldz,
@wpengpeng168, @WuKongAI-CMU, @wuli666, @Wysie, @wysie, @xxxigm, @yannsunn, @YanzhongSu, @YarrowQiao, @ygd58,
@YLChen-007, @yoniebans, @yu-xin-c, @YuanHanzhong, @zapabob, @zccyman, @ziliangpeng, @zwolniony, @Zyrixtrex
---
**完整变更日志:** [v2026.5.16...v2026.5.28](https://github.com/NousResearch/hermes-agent/compare/v2026.5.16...v2026.5.28)
# Hermes Agent v0.15.0 (v2026.5.28)
**Release Date:** May 28, 2026
**Since v0.14.0:** 1,302 commits · 747 merged PRs · 1,746 files changed · 282,712 insertions · 36,699 deletions · 560+ issues closed (15 P0, 65 P1, 19 security-tagged) · 321 community contributors (including co-authors)
> **The Velocity Release.** Hermes gets dramatically faster — to start, to run, to ship work, and to grow. The 16,083-line `run_agent.py` collapses to 3,821 (-76%) across 14 cohesive `agent/*` modules. Kanban grew into a real multi-agent platform across 104 PRs — orchestrator auto-decomposition, swarm topology, scheduled tasks, worktree-per-task, per-task model overrides. The cold-start perf wave keeps going: another second shaved off launch, 47% fewer per-conversation function calls, `hermes --version` flipping the head-to-head benchmark against Codex CLI. `session_search` is 4,500× faster and free now. Promptware defense lands against Brainworm-class attacks. Bitwarden Secrets Manager replaces N per-provider API keys with one bootstrap token. Skill bundles let one slash command load a whole workflow. The Ink TUI gets a multi-session orchestrator. Two new image_gen providers (Krea 2 Medium + Large, FAL ported to plugin), the Nous-approved MCP catalog with an interactive picker, an OpenHands orchestration skill, ntfy as the 23rd messaging platform, and a deep xAI integration round (Web Search plugin, xai-oauth `hermes proxy` upstream, retired-May-15 model detection + `hermes migrate xai`, natural TTS speech-tag pauses, base_url leak guard, OpenAI-style execution guidance for Grok). 15 P0 + 65 P1 closures alongside.
---
## ✨ Highlights
- **The Big Refactor — `run_agent.py` is no longer 16,000 lines** — The file at the heart of Hermes — the agent conversation loop — has been reduced from 16,083 lines to 3,821 (-76%), with the extracted code redistributed across 14 cohesive modules under `agent/`. Behavior is unchanged: every extraction keeps a thin forwarder on `AIAgent`, every test patch path still works, every external caller is compatible. The reason you care: future Hermes development moves faster, plugin authors can finally grep the codebase, and the file that took 90 seconds to load in your editor opens in a blink. ([#27248](https://github.com/NousResearch/hermes-agent/pull/27248))
- **Kanban grew into a real multi-agent platform — 104 PRs end to end** — Triage auto-decomposes one task into a tree of sub-tasks. `hermes kanban swarm` creates a full Swarm v1 graph in one command — root, parallel workers, gated verifier, gated synthesizer, shared blackboard. Tasks support per-task model overrides (cheap models for boilerplate, expensive ones for hard sub-tasks), board-level default workdirs, per-task worktree paths and branches, scheduled start times, configurable claim TTL, retry fingerprinting, stale-task detection, respawn guards, and a drag-to-delete trash zone. Workers report through `/workers/active`, `/runs/{id}`, and `/inspect` endpoints. ([#27572](https://github.com/NousResearch/hermes-agent/pull/27572), [#28443](https://github.com/NousResearch/hermes-agent/pull/28443), [#28364](https://github.com/NousResearch/hermes-agent/pull/28364), [#28394](https://github.com/NousResearch/hermes-agent/pull/28394), [#28462](https://github.com/NousResearch/hermes-agent/pull/28462), [#28384](https://github.com/NousResearch/hermes-agent/pull/28384), [#28467](https://github.com/NousResearch/hermes-agent/pull/28467), [#28455](https://github.com/NousResearch/hermes-agent/pull/28455), [#28452](https://github.com/NousResearch/hermes-agent/pull/28452), [#28432](https://github.com/NousResearch/hermes-agent/pull/28432), [#28468](https://github.com/NousResearch/hermes-agent/pull/28468), [#28420](https://github.com/NousResearch/hermes-agent/pull/28420))
- **Cold-start perf wave keeps going — another second saved, 47% fewer per-turn function calls** — Three new optimization rounds: defer `openai._base_client` import (-240ms / -17MB on every CLI invocation), hot-path optimizations cut 47% of per-conversation function calls (399k → 213k for 31-turn chat), defer compression-feasibility check (-170 to -290ms on every agent construction), adaptive subprocess polling (-195ms per tool call, 1+ second per turn). Termux cold start drops from 2.9s to 0.8s. `hermes --version` cold drops 63% (701ms → 258ms), flipping the head-to-head benchmark against Codex CLI from 5/11 wins to 6/11. ([#28864](https://github.com/NousResearch/hermes-agent/pull/28864), [#28866](https://github.com/NousResearch/hermes-agent/pull/28866), [#28957](https://github.com/NousResearch/hermes-agent/pull/28957), [#29006](https://github.com/NousResearch/hermes-agent/pull/29006), [#29419](https://github.com/NousResearch/hermes-agent/pull/29419), [#30121](https://github.com/NousResearch/hermes-agent/pull/30121), [#30609](https://github.com/NousResearch/hermes-agent/pull/30609), [#31968](https://github.com/NousResearch/hermes-agent/pull/31968))
- **`session_search` rebuilt — no LLM, no cost, 4,500× faster** — The old `session_search` was an aux-LLM-powered tool that cost ~$0.30/call and took ~30 seconds to summarize three sessions, sometimes confabulating when the right session wasn't even in the FTS5 hit list. The new shape is one tool with three modes (discovery, scroll, browse) inferred from which args are set — no `mode` parameter, no aux-LLM, no config knob, no companion skill. Discovery is ~20ms instead of ~90s; scroll is ~1ms. Searching your past sessions for context is now free and instant. ([#27590](https://github.com/NousResearch/hermes-agent/pull/27590))
- **Promptware defense — Brainworm-class attacks blocked at three chokepoints** — Inspired by recent Brainworm / Promptware Kill Chain research (Origin HQ, arxiv 2601.09625), Hermes now defends the context window against prompt-injection attacks that try to hijack the agent via tool output, recalled memory, or stored skills. Single source of truth (`tools/threat_patterns.py`) with ~15 new Brainworm/C2 patterns; recalled memory is scanned at load time; tool results get delimiter markers so a malicious file or remote service can't impersonate Hermes' own system content. Paired with a new `security-guidance` plugin that pattern-matches dangerous code writes. ([#32269](https://github.com/NousResearch/hermes-agent/pull/32269), [#33131](https://github.com/NousResearch/hermes-agent/pull/33131), [#9151](https://github.com/NousResearch/hermes-agent/pull/9151))
- **Bitwarden Secrets Manager — one bootstrap token replaces every per-provider API key** — Stop keeping plaintext API keys in `~/.hermes/.env`. Install Bitwarden Secrets Manager (`bws` auto-installs lazily on first use), point Hermes at it with one bootstrap token (`BWS_ACCESS_TOKEN`), and every credential you need comes from Bitwarden at startup. Rotate a key in the Bitwarden web app and the rotation actually takes effect — Bitwarden defaults to source-of-truth so its values overwrite matching env vars on startup. Flip `secrets.bitwarden.override_existing: false` to invert. EU Cloud and self-hosted Bitwarden server URLs supported. Detected credentials are now labeled with their source so you can see at a glance which keys came from Bitwarden vs. the local env. ([#30035](https://github.com/NousResearch/hermes-agent/pull/30035), [#31378](https://github.com/NousResearch/hermes-agent/pull/31378), [#30364](https://github.com/NousResearch/hermes-agent/pull/30364))
- **ntfy as the 23rd messaging platform — push notifications without an account** — ntfy is the self-hostable push-notification service with no signup, no API key, just a topic URL. Hermes now adapts to it as a platform plugin (zero edits to core), so your agent can send you push notifications from any cron job, kanban task completion, or chat `send_message` — to your phone, your watch, your desktop, your homelab. (salvages [#30625](https://github.com/NousResearch/hermes-agent/pull/30625) → originally [#4043](https://github.com/NousResearch/hermes-agent/pull/4043)) ([#30867](https://github.com/NousResearch/hermes-agent/pull/30867))
- **Skill bundles — `/<name>` loads multiple skills at once** — A skill bundle is a named group of skills that loads them all together with one slash command. Set up your "writing day" bundle (humanizer + ideation + obsidian + youtube-content) and `/writing-day` activates all four for the session. Skills Hub now has health checks, a freshness badge, and a watchdog cron. Three new optional skills land: `code-wiki` (Karpathy's LLM-Wiki, persistent indexed dev wiki), `openhands` (delegate to OpenHands for parallel coding agents), and `web-pentest` (OWASP-style web pentest recipes). ([#28373](https://github.com/NousResearch/hermes-agent/pull/28373), [#32345](https://github.com/NousResearch/hermes-agent/pull/32345), [#32240](https://github.com/NousResearch/hermes-agent/pull/32240), [#32261](https://github.com/NousResearch/hermes-agent/pull/32261), [#32265](https://github.com/NousResearch/hermes-agent/pull/32265))
- **TUI session orchestrator — multiple live sessions in one TUI window** — The Ink TUI gained an active-session switcher overlay. List, switch between, refresh, and close multiple live process-local sessions without leaving the TUI; dispatch a new session with a session-scoped model picker. Plus a wave of TUI polish — mouse-tracking DEC mode presets, scrollback preservation across branches and termux, slash-dropdown fixes, x.com link rendering, and CJK / IME input rendering improvements. (salvages [#27642](https://github.com/NousResearch/hermes-agent/pull/27642)) ([#32980](https://github.com/NousResearch/hermes-agent/pull/32980), [#30084](https://github.com/NousResearch/hermes-agent/pull/30084))
- **Two new image_gen providers — Krea 2 Medium + Large, FAL ported to plugin** — Krea joins the image_gen lineup as a built-in plugin: `Krea 2 Medium` ($0.03) and `Krea 2 Large` ($0.06), auto-discovered, selectable via `hermes tools` → Image Generation → Krea. Available through both the native Krea plugin and the FAL.ai catalog. The FAL.ai backend got pulled out of the monolithic image-generation tool into `plugins/image_gen/fal/`, completing the four-way architectural parity already established by web, browser, and video_gen — new image providers are now one file, not a fork. ([#33236](https://github.com/NousResearch/hermes-agent/pull/33236), [#30380](https://github.com/NousResearch/hermes-agent/pull/30380), [#33506](https://github.com/NousResearch/hermes-agent/pull/33506))
- **Nous-approved MCP catalog with interactive picker** — A curated catalog of Nous-vetted MCP servers, mirroring the optional-skills shape. Run `hermes mcp` and you get an interactive picker; install with one keystroke, credentials prompted at install time and written to `~/.hermes/.env`. Ships with the n8n manifest first. Closes the discovery gap that left users hunting GitHub for trusted MCP servers. ([#30870](https://github.com/NousResearch/hermes-agent/pull/30870))
- **OpenHands orchestration skill** — A new optional skill under `optional-skills/autonomous-ai-agents/openhands/` lets the agent delegate coding tasks to the OpenHands CLI alongside `claude-code`, `codex`, and `opencode`. OpenHands is the model-agnostic member of that family — any LiteLLM-supported provider works (OpenAI, Anthropic, OpenRouter, your own), so you can route a sub-task to the cheapest model that can finish it. Drop-in worker for kanban swarms and `/delegate` flows. (closes [#477](https://github.com/NousResearch/hermes-agent/issues/477)) ([#32261](https://github.com/NousResearch/hermes-agent/pull/32261))
- **Deep xAI integration round — Web Search plugin, OAuth proxy upstream, May 15 retirement detection, natural TTS, security hardening** — Six interlocking xAI improvements:
- **xAI Web Search** lands as a `plugins/web/xai/` provider, slots alongside Brave / Tavily / Exa / SearXNG / DDGS / Firecrawl — reuses your existing Grok OAuth or `XAI_API_KEY` credentials, no new env vars. ([#29042](https://github.com/NousResearch/hermes-agent/pull/29042))
- **`hermes proxy` gains an xAI upstream** — your local OpenAI-compatible endpoint can now be backed by SuperGrok OAuth, no PKCE-refresh code to write in your client. ([#28356](https://github.com/NousResearch/hermes-agent/pull/28356))
- **May 15 model retirement detection** — `grok-4`, `grok-4-fast{,-reasoning,-non-reasoning}`, `grok-3`, `grok-code-fast-1`, `grok-imagine-image-pro` etc. are detected in doctor and chat startup, with `hermes migrate xai` to one-shot config migration to the supported model. No more silent 404s after the retirement date. ([#29277](https://github.com/NousResearch/hermes-agent/pull/29277))
- **Opt-in `auto_speech_tags`** for xAI TTS — inserts light `[pause]` tags between paragraphs and sentences for more natural-sounding voice replies. Default OFF. ([#29376](https://github.com/NousResearch/hermes-agent/pull/29376))
- **`xai-oauth` `base_url` pinned to `x.ai` origin** — closes a silent credential-leak vector where `XAI_BASE_URL` could repoint OAuth-authenticated inference to an attacker-controlled host. ([#28952](https://github.com/NousResearch/hermes-agent/pull/28952))
- **OpenAI-style execution guidance applied to Grok models** — Grok and xai-oauth now get the same family-specific execution discipline block GPT/Codex have, so the model stops claiming completion without tool calls and stops suggesting workarounds instead of using existing tools. ([#27797](https://github.com/NousResearch/hermes-agent/pull/27797))
- Plus `x_search` degraded-results surfacing, tier-gated 403 with API-key fallback, PKCE `code_challenge` round-trip fix, dead-token quarantine on terminal refresh failure, MiniMax-style short-token refresh on per-request, and `WKE=unauthenticated` honor at both classifier sites. ([#29484](https://github.com/NousResearch/hermes-agent/pull/29484), [#28351](https://github.com/NousResearch/hermes-agent/pull/28351), [#27560](https://github.com/NousResearch/hermes-agent/pull/27560), [#28116](https://github.com/NousResearch/hermes-agent/pull/28116), [#30619](https://github.com/NousResearch/hermes-agent/pull/30619), [#30872](https://github.com/NousResearch/hermes-agent/pull/30872))
---
## 🏗️ Core Agent & Architecture
### The Big Refactor — `run_agent.py` 16k → 3.8k
- `run_agent.py` from 16,083 → 3,821 lines (-76%), extracted into 14 cohesive `agent/*` modules. `run_conversation` alone was 3,877 lines before the refactor. Every extraction keeps a thin forwarder on `AIAgent`, every test-patch path is preserved, every external caller stays compatible. ([#27248](https://github.com/NousResearch/hermes-agent/pull/27248))
### Agent loop & conversation
- Auxiliary task layered fallback (primary → chain → main agent → graceful fail) on capacity errors (402/429/connection). (salvages [#26811](https://github.com/NousResearch/hermes-agent/pull/26811) + [#26998](https://github.com/NousResearch/hermes-agent/pull/26998)) ([#27625](https://github.com/NousResearch/hermes-agent/pull/27625))
- Buffer retry/fallback status; surface only on terminal failure (no more noisy "retrying..." spam in mid-run output). ([#33816](https://github.com/NousResearch/hermes-agent/pull/33816))
- Host contract for external context engines — condenses 5 prior PRs into one extension surface. ([#33750](https://github.com/NousResearch/hermes-agent/pull/33750))
- Fallback immediately on provider content-policy blocks. ([#33883](https://github.com/NousResearch/hermes-agent/pull/33883))
- Re-pad `reasoning_content` on cross-provider fallback to require-side providers. (salvage [#33784](https://github.com/NousResearch/hermes-agent/pull/33784)) ([#33795](https://github.com/NousResearch/hermes-agent/pull/33795))
- Per-turn tool-outcome verifier — patch tool gets indent preservation, CRLF preservation, per-file failure escalation. ([#32273](https://github.com/NousResearch/hermes-agent/pull/32273))
- Single-knob native vision for custom-provider models. ([#29679](https://github.com/NousResearch/hermes-agent/pull/29679))
- Background review fork isolated from external memory plugins. ([#27190](https://github.com/NousResearch/hermes-agent/pull/27190))
- Background review inherits parent toolset config for `tools[]` cache parity. ([#29704](https://github.com/NousResearch/hermes-agent/pull/29704))
- Recover from providers returning list-type tool content. ([#30259](https://github.com/NousResearch/hermes-agent/pull/30259))
- Treat partial-stream stub responses as length truncation rather than clean stop. ([#30998](https://github.com/NousResearch/hermes-agent/pull/30998))
- OpenAI execution guidance applied to xAI Grok / xai-oauth. ([#27797](https://github.com/NousResearch/hermes-agent/pull/27797))
- ContextVars propagate to concurrent tool worker threads.
- Preload `jiter` native parser. ([#33692](https://github.com/NousResearch/hermes-agent/pull/33692))
- Expose context engine tools with saved toolsets. (salvage of [#31194](https://github.com/NousResearch/hermes-agent/pull/31194)) ([#33719](https://github.com/NousResearch/hermes-agent/pull/33719))
### Sessions & memory
- `session_search` rebuilt — single-shape (discovery + scroll + browse), no aux-LLM, ~20ms vs. ~90s. ([#27590](https://github.com/NousResearch/hermes-agent/pull/27590))
- Salvage [#29182](https://github.com/NousResearch/hermes-agent/pull/29182) — opt-in JSON snapshot writer for sessions. ([#29278](https://github.com/NousResearch/hermes-agent/pull/29278))
- Persist `platform_message_id` for recall across gateway restarts. ([#29449](https://github.com/NousResearch/hermes-agent/pull/29449))
- Inline memory-context mentions stay visible in conversation. ([#28132](https://github.com/NousResearch/hermes-agent/pull/28132))
- Recalled memory labeled informational, not authoritative. ([#28583](https://github.com/NousResearch/hermes-agent/pull/28583))
- Memory + context-engine tool injection gated on `enabled_toolsets`. ([#30177](https://github.com/NousResearch/hermes-agent/pull/30177))
- Guard against external drift in `MEMORY.md` / `USER.md`. ([#30877](https://github.com/NousResearch/hermes-agent/pull/30877))
- Honcho runtime peer mapping — correctness follow-ups + setup wizard + docs. ([#30077](https://github.com/NousResearch/hermes-agent/pull/30077))
- Periodic memory logging for leak detection. (salvage of [#17667](https://github.com/NousResearch/hermes-agent/pull/17667)) ([#27102](https://github.com/NousResearch/hermes-agent/pull/27102))
### Codex / Responses-API maturation
- TTFB watchdog for stalled Codex Responses streams. ([#32042](https://github.com/NousResearch/hermes-agent/pull/32042))
- Actionable hint when stale-call detector fires on known silent-reject pattern. ([#32016](https://github.com/NousResearch/hermes-agent/pull/32016), [#33133](https://github.com/NousResearch/hermes-agent/pull/33133))
- Drop SDK `responses.stream()` helper; consume events directly. ([#33042](https://github.com/NousResearch/hermes-agent/pull/33042))
- Gracefully recover from `invalid_encrypted_content`. (salvage of [#10144](https://github.com/NousResearch/hermes-agent/pull/10144)) ([#33035](https://github.com/NousResearch/hermes-agent/pull/33035))
- Recover Codex Responses streams with null output. ([#32963](https://github.com/NousResearch/hermes-agent/pull/32963), [#33390](https://github.com/NousResearch/hermes-agent/pull/33390))
- Drop foreign-issuer reasoning and transient `rs_tmp` reasoning replay state. ([#33156](https://github.com/NousResearch/hermes-agent/pull/33156), [#33146](https://github.com/NousResearch/hermes-agent/pull/33146))
- Codex 429 quota classified as rate-limit, not missing credentials. ([#33168](https://github.com/NousResearch/hermes-agent/pull/33168))
- Codex chat path falls back to credential_pool when singleton is empty. ([#33189](https://github.com/NousResearch/hermes-agent/pull/33189))
- Codex re-auth syncs credential_pool. ([#33164](https://github.com/NousResearch/hermes-agent/pull/33164))
- Omit `tools` key when no tools registered. ([#33409](https://github.com/NousResearch/hermes-agent/pull/33409))
- Parse Codex image-generation SSE directly. ([#32933](https://github.com/NousResearch/hermes-agent/pull/32933))
---
## 🎛️ Kanban — Multi-Agent Maturation Wave
### Orchestration & dispatch
- Orchestrator-driven auto-decomposition on triage. ([#27572](https://github.com/NousResearch/hermes-agent/pull/27572))
- Kanban swarm topology helper — `hermes kanban swarm` creates a Swarm v1 graph (root + parallel workers + gated verifier + gated synthesizer + shared blackboard). (salvages [#26791](https://github.com/NousResearch/hermes-agent/pull/26791) by @Niraven) ([#28443](https://github.com/NousResearch/hermes-agent/pull/28443))
- Dispatcher wires review agents from the review column. ([#28449](https://github.com/NousResearch/hermes-agent/pull/28449))
- Stale-detection for running tasks in dispatcher. ([#28452](https://github.com/NousResearch/hermes-agent/pull/28452))
- Respawn guard blocks repeat worker storms. ([#28455](https://github.com/NousResearch/hermes-agent/pull/28455))
- Respawn guard defers `blocker_auth` instead of auto-blocking. ([#28683](https://github.com/NousResearch/hermes-agent/pull/28683))
- Cross-profile cron jobs surface in dashboard. ([#28457](https://github.com/NousResearch/hermes-agent/pull/28457))
- Worker visibility endpoints: `/workers/active`, `/runs/{id}`, `/inspect`. (salvages [#23761](https://github.com/NousResearch/hermes-agent/pull/23761) by @Interstellar-code) ([#28432](https://github.com/NousResearch/hermes-agent/pull/28432))
### Task configuration & scheduling
- Per-task model override. ([#28364](https://github.com/NousResearch/hermes-agent/pull/28364))
- Board-level default workdir. ([#28394](https://github.com/NousResearch/hermes-agent/pull/28394))
- Configurable worktree paths and branches. ([#28462](https://github.com/NousResearch/hermes-agent/pull/28462))
- Scheduled task start times. ([#28384](https://github.com/NousResearch/hermes-agent/pull/28384))
- Scheduled status for delayed follow-ups. ([#28467](https://github.com/NousResearch/hermes-agent/pull/28467))
- Trimmed task comments. ([#28399](https://github.com/NousResearch/hermes-agent/pull/28399))
- Initial-status for human-ops cards. ([#28414](https://github.com/NousResearch/hermes-agent/pull/28414))
- `max_in_progress` config to cap concurrent running tasks. ([#28420](https://github.com/NousResearch/hermes-agent/pull/28420))
- Filter tasks by workflow fields. ([#28454](https://github.com/NousResearch/hermes-agent/pull/28454))
- `--sort` for `hermes kanban list`. ([#28427](https://github.com/NousResearch/hermes-agent/pull/28427))
- Optional `board` parameter on all MCP tools. ([#28444](https://github.com/NousResearch/hermes-agent/pull/28444))
- Stamp originating ACP session_id on tasks. ([#28447](https://github.com/NousResearch/hermes-agent/pull/28447))
- `auto_promote_children` config toggle. ([#28344](https://github.com/NousResearch/hermes-agent/pull/28344))
- `archive --rm` to hard-delete archived tasks. ([#28355](https://github.com/NousResearch/hermes-agent/pull/28355))
- Promote dependents when parent is archived. ([#28372](https://github.com/NousResearch/hermes-agent/pull/28372))
- Promote blocked tasks when parent dependencies complete. ([#28377](https://github.com/NousResearch/hermes-agent/pull/28377))
- Demote ready children when parent is reopened. ([#28382](https://github.com/NousResearch/hermes-agent/pull/28382))
- `promote` verb for manual `todo→ready` recovery + bulk `--ids`. (salvage [#29464](https://github.com/NousResearch/hermes-agent/pull/29464)) ([#31334](https://github.com/NousResearch/hermes-agent/pull/31334))
### Dashboard
- Drag-to-delete trash zone + bulk delete. ([#28468](https://github.com/NousResearch/hermes-agent/pull/28468))
- Surface per-task `model_override` in show + tool output. ([#28442](https://github.com/NousResearch/hermes-agent/pull/28442))
- Cross-profile notification delivery via `kanban.notification_sources`. ([#28395](https://github.com/NousResearch/hermes-agent/pull/28395))
- Scratch-workspace deletion warning for users. ([#30949](https://github.com/NousResearch/hermes-agent/pull/30949))
- Mobile dashboard UX polish. ([#28127](https://github.com/NousResearch/hermes-agent/pull/28127))
### Reliability
- Worker log retention configurable. ([#27867](https://github.com/NousResearch/hermes-agent/pull/27867))
- Configurable claim TTL. ([#28392](https://github.com/NousResearch/hermes-agent/pull/28392))
- Fingerprint crash errors to prevent fleet-wide retry exhaustion. ([#28380](https://github.com/NousResearch/hermes-agent/pull/28380))
- Reset failure counters on `unblock_task`. ([#28379](https://github.com/NousResearch/hermes-agent/pull/28379))
- Detect cycles in `decompose_triage_task` sibling-link pre-validation. ([#28088](https://github.com/NousResearch/hermes-agent/pull/28088))
- Surface unusable triage auxiliary model (auto-decompose aware). ([#27871](https://github.com/NousResearch/hermes-agent/pull/27871))
- Align failure diagnostics with retry limit. ([#27868](https://github.com/NousResearch/hermes-agent/pull/27868))
- Align worker terminal timeout with task runtime. ([#27864](https://github.com/NousResearch/hermes-agent/pull/27864))
- Auto-install bundled skills (kanban-worker) on init. ([#28368](https://github.com/NousResearch/hermes-agent/pull/28368))
- Make legacy task migration idempotent. ([#28397](https://github.com/NousResearch/hermes-agent/pull/28397))
- Serialize DB initialization. ([#28383](https://github.com/NousResearch/hermes-agent/pull/28383))
- Persist worker session metadata on completion. ([#28387](https://github.com/NousResearch/hermes-agent/pull/28387))
- Pass `accept-hooks` to worker chat subprocess. ([#28393](https://github.com/NousResearch/hermes-agent/pull/28393))
- Preserve worker tools with restricted toolsets. ([#28396](https://github.com/NousResearch/hermes-agent/pull/28396))
- Avoid unsafe Windows worker Hermes shim resolution. ([#28398](https://github.com/NousResearch/hermes-agent/pull/28398))
- Sync slash subcommands with live parser. ([#28376](https://github.com/NousResearch/hermes-agent/pull/28376))
- Show scheduled kanban tasks in dashboard. ([#28400](https://github.com/NousResearch/hermes-agent/pull/28400))
- Assign single-task kanban decompositions. ([#28401](https://github.com/NousResearch/hermes-agent/pull/28401))
- Configurable `max_tokens` for kanban specify. ([#28374](https://github.com/NousResearch/hermes-agent/pull/28374))
- Per-job profile support for cron. ([#28124](https://github.com/NousResearch/hermes-agent/pull/28124))
- Codex app-server: include every Kanban-pinned path in `writable_roots`. ([#28435](https://github.com/NousResearch/hermes-agent/pull/28435))
- Cache kanban worker guidance at session init for prompt-cache reuse. ([#28425](https://github.com/NousResearch/hermes-agent/pull/28425))
---
## ⚡ Performance
- `openai._base_client` import deferred — 240ms / 17MB off every CLI cold start. ([#28864](https://github.com/NousResearch/hermes-agent/pull/28864))
- Agent-loop hot-path optimizations — 47% fewer per-conversation function calls (399k → 213k for 31-turn chat). ([#28866](https://github.com/NousResearch/hermes-agent/pull/28866))
- Compression-feasibility check deferred — 170-290ms off every agent construction. ([#28957](https://github.com/NousResearch/hermes-agent/pull/28957))
- Adaptive subprocess poll — ~195ms off every tool call, 1+ second per turn. ([#29006](https://github.com/NousResearch/hermes-agent/pull/29006))
- Termux TUI cold start speedup. ([#29419](https://github.com/NousResearch/hermes-agent/pull/29419))
- Termux non-TUI cold start speedup. (salvage [#29438](https://github.com/NousResearch/hermes-agent/pull/29438)) ([#30121](https://github.com/NousResearch/hermes-agent/pull/30121))
- Termux fast-path version + deferred bare-prompt agent startup. ([#30609](https://github.com/NousResearch/hermes-agent/pull/30609))
- Cut hermes `--version` wall time 63% — flips head-to-head vs Codex CLI. ([#31968](https://github.com/NousResearch/hermes-agent/pull/31968))
- Date-only timestamp + loud gateway-DB roundtrip logging — improves prompt-cache hit rate. ([#27675](https://github.com/NousResearch/hermes-agent/pull/27675))
- Cache kanban worker guidance at session init for prompt-cache reuse. ([#28425](https://github.com/NousResearch/hermes-agent/pull/28425))
---
## 🔧 Tool System
### Tool surface
- `patch`: indent preservation, CRLF preservation, per-file failure escalation. ([#32273](https://github.com/NousResearch/hermes-agent/pull/32273))
- `terminal`: warn at call time when `background=true` runs silently. ([#31289](https://github.com/NousResearch/hermes-agent/pull/31289))
- `terminal`: nudge homebrewed CI pollers at the tool surface. ([#33142](https://github.com/NousResearch/hermes-agent/pull/33142))
- `x_search`: surface degraded results + validate dates. ([#29484](https://github.com/NousResearch/hermes-agent/pull/29484))
- `x_search`: auto-enable toolset when xAI credentials are configured. ([#27376](https://github.com/NousResearch/hermes-agent/pull/27376))
- `computer_use`: route SOM/vision captures via auxiliary.vision. ([#30126](https://github.com/NousResearch/hermes-agent/pull/30126))
- `transcription`: reject symlinked audio inputs. ([#10082](https://github.com/NousResearch/hermes-agent/pull/10082))
- TTS: prevent double `[pause]` in xAI auto speech tags. ([#32237](https://github.com/NousResearch/hermes-agent/pull/32237))
- TTS: preserve native audio outside Telegram voice delivery. ([#28512](https://github.com/NousResearch/hermes-agent/pull/28512))
- TTS: opt-in xAI `auto_speech_tags` speech-tag pauses for natural voice replies. ([#29376](https://github.com/NousResearch/hermes-agent/pull/29376))
- Voice: chunk oversized CLI recordings. ([#30044](https://github.com/NousResearch/hermes-agent/pull/30044))
- Voice: honor `PULSE_SERVER` / `PIPEWIRE_REMOTE` inside Docker. ([#22534](https://github.com/NousResearch/hermes-agent/pull/22534))
### Browser
- All cloud browser providers (Browserbase, Anchor, Camofox, Hyperbrowser, etc.) migrated to image_gen-style plugins. (salvages [#25580](https://github.com/NousResearch/hermes-agent/pull/25580)) ([#27403](https://github.com/NousResearch/hermes-agent/pull/27403))
- Auto-launch Chromium-family browser for CDP. ([#29106](https://github.com/NousResearch/hermes-agent/pull/29106))
- Docker: discover agent-browser Chromium binary at boot. ([#33184](https://github.com/NousResearch/hermes-agent/pull/33184))
### Image generation
- **Krea** provider plugin (Krea 2 Medium + Large). ([#33236](https://github.com/NousResearch/hermes-agent/pull/33236))
- FAL backend ported to `plugins/image_gen/fal`. (salvage [#27966](https://github.com/NousResearch/hermes-agent/pull/27966)) ([#30380](https://github.com/NousResearch/hermes-agent/pull/30380))
- Cache xAI ephemeral URL responses to disk. ([#31759](https://github.com/NousResearch/hermes-agent/pull/31759))
### Web search
- **xAI Web Search** as a provider plugin. ([#29042](https://github.com/NousResearch/hermes-agent/pull/29042))
### MCP
- **Nous-approved MCP catalog** with interactive picker. ([#30870](https://github.com/NousResearch/hermes-agent/pull/30870))
- **TLS client certificate (mTLS) support** for HTTP and SSE MCP servers. ([#33721](https://github.com/NousResearch/hermes-agent/pull/33721))
- Stdin paste-back fallback for headless OAuth flow. ([#32053](https://github.com/NousResearch/hermes-agent/pull/32053))
- `skip` at paste prompt bypasses auth without disabling server. ([#32069](https://github.com/NousResearch/hermes-agent/pull/32069))
- Registry-aware `mcp_` prefix on both ends of round-trip. ([#31700](https://github.com/NousResearch/hermes-agent/pull/31700))
---
## 🧩 Skills Ecosystem
### Skills system
- **Skill bundles** — `/<name>` loads multiple skills. ([#28373](https://github.com/NousResearch/hermes-agent/pull/28373))
- Skills Hub: health checks, freshness badge, and a watchdog cron. ([#32345](https://github.com/NousResearch/hermes-agent/pull/32345))
- Opt-in AST deep diagnostics on skill writes. (salvage of [#30918](https://github.com/NousResearch/hermes-agent/pull/30918)) ([#31198](https://github.com/NousResearch/hermes-agent/pull/31198))
- Bundled/pinned skill protection in background-review prompts. ([#28338](https://github.com/NousResearch/hermes-agent/pull/28338))
- Show user-modified skill names in bundled skill sync summary. ([#28671](https://github.com/NousResearch/hermes-agent/pull/28671))
- Load symlinked skill slash commands. ([#27759](https://github.com/NousResearch/hermes-agent/pull/27759))
- Deduplicate Skills Hub search results by identifier, not name. ([#29490](https://github.com/NousResearch/hermes-agent/pull/29490))
### New skills
- `openhands` — delegate-to-OpenHands orchestration skill (closes [#477](https://github.com/NousResearch/hermes-agent/issues/477)) ([#32261](https://github.com/NousResearch/hermes-agent/pull/32261))
- `code-wiki` — persistent indexed dev wiki (closes [#486](https://github.com/NousResearch/hermes-agent/issues/486)) ([#32240](https://github.com/NousResearch/hermes-agent/pull/32240))
- `web-pentest` — OWASP recipes (closes [#400](https://github.com/NousResearch/hermes-agent/issues/400)) ([#32265](https://github.com/NousResearch/hermes-agent/pull/32265))
- `baoyu-article-illustrator` ([#28287](https://github.com/NousResearch/hermes-agent/pull/28287))
---
## ☁️ Providers
### xAI deep integration
- **xAI Web Search** as a `plugins/web/xai/` provider plugin. ([#29042](https://github.com/NousResearch/hermes-agent/pull/29042))
- **`hermes proxy` xAI upstream** — OpenAI-compatible local proxy backed by xai-oauth. ([#28356](https://github.com/NousResearch/hermes-agent/pull/28356))
- **May 15 model retirement detection + `hermes migrate xai`** for grok-4 / grok-3 / grok-code-fast-1 / grok-imagine-image-pro. ([#29277](https://github.com/NousResearch/hermes-agent/pull/29277))
- **Opt-in `auto_speech_tags`** for natural xAI TTS voice replies. ([#29376](https://github.com/NousResearch/hermes-agent/pull/29376))
- **xai-oauth base_url pinned to x.ai origin** — closes silent credential-leak vector. ([#28952](https://github.com/NousResearch/hermes-agent/pull/28952))
- **OpenAI-style execution guidance** applied to Grok / xai-oauth models. ([#27797](https://github.com/NousResearch/hermes-agent/pull/27797))
- xAI: detect retired May 15 models in doctor/chat startup. ([#29277](https://github.com/NousResearch/hermes-agent/pull/29277))
- xAI: resolve Grok Build context for OAuth. ([#30579](https://github.com/NousResearch/hermes-agent/pull/30579))
- xAI OAuth: tier-gated 403 with API-key fallback. ([#28351](https://github.com/NousResearch/hermes-agent/pull/28351))
- xAI OAuth: PKCE `code_challenge` echo. ([#27560](https://github.com/NousResearch/hermes-agent/pull/27560))
- xAI OAuth: quarantine dead tokens on terminal refresh failure. ([#28116](https://github.com/NousResearch/hermes-agent/pull/28116))
- xAI OAuth: honor `WKE=unauthenticated` disambiguator at both classifier sites. ([#30872](https://github.com/NousResearch/hermes-agent/pull/30872))
- xAI OAuth: accept bare-code manual paste (state=None). (closes [#26923](https://github.com/NousResearch/hermes-agent/issues/26923)) ([#33880](https://github.com/NousResearch/hermes-agent/pull/33880))
- xAI OAuth: fall back to manual paste on loopback timeout. ([#33231](https://github.com/NousResearch/hermes-agent/pull/33231))
- xAI proxy: handle 429 rate-limit responses in proxy retry path. ([#33743](https://github.com/NousResearch/hermes-agent/pull/33743))
### Other providers
- **OpenAI API as a first-class provider** (distinct from Codex runtime). ([#31898](https://github.com/NousResearch/hermes-agent/pull/31898))
- **Microsoft Entra ID** auth for Azure Foundry (with 1M Anthropic-Messages beta preserved on Bearer). (salvages [#27509](https://github.com/NousResearch/hermes-agent/pull/27509), [#27022](https://github.com/NousResearch/hermes-agent/pull/27022)) ([#28101](https://github.com/NousResearch/hermes-agent/pull/28101), [#28084](https://github.com/NousResearch/hermes-agent/pull/28084))
- **OpenRouter** sticky routing — `session_id` passed via `extra_body` so a long-running session keeps landing on the same upstream provider. (@Cybourgeoisie) ([#33939](https://github.com/NousResearch/hermes-agent/pull/33939))
- Nous: JWT token for inference; stop replaying invalid Nous refresh tokens. (@rewbs) ([#27663](https://github.com/NousResearch/hermes-agent/pull/27663))
- Nous Portal: one-shot setup, status CLI, and Nous-included markers. ([#30860](https://github.com/NousResearch/hermes-agent/pull/30860))
- Anthropic adapter: extract 7 helpers from `convert_messages_to_anthropic`. (salvage [#27784](https://github.com/NousResearch/hermes-agent/pull/27784)) ([#30386](https://github.com/NousResearch/hermes-agent/pull/30386))
- Catalog: add `qwen3.7-max` to Alibaba + Alibaba-Coding-Plan model lists. ([#33129](https://github.com/NousResearch/hermes-agent/pull/33129))
- opencode-go: route `qwen3.7-max` via `anthropic_messages`. (@beardthelion) ([#32780](https://github.com/NousResearch/hermes-agent/pull/32780))
- opencode-go: expose Kimi K2 + DeepSeek reasoning controls. ([#30845](https://github.com/NousResearch/hermes-agent/pull/30845))
- Remove Vercel AI Gateway and Vercel Sandbox.
- MiniMax OAuth: refresh short-lived access tokens per request. ([#30619](https://github.com/NousResearch/hermes-agent/pull/30619))
- Codex OAuth: quarantine terminal refresh errors. ([#28118](https://github.com/NousResearch/hermes-agent/pull/28118))
- Codex: drop dead model slugs that HTTP 400 on ChatGPT Pro. ([#33424](https://github.com/NousResearch/hermes-agent/pull/33424))
- Codex: sync `manual:device_code` pool entries on re-auth. ([#33744](https://github.com/NousResearch/hermes-agent/pull/33744))
- MiniMax OAuth: quarantine terminal refresh errors. ([#28119](https://github.com/NousResearch/hermes-agent/pull/28119))
---
## 🔑 Secrets
- **Bitwarden Secrets Manager** integration with lazy `bws` install. ([#30035](https://github.com/NousResearch/hermes-agent/pull/30035))
- Bitwarden: EU Cloud + self-hosted server URL support. ([#31378](https://github.com/NousResearch/hermes-agent/pull/31378))
- Label detected credentials with their source (Bitwarden). ([#30364](https://github.com/NousResearch/hermes-agent/pull/30364))
---
## 📱 Messaging Platforms (Gateway)
### Gateway core
- **Deliverable mode** — agents ship artifacts as native uploads from any platform (Slack/Discord/Telegram/Teams/Email). ([#27813](https://github.com/NousResearch/hermes-agent/pull/27813))
- `hermes send` — pipe any script's output to any messaging platform. (salvage of [#19631](https://github.com/NousResearch/hermes-agent/pull/19631)) ([#27188](https://github.com/NousResearch/hermes-agent/pull/27188))
- Debounce queued text follow-ups during active sessions. (salvage of [#31235](https://github.com/NousResearch/hermes-agent/pull/31235)) ([#31341](https://github.com/NousResearch/hermes-agent/pull/31341))
- Plugin-transformed final_response delivered through streaming gate. ([#31433](https://github.com/NousResearch/hermes-agent/pull/31433))
- Refresh cached agent tools on `/reload-mcp`. ([#32815](https://github.com/NousResearch/hermes-agent/pull/32815))
- Harden kanban + provider cleanup races on long-running workloads. ([#29479](https://github.com/NousResearch/hermes-agent/pull/29479))
### New / reorganized adapters
- **ntfy** — 23rd platform, push notifications, plugin shape, zero core edits. (salvages [#30625](https://github.com/NousResearch/hermes-agent/pull/30625) → [#4043](https://github.com/NousResearch/hermes-agent/pull/4043)) ([#30867](https://github.com/NousResearch/hermes-agent/pull/30867))
- **Discord** adapter migrated to bundled plugin. (salvage of [#24356](https://github.com/NousResearch/hermes-agent/pull/24356)) ([#30591](https://github.com/NousResearch/hermes-agent/pull/30591))
- **Mattermost** adapter migrated to bundled plugin. (salvage of [#30916](https://github.com/NousResearch/hermes-agent/pull/30916)) ([#31748](https://github.com/NousResearch/hermes-agent/pull/31748))
### Telegram
- Edit status messages in place instead of appending. (based on [#30141](https://github.com/NousResearch/hermes-agent/pull/30141) by @qike-ms) ([#30864](https://github.com/NousResearch/hermes-agent/pull/30864))
- Skip-STT audio path + 2GB cap via local Bot API server. ([#28541](https://github.com/NousResearch/hermes-agent/pull/28541))
- Route image documents (.png/.jpg/.webp/.gif) through vision pipeline. ([#28519](https://github.com/NousResearch/hermes-agent/pull/28519))
- Route audio file attachments away from STT pipeline. ([#28478](https://github.com/NousResearch/hermes-agent/pull/28478))
- `disable_topic_auto_rename` gateway flag. ([#28523](https://github.com/NousResearch/hermes-agent/pull/28523))
- `ignore_root_dm` config to drop messages without thread_id. ([#28536](https://github.com/NousResearch/hermes-agent/pull/28536))
- Chat-scoped auth without sender user_id. ([#28525](https://github.com/NousResearch/hermes-agent/pull/28525))
- Fail-closed auth fallback when `TELEGRAM_ALLOWED_USERS` is empty. ([#28494](https://github.com/NousResearch/hermes-agent/pull/28494))
- Roll over tool progress bubbles + scope audio_file_paths. ([#28482](https://github.com/NousResearch/hermes-agent/pull/28482))
- Avoid duplicate text after auto-TTS voice replies. ([#28509](https://github.com/NousResearch/hermes-agent/pull/28509))
- Mark final voice reply notify-worthy so Telegram delivers it audibly. ([#28504](https://github.com/NousResearch/hermes-agent/pull/28504))
### Discord
- Recover Windows voice opus decoding. ([#33182](https://github.com/NousResearch/hermes-agent/pull/33182))
- `allow_any_attachment` config to accept arbitrary file types. ([#27245](https://github.com/NousResearch/hermes-agent/pull/27245))
- Transcribe native voice notes. ([#28993](https://github.com/NousResearch/hermes-agent/pull/28993))
- Define UI view classes after lazy install. ([#28817](https://github.com/NousResearch/hermes-agent/pull/28817))
### Signal / Matrix / Feishu / Slack / WeCom
- Signal: `require_mention` filter for group chats. ([#28574](https://github.com/NousResearch/hermes-agent/pull/28574))
- Matrix: warn on clock-skew silent message drops. ([#27330](https://github.com/NousResearch/hermes-agent/pull/27330))
- Matrix E2EE installs full dep set; plugins respect `is_connected`. ([#31688](https://github.com/NousResearch/hermes-agent/pull/31688))
- Feishu: require webhook auth secret + honor config extras. ([#30746](https://github.com/NousResearch/hermes-agent/pull/30746))
- Feishu: enforce auth and chat binding for approval buttons. ([#30744](https://github.com/NousResearch/hermes-agent/pull/30744))
- Slack: socket recovery + Windows restart dedupe. ([#28873](https://github.com/NousResearch/hermes-agent/pull/28873))
- WeCom: safe-parse untrusted XML. ([#32442](https://github.com/NousResearch/hermes-agent/pull/32442))
### DingTalk / Webhooks / Microsoft Graph
- DingTalk: transcribe native voice notes. ([#28993](https://github.com/NousResearch/hermes-agent/pull/28993))
- Webhook: enforce `INSECURE_NO_AUTH` safety rail on dynamic route reloads. ([#30863](https://github.com/NousResearch/hermes-agent/pull/30863))
- Webhook: restrict default toolset capabilities. ([#30745](https://github.com/NousResearch/hermes-agent/pull/30745))
- Microsoft Graph: harden webhook auth requirements. ([#30169](https://github.com/NousResearch/hermes-agent/pull/30169))
---
## 🖥️ CLI & TUI
### CLI
- `/update` slash command in CLI and TUI. ([#23854](https://github.com/NousResearch/hermes-agent/pull/23854))
- Update auto-rollback when post-pull syntax check fails. ([#28669](https://github.com/NousResearch/hermes-agent/pull/28669))
- `--branch` flag for `hermes update`. (@jquesnelle) ([#29591](https://github.com/NousResearch/hermes-agent/pull/29591))
- `/exit --delete` flag to remove session on quit. (salvage of [#17665](https://github.com/NousResearch/hermes-agent/pull/17665)) ([#27101](https://github.com/NousResearch/hermes-agent/pull/27101))
- `▶ N` indicator in status bar for running `/background` tasks. ([#27175](https://github.com/NousResearch/hermes-agent/pull/27175))
- Live background terminal-process count in status bar. ([#32061](https://github.com/NousResearch/hermes-agent/pull/32061))
- Append session recap to `/status` output. (salvage of [#18587](https://github.com/NousResearch/hermes-agent/pull/18587)) ([#27176](https://github.com/NousResearch/hermes-agent/pull/27176))
- Configurable paste-collapse thresholds (TUI + CLI). (salvage [#29723](https://github.com/NousResearch/hermes-agent/pull/29723)) ([#32087](https://github.com/NousResearch/hermes-agent/pull/32087))
- `/resume` accepts position numbers. ([#31709](https://github.com/NousResearch/hermes-agent/pull/31709))
- Bring tool-call display back — verbose mode, specific failure reasons, todo progress. ([#31293](https://github.com/NousResearch/hermes-agent/pull/31293))
- Validate runtime token refresh in Qwen auth status. ([#31196](https://github.com/NousResearch/hermes-agent/pull/31196))
### TUI
- **TUI session orchestrator** — multiple live sessions in one TUI window. (salvages [#27642](https://github.com/NousResearch/hermes-agent/pull/27642)) ([#32980](https://github.com/NousResearch/hermes-agent/pull/32980))
- `mouse_tracking` DEC mode presets. (salvage of [#26681](https://github.com/NousResearch/hermes-agent/pull/26681) by @OutThisLife) ([#30084](https://github.com/NousResearch/hermes-agent/pull/30084))
- Termux scrollback preservation + touch-friendly defaults. ([#28910](https://github.com/NousResearch/hermes-agent/pull/28910))
- Full assistant text in scrollback (no history truncation). ([#28829](https://github.com/NousResearch/hermes-agent/pull/28829))
- Preserve scrollback when branching sessions. ([#30162](https://github.com/NousResearch/hermes-agent/pull/30162))
- Preserve Python dunder identifiers in markdown. ([#28582](https://github.com/NousResearch/hermes-agent/pull/28582))
- Active profile shown in TUI prompt. ([#28581](https://github.com/NousResearch/hermes-agent/pull/28581))
- Improve Charizard completion menu contrast. ([#28346](https://github.com/NousResearch/hermes-agent/pull/28346))
- Stop slash dropdown chopping last char of `/goal`. ([#31311](https://github.com/NousResearch/hermes-agent/pull/31311))
- Clipboard copy on linux/wayland. ([#29342](https://github.com/NousResearch/hermes-agent/pull/29342))
- Anchor `splitReasoning` unclosed-tag regex; stop eating last paragraph. ([#29426](https://github.com/NousResearch/hermes-agent/pull/29426))
- Surface verbose tool details. ([#30225](https://github.com/NousResearch/hermes-agent/pull/30225))
- Load Linux skills on Termux + salvage @adybag14-cyber's Termux gates. ([#30166](https://github.com/NousResearch/hermes-agent/pull/30166))
- Handle images with codex app-server. ([#31220](https://github.com/NousResearch/hermes-agent/pull/31220))
- Refresh virtual transcript on viewport resize. ([#31077](https://github.com/NousResearch/hermes-agent/pull/31077))
- Ignore late thinking deltas after completion. ([#31055](https://github.com/NousResearch/hermes-agent/pull/31055))
- Commit composer input bursts immediately. ([#31053](https://github.com/NousResearch/hermes-agent/pull/31053))
- Log parent gateway lifecycle exits. ([#31051](https://github.com/NousResearch/hermes-agent/pull/31051))
- Clear TTS env var on voice off + TTS indicator in status bar. ([#30987](https://github.com/NousResearch/hermes-agent/pull/30987))
- Pass `--expose-gc` as node argv instead of NODE_OPTIONS. ([#29998](https://github.com/NousResearch/hermes-agent/pull/29998))
- Align composer cursorLayout with wrap-ansi to kill multiline cursor drift. ([#27489](https://github.com/NousResearch/hermes-agent/pull/27489))
- Harden Terminal.app rendering and color paths. ([#27251](https://github.com/NousResearch/hermes-agent/pull/27251))
- Keep `/goal` verdict out of compact status row. ([#27971](https://github.com/NousResearch/hermes-agent/pull/27971))
- Clamp curses color 8 for 8-color terminals (Docker). ([#30260](https://github.com/NousResearch/hermes-agent/pull/30260))
---
## 🔒 Security & Reliability
### Promptware & memory hardening
- **Promptware defense** — shared threat patterns + memory load-time scan + tool-result delimiters. ([#32269](https://github.com/NousResearch/hermes-agent/pull/32269))
- Expand memory content scanning patterns to parity with skills guard. ([#9151](https://github.com/NousResearch/hermes-agent/pull/9151))
- Harden Skills Guard multi-word prompt patterns. (@YLChen-007) ([#26852](https://github.com/NousResearch/hermes-agent/pull/26852))
- Split cron scanner so skill prose stops false-positiving exfil patterns. ([#32339](https://github.com/NousResearch/hermes-agent/pull/32339))
### File safety
- Protect Hermes control-plane files from prompt injection (`auth.json`, `config.yaml`, `webhook_subscriptions.json`, `mcp-tokens/`). (salvages @PratikRai0101's [#14157](https://github.com/NousResearch/hermes-agent/pull/14157)) ([#30397](https://github.com/NousResearch/hermes-agent/pull/30397))
- Write-deny `<root>/.env` when running under a profile. ([#29687](https://github.com/NousResearch/hermes-agent/pull/29687))
- Defense-in-depth read-deny on credential stores. (salvages [#17659](https://github.com/NousResearch/hermes-agent/pull/17659) + [#8055](https://github.com/NousResearch/hermes-agent/pull/8055)) ([#30721](https://github.com/NousResearch/hermes-agent/pull/30721))
- TTS `output_path` traversal + update ZIP symlink reject. (salvage [#6693](https://github.com/NousResearch/hermes-agent/pull/6693) + [#15881](https://github.com/NousResearch/hermes-agent/pull/15881)) ([#32056](https://github.com/NousResearch/hermes-agent/pull/32056))
- Reject symlinked audio inputs. ([#10082](https://github.com/NousResearch/hermes-agent/pull/10082))
### Credential safety
- Avoid persisting borrowed credential secrets — runtime env-sourced keys no longer leak into `auth.json`. ([#31416](https://github.com/NousResearch/hermes-agent/pull/31416))
- Validate Nous Portal `inference_base_url` against host allowlist. (salvages [#27612](https://github.com/NousResearch/hermes-agent/pull/27612)) ([#30611](https://github.com/NousResearch/hermes-agent/pull/30611))
- Harden API server key placeholder handling. ([#30738](https://github.com/NousResearch/hermes-agent/pull/30738))
- Harden Google Chat OAuth credential persistence. (@Zyrixtrex) ([#24788](https://github.com/NousResearch/hermes-agent/pull/24788))
- xAI OAuth: pin inference `base_url` to x.ai origin. ([#28952](https://github.com/NousResearch/hermes-agent/pull/28952))
- Quarantine dead OAuth tokens on terminal refresh failure (xAI, Codex, MiniMax). ([#28116](https://github.com/NousResearch/hermes-agent/pull/28116), [#28118](https://github.com/NousResearch/hermes-agent/pull/28118), [#28119](https://github.com/NousResearch/hermes-agent/pull/28119))
### Supply-chain
- **On-demand supply-chain audit via OSV.dev** — `hermes audit`. ([#31460](https://github.com/NousResearch/hermes-agent/pull/31460))
- `hermes update` syntax-validates critical files post-pull, auto-rollback on failure. ([#28669](https://github.com/NousResearch/hermes-agent/pull/28669))
- Quarantine `hermes.exe` vs concurrent Windows instance. ([#26677](https://github.com/NousResearch/hermes-agent/pull/26677))
### Other hardening
- Restrict default webhook toolset capabilities. ([#30745](https://github.com/NousResearch/hermes-agent/pull/30745))
- Harden Microsoft Graph webhook auth requirements. ([#30169](https://github.com/NousResearch/hermes-agent/pull/30169))
- Require source CIDR allowlisting for public msgraph webhook binds. ([#33722](https://github.com/NousResearch/hermes-agent/pull/33722))
- Require `API_SERVER_KEY` before dispatching API server work. ([#33232](https://github.com/NousResearch/hermes-agent/pull/33232))
- env_passthrough: apply GHSA-rhgp-j443-p4rf filter to config.yaml path. (@roadhero) ([#27794](https://github.com/NousResearch/hermes-agent/pull/27794))
- Dashboard + WeCom: restrict markdown link schemes; safe-parse untrusted XML. ([#32442](https://github.com/NousResearch/hermes-agent/pull/32442))
- Salvage project-plugin RCE bypass fix from PR [#29311](https://github.com/NousResearch/hermes-agent/pull/29311) (GHSA-5qr3-c538-wm9j). ([#30837](https://github.com/NousResearch/hermes-agent/pull/30837))
- Cross-profile soft guard on file-write tools + system-prompt hint. ([#31290](https://github.com/NousResearch/hermes-agent/pull/31290))
- Reject unsafe tar members in Android psutil compatibility installer. ([#33742](https://github.com/NousResearch/hermes-agent/pull/33742))
- Reject non-regular tar members during tirith auto-install. ([#33786](https://github.com/NousResearch/hermes-agent/pull/33786))
---
## 🪟 Native Windows (Beta Continued)
- Complete Windows bootstrap — `dep_ensure` + `install.ps1` + detection. (@alt-glitch) ([#27845](https://github.com/NousResearch/hermes-agent/pull/27845))
- `install.ps1`: strip BOM, `-Commit`/`-Tag` pin params, harden git ops. (@jquesnelle) ([#28169](https://github.com/NousResearch/hermes-agent/pull/28169))
- Consolidate ACP browser bootstrap into `install.{sh,ps1}`. (@alt-glitch) ([#27851](https://github.com/NousResearch/hermes-agent/pull/27851))
- `hermes update` quarantines live `hermes.exe`. ([#26677](https://github.com/NousResearch/hermes-agent/pull/26677))
- Discord voice opus decoding on Windows. ([#33182](https://github.com/NousResearch/hermes-agent/pull/33182))
- Windows Docker Desktop compatible compose file. (@Sunil123135) ([#31031](https://github.com/NousResearch/hermes-agent/pull/31031))
---
## 🖥️ Web Dashboard
- Hardened Slack socket recovery + Windows restart dedupe. ([#28873](https://github.com/NousResearch/hermes-agent/pull/28873))
- Web dashboard: migrate checkboxes to `@nous-research/ui` + design-system polish. (@austinpickett) ([#28814](https://github.com/NousResearch/hermes-agent/pull/28814))
- Web dashboard: collapsible sidebar. (@austinpickett) ([#33421](https://github.com/NousResearch/hermes-agent/pull/33421))
- Dashboard typography & contrast pass. (salvage of [#28832](https://github.com/NousResearch/hermes-agent/pull/28832)) ([#30714](https://github.com/NousResearch/hermes-agent/pull/30714))
- Skills page: lazy-fetch catalog instead of bundling 34MB into JS. ([#33809](https://github.com/NousResearch/hermes-agent/pull/33809))
---
## 🐳 Docker
- **s6-overlay container supervision** — abstract `ServiceManager` protocol (systemd/launchd/Windows/s6 backends), per-profile gateway supervision in-container, container-restart reconciliation, hadolint/shellcheck CI. (salvage of [#30136](https://github.com/NousResearch/hermes-agent/pull/30136), @benbarclay) ([#31760](https://github.com/NousResearch/hermes-agent/pull/31760))
- Auto-redirect `gateway run` to supervised mode inside the s6 image. (@benbarclay) ([#33583](https://github.com/NousResearch/hermes-agent/pull/33583))
- Tee supervised gateway stdout to docker logs. (@benbarclay) ([#33621](https://github.com/NousResearch/hermes-agent/pull/33621))
- Drop `docker exec` to hermes uid before invoking the CLI. (@benbarclay) ([#33628](https://github.com/NousResearch/hermes-agent/pull/33628))
- Align HOME for dashboard and s6 gateway services. (@Dusk1e) ([#33481](https://github.com/NousResearch/hermes-agent/pull/33481))
- Bake build-time git SHA into image so `hermes dump` reports it. (@benbarclay) ([#33655](https://github.com/NousResearch/hermes-agent/pull/33655))
- `hermes update` prints `docker pull` guidance instead of bogus git error. (@benbarclay) ([#33659](https://github.com/NousResearch/hermes-agent/pull/33659))
- Upgrade Node to 22 LTS via multi-stage from `node:22-bookworm-slim`. (@benbarclay) ([#33060](https://github.com/NousResearch/hermes-agent/pull/33060))
- Drop `build-essential` from apt install. (@benbarclay) ([#33028](https://github.com/NousResearch/hermes-agent/pull/33028))
- Propagate env through s6 to cont-init and main CMD. ([#32412](https://github.com/NousResearch/hermes-agent/pull/32412))
- Targeted chown to preserve host file ownership in `HERMES_HOME`. ([#33033](https://github.com/NousResearch/hermes-agent/pull/33033))
- `mkdir HERMES_HOME` as root in stage2 before chown / privilege drop. ([#33078](https://github.com/NousResearch/hermes-agent/pull/33078))
- chown `ui-tui` and `node_modules` on UID remap so TUI esbuild works. ([#33045](https://github.com/NousResearch/hermes-agent/pull/33045))
- Include `anthropic`, `bedrock`, `azure-identity` extras in image. ([#30504](https://github.com/NousResearch/hermes-agent/pull/30504))
- Stop pushing per-commit SHA tags to Docker Hub. ([#29387](https://github.com/NousResearch/hermes-agent/pull/29387))
- Simplify Docker tagging — push both `:main` and `:latest` on main push. ([#33225](https://github.com/NousResearch/hermes-agent/pull/33225))
- Test slicing across GH actions jobs. (@ethernet8023) ([#30575](https://github.com/NousResearch/hermes-agent/pull/30575))
- Discover agent-browser Chromium binary at boot. ([#33184](https://github.com/NousResearch/hermes-agent/pull/33184))
---
## 🌐 API Server
- **Session control API** — `/api/sessions/*` (list/create/read/patch/delete/fork) + SSE-streaming chat. (salvages [#29302](https://github.com/NousResearch/hermes-agent/pull/29302) by @Codename-11 + multimodal followup by @Schwartz10) ([#33134](https://github.com/NousResearch/hermes-agent/pull/33134))
- `GET /v1/skills` and `/v1/toolsets`. ([#33016](https://github.com/NousResearch/hermes-agent/pull/33016))
- Coerce stringified booleans in stream/store/approval payloads. (salvage [#26639](https://github.com/NousResearch/hermes-agent/pull/26639)) ([#27293](https://github.com/NousResearch/hermes-agent/pull/27293))
- Honor `key_env` in auth-failure fallback resolution. ([#30840](https://github.com/NousResearch/hermes-agent/pull/30840))
---
## 🎟️ ACP (VS Code / Zed / JetBrains)
- Session edit auto-approval modes. (salvage of [#27034](https://github.com/NousResearch/hermes-agent/pull/27034)) ([#27862](https://github.com/NousResearch/hermes-agent/pull/27862))
- Enrich Zed permission cards — command in title + `reject_always`. ([#28148](https://github.com/NousResearch/hermes-agent/pull/28148))
- Replay session history before responding to `session/load`. ([#26957](https://github.com/NousResearch/hermes-agent/pull/26957), [#26943](https://github.com/NousResearch/hermes-agent/pull/26943))
- Plugin-transformed final_response delivered through streaming gate. ([#31433](https://github.com/NousResearch/hermes-agent/pull/31433))
---
## 🔌 Plugin Surface
- `register_tts_provider()` plugin hook. (salvage of [#30420](https://github.com/NousResearch/hermes-agent/pull/30420)) ([#31745](https://github.com/NousResearch/hermes-agent/pull/31745))
- `register_transcription_provider()` hook + `stt.providers` command-provider registry. (salvage of [#30493](https://github.com/NousResearch/hermes-agent/pull/30493)) ([#31907](https://github.com/NousResearch/hermes-agent/pull/31907))
- `register_auxiliary_task()` in PluginContext API. (salvage [#29817](https://github.com/NousResearch/hermes-agent/pull/29817)) ([#31177](https://github.com/NousResearch/hermes-agent/pull/31177))
- Bundled `security-guidance` plugin. ([#33131](https://github.com/NousResearch/hermes-agent/pull/33131))
- Discord and Mattermost migrated to bundled plugins. ([#30591](https://github.com/NousResearch/hermes-agent/pull/30591), [#31748](https://github.com/NousResearch/hermes-agent/pull/31748))
- ntfy as platform plugin. ([#30867](https://github.com/NousResearch/hermes-agent/pull/30867))
- Surface category-namespaced plugins in `hermes plugins list`. ([#27187](https://github.com/NousResearch/hermes-agent/pull/27187))
- Plugin discovery failures raised to WARNING level. ([#28318](https://github.com/NousResearch/hermes-agent/pull/28318))
- `hermes_plugins` included in gateway.log component filter. ([#28313](https://github.com/NousResearch/hermes-agent/pull/28313))
- Seed plugin extras before `is_connected` gate. ([#31703](https://github.com/NousResearch/hermes-agent/pull/31703))
- Dashboard: allowlist plugin assets + denylist subprocess-influencing env vars. ([#32277](https://github.com/NousResearch/hermes-agent/pull/32277))
---
## 📦 Distribution & Install
- Install-method stamping + Docker detection. (@alt-glitch) ([#27843](https://github.com/NousResearch/hermes-agent/pull/27843))
- Nix `#messaging` and `#full` package variants. (@alt-glitch) ([#33108](https://github.com/NousResearch/hermes-agent/pull/33108))
- Pre-load messaging gateway deps via `--extra messaging`. (salvage [#26394](https://github.com/NousResearch/hermes-agent/pull/26394)) ([#27558](https://github.com/NousResearch/hermes-agent/pull/27558))
- Avoid piping installer directly into `iex` (Windows). ([#28347](https://github.com/NousResearch/hermes-agent/pull/28347))
- Ship bundled skills in wheel. ([#28421](https://github.com/NousResearch/hermes-agent/pull/28421))
- Ship dashboard plugin assets in wheel. ([#28406](https://github.com/NousResearch/hermes-agent/pull/28406))
- Make Camofox lazy-installed instead of eager. ([#27055](https://github.com/NousResearch/hermes-agent/pull/27055))
- Wire STT lazy-install into transcription_tools.py. ([#30256](https://github.com/NousResearch/hermes-agent/pull/30256))
---
## 🐛 Notable Bug Fixes (highlights only)
- Match bare custom provider by active base URL in `hermes model`. ([#28908](https://github.com/NousResearch/hermes-agent/pull/28908))
- Route `auxiliary.vision.provider=openai` to api.openai.com, skip text-only main. ([#31452](https://github.com/NousResearch/hermes-agent/pull/31452))
- Lint: skip per-file shell linter when LSP will handle the file. ([#29054](https://github.com/NousResearch/hermes-agent/pull/29054))
- Treat empty credential pool entries as unauthenticated in `/model` picker. ([#28312](https://github.com/NousResearch/hermes-agent/pull/28312))
- Reverted within window: Firecrawl integration tag, send_message @username auto-mentions, Telegram quick-command-only menus, Telegram pin-on-turn.
---
## 🧪 Testing
- Disarm lazy-install probe so `_HAS_FASTER_WHISPER` patches work. ([#30334](https://github.com/NousResearch/hermes-agent/pull/30334))
- Cover default board dashboard pin. ([#28361](https://github.com/NousResearch/hermes-agent/pull/28361))
- Cover `_task_dict` `task_age` fallback. ([#28365](https://github.com/NousResearch/hermes-agent/pull/28365))
- Allowlist `tmp_path` for `kanban_notify` artifact delivery tests. ([#30851](https://github.com/NousResearch/hermes-agent/pull/30851), [#30852](https://github.com/NousResearch/hermes-agent/pull/30852))
- Cover null output stream terminal events in Codex. ([#33137](https://github.com/NousResearch/hermes-agent/pull/33137))
---
## 📚 Documentation
- **30-day docs overhaul** — full correctness audit, every PR in the window covered, Nous Portal weave, sidebar reorg. ([#33782](https://github.com/NousResearch/hermes-agent/pull/33782))
- Dedicated Nous Portal integration page and setup guide. ([#31296](https://github.com/NousResearch/hermes-agent/pull/31296))
- Providers: move Nous Portal first, Google Gemini OAuth last. ([#31287](https://github.com/NousResearch/hermes-agent/pull/31287))
- `session_search` rewrite for single-shape tool. ([#27840](https://github.com/NousResearch/hermes-agent/pull/27840))
- Kanban: document failure_limit, max_retries, inline create shortcuts, goals & kanban settings. ([#28357](https://github.com/NousResearch/hermes-agent/pull/28357), [#28358](https://github.com/NousResearch/hermes-agent/pull/28358), [#28359](https://github.com/NousResearch/hermes-agent/pull/28359), [#28360](https://github.com/NousResearch/hermes-agent/pull/28360), [#28362](https://github.com/NousResearch/hermes-agent/pull/28362))
- Kanban Codex lane skill. ([#28430](https://github.com/NousResearch/hermes-agent/pull/28430))
- xAI OAuth: note X Premium+ also unlocks Grok OAuth. ([#29055](https://github.com/NousResearch/hermes-agent/pull/29055))
- Docs site: Docker audio bridge notes, "Installing more tools in the container", xurl auth HOME in Docker.
- Email: clarify gateway vs Himalaya setup. (@helix4u) ([#33634](https://github.com/NousResearch/hermes-agent/pull/33634))
- Auth docs: replace stale `hermes login` references with `hermes auth add`. ([#32859](https://github.com/NousResearch/hermes-agent/pull/32859))
---
## 👥 Contributors
### Core
- @teknium1 (lead)
### Notable salvages & cherry-picks
- **@benbarclay** — s6-overlay container supervision (29 commits salvaged), Node 22 LTS upgrade, build-essential cleanup, `gateway run` auto-redirect in s6, tee supervised stdout to docker logs, `hermes update` Docker guidance, build-time SHA stamping
- **@OutThisLife** — `mouse_tracking` DEC mode presets
- **@jquesnelle** — Windows installer hardening, `--branch` flag for `hermes update`, install.ps1 BOM strip / commit-pin
- **@alt-glitch** — Windows `dep_ensure` bootstrap, Nix package variants (`.#messaging`, `.#full`), install-method stamping, ACP browser bootstrap consolidation
- **@austinpickett** — `/update` slash command, dashboard checkboxes → `@nous-research/ui`, mobile dashboard polish, collapsible sidebar
- **@ethernet8023** — CI test slicing across GH Actions jobs, TUI clipboard copy fix
- **@kshitijk4poor** — doctor section banner + fail-and-issue helpers extraction, post-tag salvage cluster (curator-fallout, kanban SQLite hardening, install world-readable uv dirs, xAI bare-code paste)
- **@rewbs** — Nous JWT inference switch + refresh-token replay fix
- **@Codename-11** + **@Schwartz10** — session control API (REST + SSE + multimodal followup)
- **@Niraven** — kanban swarm topology helper
- **@Interstellar-code** — kanban worker visibility endpoints
- **@adybag14-cyber** — termux cold-start optimizations (multiple PRs)
- **@qike-ms** — Telegram in-place status edits design
- **@sprmn24** — ntfy adapter
- **@Jaaneek** — xAI Web Search provider plugin
- **@yannsunn** — xAI upstream adapter for `hermes proxy`
- **@Cybourgeoisie** — OpenRouter sticky routing via session_id
- **@memosr** — Nous Portal base_url allowlist validation
- **@Sunil123135** — Windows Docker Desktop compose file
- **@Dusk1e** — Docker HOME alignment for dashboard + s6 gateway services
- **@beardthelion** — opencode-go anthropic_messages routing
- **@YLChen-007** — Skills Guard multi-word prompt patterns
- **@roadhero** — env_passthrough GHSA-rhgp-j443-p4rf filter
- **@Zyrixtrex** — Google Chat OAuth credential persistence hardening
- **@briandevans**, **@tomqiaozc** — defense-in-depth read-deny on credential stores
- **@PratikRai0101** — control-plane file write protection
- **@helix4u**, **@Bartok9**, **@zccyman** — auxiliary fallback ladder components
- **@ms-alan**, **@ticketclosed-wontfix**, **@donovan-yohan** — TUI session orchestrator + follow-ups
- **@daimon-nous[bot]** — cron per-job profile support
- **@bisko** — re-pad `reasoning_content` on cross-provider fallback
### All Contributors
@02356abc, @0xchainer, @0xDevNinja, @0xjackyang, @0xsir0000, @0z1-ghb, @8bit64k, @aaronlab, @AceWattGit,
@ACR27, @adam91holt, @AdamPlatin123, @Ade5954, @AdityaRajeshGadgil, @adybag14-cyber, @AhmetArif0, @ai-hana-ai,
@alaamohanad169-ship-it, @alber70g, @albert748, @alt-glitch, @aqilaziz, @argabor, @asdlem, @austinpickett,
@avifenesh, @awizemann, @B0Tch1, @Bartok9, @BaxBit, @Beandon13, @beardthelion, @benbarclay, @bensargotest-sys,
@binhnt92, @bird, @bisko, @BlackishGreen33, @booker1207, @bradhallett, @briandevans, @Brixyy, @brndnsvr,
@BROCCOLO1D, @btorresgil, @burjorjee, @carltonawong, @Carry00, @chaconne67, @chdlc, @chromalinx, @ChyuWei,
@CipherFrame, @cmullins70, @CNSeniorious000, @codeblackhole1024, @Codename-11, @colin-chang, @counterposition,
@cresslank, @CryptoByz, @cyb0rgk1tty, @Cybourgeoisie, @daizhonggeng, @darvsum, @davidcampbelldc, @deas,
@dgians, @dillweed, @DoGMaTiiC, @donovan-yohan, @draplater, @Drexuxux, @dskwe, @dsr-restyn, @Dusk1e,
@dusterbloom, @duyua9, @egilewski, @el-analista, @eliteworkstation94-ai, @eloklam, @EloquentBrush0x, @emonty,
@emozilla, @erhnysr, @erikengervall, @Erosika, @ether-btc, @ethernet8023, @EvilHumphrey, @fabiosiqueira,
@falasi, @falconexe, @fardoche6, @felix-windsor, @Fewmanism, @ffr31mr, @flamiinngo, @flanny7, @flooryyyy,
@fonhal, @francip, @fujinice, @gianfrancopiana, @glennc, @Glucksberg, @godlin-gh, @Grogger, @guillaumemeyer,
@Gutslabs, @H-Ali13381, @hanzckernel, @haran2001, @hawknewton, @hayka-pacha, @hehehe0803, @helix4u, @HenkDz,
@Hermes, @hermesagent26, @Hinotoi-agent, @hongchen1993, @honor2030, @houenyang-momo, @ht1072, @hueilau,
@iamfoz, @ilonagaja509-glitch, @InB4DevOps, @indigokarasu, @Interstellar-code, @iqdoctor, @iRonin, @Jaaneek,
@JabberELF, @jacevys, @jackey8616, @jackjin1997, @jdelmerico, @jfuenmayor, @Jiahui-Gu, @JimLiu, @joe102084,
@JohnC1009, @jonpol01, @Jpalmer95, @Julientalbot, @justemu, @justincc, @jvinals, @karthikeyann, @kasunvinod,
@kchuang1015, @kenyonxu, @khungate, @kiranvk-2011, @kjames2001, @konsisumer, @kpadilha, @kriscolab,
@krislidimo, @kronexoi, @kshitijk4poor, @kunci115, @Kylejeong2, @kylekahraman, @LaPhilosophie, @leeseoki0,
@lemassykoi, @Lempkey, @LeonJS, @LeonSGP43, @lidge-jun, @LifeJiggy, @liuhao1024, @LizerAIDev, @loicnico96,
@loongfay, @m0n3r0, @malaiwah, @matthewlai, @mavrickdeveloper, @maxmilian, @McClean-Edison, @memosr,
@Mind-Dragon, @momowind, @MoonJuhan, @MoonRay305, @moortekweb-art, @MorAlekss, @ms-alan, @Nami4D,
@nehaaprasaad, @nekwo, @nftpoetrist, @NickLarcombe, @nidhi-singh02, @Niraven, @nnnet, @noctilust, @novax635,
@nthrow, @nv-kasikritc, @nycomar, @OCWC22, @oemtalks, @OmX, @ooovenenoso, @orcool, @oseftg, @outsourc-e,
@OutThisLife, @Paperclip, @PaTTeeL, @pepelax, @phoenixshen, @Pluviobyte, @pnascimento9596, @pochi-gio, @pr7426,
@PratikRai0101, @Prithvi1994, @psionic73, @ptichalouf, @Que0x, @QuenVix, @quocanh261997, @qWaitCrypto, @Qwinty,
@r266-tech, @rak135, @rdasilva1016-ui, @rewbs, @roadhero, @rodrigoeqnit, @RonHillDev, @roycepersonalassistant,
@rudi193-cmd, @RyanRana, @sadiksaifi, @samahn0601, @samggggflynn, @SamuelZ12, @sanghyuk-seo-nexcube,
@Saurav0989, @savanne-kham, @Schrotti77, @Schwartz10, @SerenityTn, @sgtworkman, @sharziki, @shaun0927,
@shellybotmoyer, @shunsuke-hikiyama, @SimbaKingjoe, @SimoKiihamaki, @sir-ad, @Slimydog21, @slowtokki0409,
@Soju06, @someaka, @soynchux, @sprmn24, @Stark-X, @steezkelly, @stepanov1975, @stephenschoettler,
@stevehq26-bot, @steveonjava, @Strontvod, @subtract0, @Sunil123135, @superearn-fisher, @Sylw3ster, @tchanee,
@that-ambuj, @thedavidmurray, @TheOnlyMika, @therahul-yo, @thewillhuang, @ticketclosed-wontfix, @Timur00Kh,
@tomqiaozc, @Tosko4, @Tranquil-Flow, @tw2818, @uzunkuyruk, @vaddisrinivas, @vanthinh6886, @vgocoder,
@victorGPT, @vynxevainglory-ai, @waefrebeorn, @walli, @wangpuv, @wanwan2qq, @wesleysimplicio, @worlldz,
@wpengpeng168, @WuKongAI-CMU, @wuli666, @Wysie, @wysie, @xxxigm, @yannsunn, @YanzhongSu, @YarrowQiao, @ygd58,
@YLChen-007, @yoniebans, @yu-xin-c, @YuanHanzhong, @zapabob, @zccyman, @ziliangpeng, @zwolniony, @Zyrixtrex
---
**Full Changelog**: [v2026.5.16...v2026.5.28](https://github.com/NousResearch/hermes-agent/compare/v2026.5.16...v2026.5.28)