Bug Description
In a couple recent threads I noticed that my Hermes Agent tried to use tools like Claude ACP and Claude Desktop. These are tools we never use and do not have installed. This produced errors.
I asked my Hermes Agent to figure out why it was doing this. It replied:
The root cause is clear. Here's the diagnosis:
Source: The delegate_task tool definition itself
The tool schema exposed to me includes two parameters that are hardcoded into Hermes Agent's core tool definitions:
-
acp_command — Description reads: "Override ACP command for child agents (e.g. 'claude', 'copilot'). Enables spawning Claude Code (claude --acp --stdio) or other ACP-capable agents..."
-
acp_args — Description reads: "Arguments for the ACP command (default: ['--acp', '--stdio'])..."
These aren't skills or configuration I've picked up — they're baked into the tool definition I see every session. When I'm reasoning about delegation strategies, the tool schema literally presents "claude" as the canonical example value. If I'm not paying close attention to whether you actually have claude installed, I'll default to suggesting it because that's what the tool definition primes me toward.
Why it happens intermittently:
- On straightforward delegation tasks, I use subagents normally (which is what you want).
- On complex/ambiguous tasks where I'm considering "which agent harness to use," I see the
acp_command parameter with "claude" as the example and sometimes hallucinate that it's a valid option for your setup.
- The disabled
claude-code skill (line 303 in config.yaml) is a partial safeguard, but it only prevents me from loading that skill — it doesn't remove the acp parameters from the delegate_task tool definition.
What won't fix it:
- Disabling skills doesn't help — this is a tool-level definition issue, not a skill issue.
What would fix it:
This is a Hermes Agent framework-level concern. The acp_command/acp_args parameters should either:
- Be gated behind a config flag that hides them when no ACP-capable harness is installed, or
- Have their descriptions not lead with
"claude" as the primary example, reducing the priming effect.
Steps to Reproduce
Run long and somewhat complex workflows that involve calling multiple LLMs / APIs and eventually this triggers. It is intermittent so a little hard to reproduce reliably.
Expected Behavior
Do not call Claude tools or apps unless they have been explicitly invoked or connected to the agent.
Actual Behavior
Calls Claude apps and tools even if they were never installed, never connected to the agent, and not invoked by the user
Affected Component
Tools (terminal, file ops, web, code execution, etc.)
Messaging Platform (if gateway-related)
No response
Debug Report
The log files created but this command contain snippets of prompts and user information. Uploading them to a public URL and posting them here is insecure and unsound security practice.
Operating System
Ubuntu 24.04
Python Version
No response
Hermes Version
No response
Additional Logs / Traceback (optional)
Root Cause Analysis (optional)
No response
Proposed Fix (optional)
No response
Are you willing to submit a PR for this?
Bug Description
In a couple recent threads I noticed that my Hermes Agent tried to use tools like Claude ACP and Claude Desktop. These are tools we never use and do not have installed. This produced errors.
I asked my Hermes Agent to figure out why it was doing this. It replied:
The root cause is clear. Here's the diagnosis:
Source: The
delegate_tasktool definition itselfThe tool schema exposed to me includes two parameters that are hardcoded into Hermes Agent's core tool definitions:
acp_command— Description reads: "Override ACP command for child agents (e.g. 'claude', 'copilot'). Enables spawning Claude Code (claude --acp --stdio) or other ACP-capable agents..."acp_args— Description reads: "Arguments for the ACP command (default: ['--acp', '--stdio'])..."These aren't skills or configuration I've picked up — they're baked into the tool definition I see every session. When I'm reasoning about delegation strategies, the tool schema literally presents
"claude"as the canonical example value. If I'm not paying close attention to whether you actually haveclaudeinstalled, I'll default to suggesting it because that's what the tool definition primes me toward.Why it happens intermittently:
acp_commandparameter with"claude"as the example and sometimes hallucinate that it's a valid option for your setup.claude-codeskill (line 303 in config.yaml) is a partial safeguard, but it only prevents me from loading that skill — it doesn't remove the acp parameters from the delegate_task tool definition.What won't fix it:
What would fix it:
This is a Hermes Agent framework-level concern. The
acp_command/acp_argsparameters should either:"claude"as the primary example, reducing the priming effect.Steps to Reproduce
Run long and somewhat complex workflows that involve calling multiple LLMs / APIs and eventually this triggers. It is intermittent so a little hard to reproduce reliably.
Expected Behavior
Do not call Claude tools or apps unless they have been explicitly invoked or connected to the agent.
Actual Behavior
Calls Claude apps and tools even if they were never installed, never connected to the agent, and not invoked by the user
Affected Component
Tools (terminal, file ops, web, code execution, etc.)
Messaging Platform (if gateway-related)
No response
Debug Report
The log files created but this command contain snippets of prompts and user information. Uploading them to a public URL and posting them here is insecure and unsound security practice.Operating System
Ubuntu 24.04
Python Version
No response
Hermes Version
No response
Additional Logs / Traceback (optional)
Root Cause Analysis (optional)
No response
Proposed Fix (optional)
No response
Are you willing to submit a PR for this?