# Hermes Agent v0.21.6
**发布日期:** 2026 年 10 月 8 日
> 补丁版本。此标签将自 v0.21.5 以来合并的约 2,100 个 PR 汇总为一个面向 Docker 和 Hermes Cloud 的稳定标记版本。此时间窗口的完整精选说明将随 v0.22.0 一同发布。
<!-- HERMES_BUILDS_TABLE -->
## 关于此版本
这是由新的稳定版本发布流水线构建的首个版本:一次尝试引用(attempt ref)、一个经过测试的 Docker 镜像,以及发布时生成的回执标签。该版本包含此标签、此 GitHub 发布版本和 Docker 镜像。桌面应用、Termux 软件包和 Microsoft Store 目前仍保持当前构建版本,并将在下一次捆绑版本中更新。
以提交 `818c13be1dc4fd28987e1e881a9408224afd4535` 为基准,自 v0.21.5 以来的时间窗口包含 **8,867 个非合并提交**,涉及 **8,342 个变更文件**(+772,490 / −225,600)、**2,106 个已合并 PR** 和 **3,027 个已关闭 issue**。
此外,此处有意不作详细说明的改进还包括:CLI、TUI 和桌面端支持在讲话时进行实时转录(`stt.streaming`);将语音对话轮次路由至专用模型(`auxiliary.voice_chat`),默认关闭推理;第三方插件可在按配置文件隔离的插件宿主中运行(`plugins.isolation: host`),并在“设置 ▸ 插件”中统一管理其设置页面;桌面端模型选择器顶部显示收藏和置顶模型,在订阅即将达到限制前显示使用量提示,并对受速率限制的提供商说明原因和解除限制的时间;在 `hermes model` 中支持本地模型,以及 Linux x64 和 arm64 上的 llama.cpp CUDA;核心、桌面端和 TUI 支持可插拔、分层的语言包;以摘要优先的 `hermes status`(`--short`、`--full`);审查面板支持差异范围选择器(未提交 / 分支 / 上一轮),并支持随当前轮次自动保持唤醒;当 cron 存储无法写入时,cron、`doctor` 和主频道会发出警告;终端命令中的凭据上传和不可见 Unicode 字符支持审批标志;Discord 设置流程会检查机器人令牌并打印邀请链接;统一的看板工作流定义;`activate.fish`;模型目录中新增 GPT-6.1 Sol 以及 Claude Sonnet 5.5 / Haiku 5.5;以及数十个新的社区插件。
**此时间窗口的完整精选发布说明将随 v0.22.0 一同发布**,其中将记录自 v0.21.0 起的所有内容——包括亮点、功能领域和完整的贡献者致谢。此时间窗口中的任何内容都不会遗漏。
## 更新方式
- Docker / Hermes Cloud:使用 `nousresearch/hermes-agent:stable`(或 `:latest`)。
- CLI(通过 git 安装):运行 `hermes update`,或重新执行安装器的一行命令。
- 桌面应用和 Termux:此版本没有变化;将在下一次捆绑版本中更新。
## 安全修复
**强化仪表板身份验证**
- 伪造的 `X-Forwarded-For` 请求头可能重置密码登录速率限制,并绕过原生登录的单 IP 上限(#133367)
- 未经身份验证的登录请求可以向身份验证审计日志写入不受限制的值(#133369)
- 公共 `/auth/` 路由没有请求体大小限制(#133370)
- 原生登录可能将登录验证码发送至非回环重定向地址,从而导致会话劫持(#130685)
感谢 Tenable Research 报告上述四个问题(TRA-725、TRA-726、TRA-727、TRA-728)。原生登录重定向问题也曾由 @Froraut 独立报告并修复。`X-Forwarded-For` 修复建立在社区贡献者 @hinotoi-agent 和 @BearHuddleston 的工作之上(#40285)。
**强化仓库 git 过滤器**
- 自动执行的 git 调用(会话工作区快照、子代理工作树、看板、工作树清理、`hermes -w`)可能会在首次提示之前,运行由不可信仓库自身配置定义的 `clean` / `smudge` / `process` 过滤器程序(#130661)
感谢燕涛私下报告此问题。该问题也曾由 @jonpol01(#126017、#126019)和 @JoaoMarcos44(#126075)公开报告并修复。
**强化邮件网关发件人验证**
- `From` 请求头中的带引号显示名称(例如 `"Victim <
[email protected]>" <
[email protected]>`)可能使攻击者的邮件绕过邮件允许列表,被误判为来自允许的发件人(#125212)
感谢 Daniel Steele(@keeltrace)报告此问题并编写修复方案(#124322)。
**完整变更日志**:[v2026.9.24...v0.21.6](https://github.com/NousResearch/hermes-agent/compare/v2026.9.24...v0.21.6)
# Hermes Agent v0.21.6
**Release Date:** October 8, 2026
> Patch release. This tag rolls up the ~2,100 PRs merged since v0.21.5 into a stable tagged release for Docker and Hermes Cloud. Full curated notes for this window ship with v0.22.0.
<!-- HERMES_BUILDS_TABLE -->
## About this release
This is the first release cut by the new stable release pipeline: one attempt ref, a tested Docker image, and a receipt tag at publish. It ships the tag, this GitHub release and the Docker image. The desktop app, Termux packages and the Microsoft Store stay on their current build for now and move with the next bundled release.
Measured at commit `818c13be1dc4fd28987e1e881a9408224afd4535`, the window since v0.21.5 contains **8,867 non-merge commits** across **8,342 changed files** (+772,490 / −225,600), **2,106 merged PRs** and **3,027 closed issues**.
Also in the window, undocumented here on purpose: live transcription while you speak on CLI, TUI and Desktop (`stt.streaming`); spoken voice turns routed to their own model (`auxiliary.voice_chat`) with reasoning off by default; third-party plugins running in a per-profile plugin host (`plugins.isolation: host`) and one Settings ▸ Plugins home for their settings pages; favorite and pinned models at the top of the Desktop picker, a usage chip before a subscription hits its wall, and rate-limited providers that say why and until when; local models in `hermes model` plus llama.cpp CUDA on Linux x64 and arm64; pluggable, layered language packs across core, Desktop and TUI; a summary-first `hermes status` (`--short`, `--full`); a review-pane diff scope selector (Uncommitted / Branch / Last turn) and keep-awake that follows the turn; cron, `doctor` and home-channel warnings when the cron store goes unwritable; approval flags for credential uploads and invisible Unicode in terminal commands; a Discord setup that checks the bot token and prints the invite link; a unified Kanban workflow definition; `activate.fish`; GPT-6.1 Sol and Claude Sonnet 5.5 / Haiku 5.5 in the catalogs; and dozens of new community plugins.
**Full curated release notes for this window ship with v0.22.0**, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.
## Updating
- Docker / Hermes Cloud: `nousresearch/hermes-agent:stable` (or `:latest`).
- CLI (git installs): `hermes update`, or re-run the installer one-liner.
- Desktop app and Termux: no change in this release; they update with the next bundled release.
## Security Fixes
**Dashboard authentication hardening**
- Spoofed `X-Forwarded-For` headers could reset the password-login rate limit and get around the per-IP cap on native sign-in (#133367)
- Unauthenticated login requests could write unbounded values to the auth audit log (#133369)
- The public `/auth/` routes had no request-body size limit (#133370)
- Native sign-in could send login codes to a non-loopback redirect, which allowed session takeover (#130685)
Thanks to Tenable Research for reporting all four issues (TRA-725, TRA-726, TRA-727, TRA-728). The native sign-in redirect issue was also reported independently and fixed by @Froraut. The `X-Forwarded-For` fix builds on community work by @hinotoi-agent and @BearHuddleston (#40285).
**Repository git filter hardening**
- Automatic git calls (session workspace snapshot, subagent worktrees, kanban, worktree cleanup, `hermes -w`) could run `clean`/`smudge`/`process` filter programs defined by an untrusted repository's own config, before the first prompt (#130661)
Thanks to 燕涛 for reporting this privately. It was also reported and fixed publicly by @jonpol01 (#126017, #126019) and @JoaoMarcos44 (#126075).
**Email gateway sender hardening**
- A quoted display name in the `From` header (e.g. `"Victim <
[email protected]>" <
[email protected]>`) could make an attacker's message pass the email allowlist as an allowed sender (#125212)
Thanks to Daniel Steele (@keeltrace) for reporting this and writing the fix (#124322).
**Full Changelog**: [v2026.9.24...v0.21.6](https://github.com/NousResearch/hermes-agent/compare/v2026.9.24...v0.21.6)