Executive brief
NousResearch hermes-agent, an AI agent framework, contains a flaw in how it filters sensitive internal reasoning from live data streams. An attacker can use specific text prompts to trick the AI into using non-standard capitalization for its internal "thought" tags, causing the system to leak private reasoning, system instructions, or internal logic directly to the end user. While the final saved logs are cleaned, the live interaction remains vulnerable, potentially exposing proprietary business logic or sensitive system prompts.
Technical details
A case-sensitivity vulnerability exists in the 'GatewayStreamConsumer._filter_and_accumulate' function within 'gateway/stream_consumer.py' and 'HermesCLI._stream_delta' in 'cli.py'. The streaming filter uses exact string matching against a hardcoded list of lowercase and specific uppercase tags (e.g., <think>, <THINKING>) to suppress reasoning blocks. By using prompt injection to force the model to output mixed-case or unlisted uppercase tags (e.g., <THINK>, <Think>, <THOUGHT>), an attacker can bypass the 'buf.find(tag)' check. This causes the internal reasoning tokens to be streamed to the client before the case-insensitive post-processing filter can run. The project maintainers have reportedly declined to merge a dedicated fix, citing maintenance costs.
Affected products
- NousResearch hermes-agent up to 2026.4.30
Timeline
- 2026-05-07: disclosed: Initial vulnerability report and PoC published on GitHub Gist.
- 2026-05-17: other: Issue #27288 opened on GitHub.
- 2026-05-19: other: Pull request #28631 submitted to address the issue.
- 2026-07-03: advisory: CVE-2026-14617 published.
References
- https://gist.github.com/YLChen-007/2229e5505bcbb3e15a7ae8fba4c4be37
- https://github.com/NousResearch/hermes-agent/
- https://github.com/NousResearch/hermes-agent/issues/27288
- https://github.com/NousResearch/hermes-agent/pull/28631
- https://vuldb.com/cve/CVE-2026-14617
- https://vuldb.com/submit/844654
- https://vuldb.com/vuln/376134