Skip to main content
A harness is whatever your agent actually runs inside. Failproof AI supports twelve of them, in two classes:
  • Coding CLIs (10) — Claude Code, Codex, GitHub Copilot CLI, Cursor, OpenCode, Pi, Factory Droid, Devin CLI, Antigravity CLI, Goose
  • Chat and assistant gateways (2) — Hermes (Slack, Telegram, cron), OpenClaw (self-hosted assistant)
The same policies and the same session history apply whichever one an agent runs in. One adapter layer maps each harness’s native event names, tool names, and tool-input fields onto 29 canonical events before any policy runs. An agent that runs in none of the twelve is instrumented directly with the Python SDK. That is a different contract, and worth stating plainly: the SDK delivers tracing, sessions, evaluations and audits — it does not enforce policies on its own. Blocking an unsafe action before it executes needs an enforcement hook at your runtime’s tool boundary; contact us and we will map it. Each integration normalizes its native hook event names, tool names, and tool-input fields before policies run. A policy can only act on events the harness exposes; test end-of-turn and instruction behavior on the exact harness and version you deploy.

Enforcement capability

“Block” means the current adapter’s returned verdict is consumed by the named harness. Post-tool blocking may replace the result shown to the model but cannot undo a tool side effect that already happened. Capabilities are version-sensitive. Re-test after upgrading an agent CLI, especially when a policy relies on prompt, stop, permission, or post-tool behavior rather than the common pre-tool gate.

Hermes native plugin

Hermes is integrated through a profile-local native plugin rather than a shell command. Installation links every default and named Hermes profile’s plugins/failproofai to the plugin shipped in the npm package (a copy where a symlink cannot be created), enables it in that profile’s config.yaml, and migrates only legacy FailproofAI shell-hook entries. Because the plugin is linked, npm install -g failproofai@latest updates it with no reinstall. This avoids a process spawn on each hook and lets instruct() reach the model through Hermes’ native blocked-tool result. Legacy shell hooks (installed by 1.0.5 and earlier) do not check Hermes cron jobs: each cron run builds its own hook scope, which the native plugin joins and config.yaml shell hooks do not. failproofai update migrates every profile that already uses FailproofAI to the linked plugin. If the running daemon cannot serve the plugin, update leaves the shell hooks in place and exits non-zero; run failproofai config to update the daemon, then failproofai update again. Cron jobs load the plugin on their next run; restart running gateways and interactive sessions to load it there. The first matching instruction blocks the pending call. The same API request stays blocked; a later model iteration may retry. A persistent, profile-scoped ledger and a per-turn cap prevent an advisory instruction from becoming an unbounded loop. deny() remains a hard block. Run failproofai config --status to detect a disabled, incomplete, duplicated, or newly unconfigured profile, or one still on legacy shell hooks (reported as “Hermes cron jobs are not checked”).

Install capture and policy hooks

  1. Open Administration → Keys and create a key with events:add and policies:pull, named for the machine or environment.
  2. On the target machine, connect the local CLI with the displayed key and install the harness hooks.
  3. Start a new agent session, then confirm its hook and session events under Observe → Events.
  4. Open Observe → policy for the same time window and confirm a policy decision is attributed to the machine.
The connection starts with a machine key. Confirm that it includes both ingestion and policy-delivery permissions before copying its secret.The new API key drawer used to grant event ingestion and policy delivery permissions.After installing the hooks, the Events stream should show new events from the machine and environment you connected.The live Events stream used to confirm a newly installed harness is reporting.Finally, verify that policy decisions are attributed to the same machine. This confirms the harness is reporting policy activity as well as trace events.The Policy page used to verify policy decisions from a newly connected harness.

Add a non-default session path

Extra paths are registered on the machine, not in Cloud. After adding one, open Observe → Sessions, filter to the machine’s environment, and confirm sessions from the new path appear. Open a session and check the agent, harness, and event timestamps before relying on it in an audit.The Sessions list filtered to the environment receiving data from the additional capture path.
Run one new session after installation. Verify both the live event stream and an actual policy decision before expanding the rollout.