Skip to main content

hermes-acp

ACP governance plugin for Hermes Agent.

Routes every tool call through the Agentic Control Plane so you get:

  • Audit — every tool call (terminal, file, web, browser, custom skills) is logged with tenant + session attribution.
  • Veto — server-side policy can deny or require approval on individual tool calls before they execute.

Companion to the Claude Code ACP plugin. Same backend contract, same dashboard, same policies — just wired into Hermes's Python plugin system instead of Claude Code's shell hooks.

Install

pip install hermes-acp
hermes plugins enable acp
hermes-acp login

hermes-acp login opens the dashboard, exchanges your one-time auth token for a workspace API key, and writes it to ~/.acp/credentials.

Configure

For non-interactive setups (CI, devcontainers), skip the login step and provide the key directly:

export ACP_BEARER_TOKEN="gsk_yourslug_..."
# or
mkdir -p ~/.acp && echo "gsk_yourslug_..." > ~/.acp/credentials

The env var wins over the file.

CLI

hermes-acp login       # browser-based authentication + workspace provisioning
hermes-acp status      # check creds + gateway reachability
hermes-acp logout      # remove ~/.acp/credentials

Optional — point at a non-default backend:

export ACP_API_BASE="https://api.agenticcontrolplane.com"  # default

How it works

The plugin registers two Hermes hooks:

Hook Behavior
pre_tool_call POSTs to /govern/tool-use. Server returns allow / deny / ask. deny and ask block the tool call with a system message; allow passes through.
post_tool_call POSTs to /govern/tool-output for observation. Cannot block (Hermes limitation), but server-side audit, redaction logging, and DLP scanning all apply.

Fail-open

Network errors, timeouts (>4s), or malformed responses fail open — the tool call proceeds and a warning is written to stderr. ACP outages should never block your work. Server-side per-tenant failMode: closed can flip this in a future release.

"Ask" semantic

Hermes doesn't support inline approval prompts the way Claude Code does, so an ACP ask decision is rendered as a block with a message instructing the user to approve in the ACP dashboard and retry. If you want a richer approval UX in Hermes, this is the spot to extend.

Client identity

Sends X-GS-Client: hermes-plugin/<version> so the dashboard, policy router, and audit log can distinguish Hermes traffic from Claude Code / Cursor / Codex / etc.

Troubleshooting

No audit events appearing. Check that ACP_BEARER_TOKEN is set in the shell that launched hermes, not just your .zshrc after the fact. Hermes inherits the env at process start.

Every tool call blocked. Look at stderr. A [ACP] gateway unreachable warning means network failure (fail-open kicked in but something else blocked you — maybe a policy from another hook). A [ACP] Denied by policy: … means the server returned deny; check the policy in the ACP dashboard.

Hooks not firing at all. Confirm the plugin is enabled: hermes plugins list. If acp isn't in the enabled list, run hermes plugins enable acp.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hermes_acp-0.1.0.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hermes_acp-0.1.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file hermes_acp-0.1.0.tar.gz.

File metadata

  • Download URL: hermes_acp-0.1.0.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for hermes_acp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9d47a2ccb6cf03b256279753d7b1104de1b06a0f28e908ce965a0c07d8cef65f
MD5 07bf7c6024e554164176a04666e56f84
BLAKE2b-256 eb54c80434c89375633e2cc0ccc6456800190056cff3e3e12cc8574b04ac029c

See more details on using hashes here.

File details

Details for the file hermes_acp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: hermes_acp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for hermes_acp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e49a284d894d5b9696ee4a4506a369df6a12296f44337ac2544668637f2d1fd7
MD5 1469b6e6dcc0dd4017016dffe4438fab
BLAKE2b-256 3f125a665079b6375074add23e6333c65e8d93636a0ce309903a2ffca08fca83

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page