Documentation
ACP sits in front of the tool calls your agents’ hooks can see. Each one is recorded and checked against the safety floor from day one, checked against your own rules once you turn on enforce, and its model calls priced at API list rates (from the session transcript on Claude Code, through the launcher on the other harnesses). Start with the agent you already use; the API and SDK path is below for agents you build yourself.
Running a coding agent?
Claude Code, Codex, Cursor, Copilot, OpenCode, Hermes, and the rest: one command installs a hook, and the same three steps take you from installed to protected.
Protected in 3 steps
Out of the box, ACP records every tool call your agents make. A short safety floor applies in every mode: catastrophic commands (rm -rf on your home or system folders, disk wipes) are always blocked, and force-push, destructive SQL, piping a download into a shell, and deleting outside your project are held for your approval. Your own rules (ask first / never) start applying when you turn on enforce. No rule can loosen the floor; a workspace owner or admin can switch it off on the Policies page (you were asked at install). With --local the always-blocked list is narrower: rm -rf on your home or root, disk wipes, fork bombs.
-
1
Install. One command, then approve this machine in the browser.
curl -fsSL https://agenticcontrolplane.com/install.sh | bash -
2
Turn on your rules. Run
/acp-enforcein your agent. The starter rules start applying:rmand keychain reads are held for your approval (you approve on the console Approvals page or from the approval email); everything else keeps running and is recorded. Add your own with/acp-ask Bash.curl,/acp-deny Bash.git.push,/acp-allow Bash.npm, or on the Policies page. With--localthere is no mode switch: the rules in~/.acp/policy.jsonapply from the first call, and the starter file asks beforerm,curl,git push,chmodandchown. -
3
See it work. Ask your agent to do something risky, for example
git push --forceon a scratch repo. ACP holds the call for your approval; the call and your answer land in the audit log (/acp-whyfor the last hold, the console Activity page, or~/.acp/audit.jsonlwith--local).
Copy-paste rules for the things people are most afraid of (force-push, prod database, rm -rf, a secret in a curl, overnight runs, a cost cap): Rules that stop the scary things.
--local.rm -rf, a secret in a curl, overnight runs, a cost cap.Also: How a call is decided, Approvals, Team setup, and Every way to set up ACP for the situations in between (an existing gateway, a harness with no hooks).
Building your own agents?
The same rules and audit log, from code. A hook is the enforced path for a harness; for an agent you write, the wrapper or the API is.
acp_check is advisory: the agent chooses to call it. Hooks are the enforced path.