hermes-runtime
Fail
Audited by Gen Agent Trust Hub on Aug 21, 2026
Risk Level: HIGHCOMMAND_EXECUTIONCREDENTIALS_UNSAFEPROMPT_INJECTION
Full Analysis
- [DYNAMIC_EXECUTION]: The skill uses
node:child_process.spawnto execute thesshbinary for creating tunnels. TheremoteHostparameter, which is configurable via thesetupcommand's--remote-hostflag, is passed as a direct command-line argument. This allows for argument injection; if the parameter is set to a string starting with a hyphen (e.g.,-oProxyCommand=touch /tmp/pwned), thesshbinary will interpret it as an option, leading to arbitrary command execution. - Evidence: In
scripts/lib/connection.mjs, thestartTunnelfunction passesssh.remoteHostdirectly into thespawncall for thesshprocess. - [DATA_EXPOSURE_AND_EXFILTRATION]: The skill facilitates the storage of a Hermes API key in a local configuration file. When the
setupcommand is run with the--jsonflag, the utility outputs the entire configuration object to stdout, exposing theapiKeyin plain text to the AI agent and the conversation history. - Evidence: The
cmdSetupfunction inscripts/hermes-companion.mjscallsoutput(result, true)whereresultcontains the raw config object returned byresolve(). - [DATA_EXPOSURE_AND_EXFILTRATION]: The
sshtunnel implementation uses the-o StrictHostKeyChecking=accept-newflag. This automatically accepts new host keys without user verification, which can facilitate man-in-the-middle attacks if the connection is made to a spoofed remote host. - [INDIRECT_PROMPT_INJECTION]: The skill is designed to receive and display output from a remote Hermes agent. The instructions in
SKILL.mdandcommands/chat.mdexplicitly direct the agent to return this remote output "verbatim" without any sanitization, filtering, or the use of boundary markers. This creates a surface for a malicious or compromised remote service to inject instructions that the local agent may follow. - Ingestion points:
api.chat,api.streamChat, andapi.streamRunEventsinscripts/lib/hermes-api.mjsingest data viafetchcalls to the Hermes Gateway. - Boundary markers: Absent; instructions specifically require returning the response verbatim.
- Capability inventory: The skill has the ability to execute shell commands via the
nodehelper and establish SSH tunnels. - Sanitization: Absent; output is processed directly through the
render.mjslibrary and printed to stdout.
Recommendations
- AI detected serious security threats
Audit Metadata