Run agent-chaperone alongside ECC

ECC, Everything Claude Code, installs a large set of Claude Code hooks, and two of the security pieces it ships are AgentShield and GateGuard. agent-chaperone installs next to it and screens something neither of those looks at: what each tool call is about to do, and what each result says, as they happen.

The two run side by side and stay independent. Nothing in ECC changes, ECC does not know agent-chaperone is there, and this is not an integration its maintainers have reviewed. It is two plugins whose hooks both fire.

What each one checks #

None of the three substitutes for another. A configuration can pass a scan and a call can follow a thorough investigation, and the call can still be the one that posts a key to a stranger, because the instruction to do it arrived in a page the agent fetched a minute earlier.

Install it next to ECC #

From inside a Claude Code session:

/plugin marketplace add agent-chaperone/agent-chaperone
/plugin install agent-chaperone@agent-chaperone

That registers three hooks: one before shell commands, file edits and web fetches, and two after shell commands, file reads and searches, and web fetches, including ones that failed. It brings the agent-chaperone skill as well, which tells the agent what to do when a call is held.

If agent-chaperone is installed globally the plugin uses that. Otherwise the first screened call installs the matching version into the plugin's own data directory, which took 13 seconds when I measured it, and every call after that runs it directly in about a seventh of a second. Uninstalling the plugin removes all of it.

Registering the hooks by hand works too, and the Claude Code guide has the configuration and what each entry is for.

How the two sets of hooks run together #

Claude Code runs every hook whose matcher fits a call, from every plugin and every settings file, in parallel. On shell commands, edits and writes, ECC's hooks and agent-chaperone's both fire.

Claude Code's documentation does not say how it combines an ask from one hook with a deny from another. So do not build anything that depends on an order between ECC's hooks and these.

Start by reading, not blocking #

Probabilistic screens get some calls wrong, and the only honest way to choose where the lines go is on your own traffic. Leave it in shadow for a while, then:

agent-chaperone report

That leads with what enforcement would have stopped and did not. If a line looks wrong, move its threshold with agent-chaperone replay --policy candidate.yaml, which decides again over what was already judged and shows which way each decision moves. When the log stops surprising you, set mode: enforce in the policy file.

The model screens need a TYPESAFE_API_KEY in the environment Claude Code starts hooks in. Without one the deterministic rules still run, which is the allow and deny lists, the secret patterns, dangerous shell forms and hidden text, and every judgment records that no model was asked.

What this does not cover #

The full hook reference, including how a withheld result is matched to a tool's own output shape, is in the hooks reference.