Identity, governance, and audit for every Claude Code tool call.
When active, every tool call Claude makes — Bash, Read, Write, Edit, WebFetch, and all MCP tools — is checked against your policy and logged: on your machine by default, or to a shared ACP workspace once you connect a team. Set policies to control what's allowed; get full audit visibility.
ACP doesn't replace your tools or change how you use Claude. It's the governance layer that sits transparently in front of everything.
Docs: install guide + troubleshooting · which Claude Code tools to deny out of the box · the Tool Surface Index — every tool one Claude Code session declares, grouped by blast radius
# Free, on-device, no account — governs Claude Code locally:
curl -sf https://agenticcontrolplane.com/install.sh | bash -s -- --localThis installs the plugin plus the on-device engine and activates the governance hook. Every Claude Code tool call is checked against ~/.acp/policy.json and logged to ~/.acp/audit.jsonl — no account, nothing leaves your machine. Restart Claude Code and you're governed.
Want team policy across everyone's agents, verified identity, and the cost X-ray? Run it without --local and the installer opens your browser to provision a shared workspace instead:
curl -sf https://agenticcontrolplane.com/install.sh | bashAlready have the plugin? Run /acp-connect inside Claude Code to connect.
The plugin registers a PreToolUse hook that fires before every tool call:
- Hook sends tool name + input to the decision engine — on-device (
~/.acp/decide.mjs) in--localmode, or ACP's governance API when connected to a workspace - The engine evaluates your policy: immutable safety floor, scope enforcement, ABAC policies, rate limits, budget caps, content scanning (the full 6-layer pipeline in cloud mode; the safety floor + your
policy.jsonon-device) - Returns
allowordeny - All calls are logged — to
~/.acp/audit.jsonlon-device, or your workspace's audit trail when connected
The hook fails open on network errors — ACP outages never block Claude Code.
When ACP denies a call, the plugin tells you why with a distinct prefix so you can tell network problems apart from real policy denials at a glance:
[ACP] Denied by policy: <reason>— a workspace policy intentionally blocked the call[ACP] Gateway error — tool blocked for safety (HTTP X)— ACP responded with an error (e.g. auth, server crash)[ACP] Gateway unreachable — tool blocked for safety— ACP didn't respond at all (timeout, network)
When your workspace has scoped tokens enabled (policies.scopedTokensEnabled: true in your tenant config), the plugin recognizes calls to known vendors — currently gh, curl api.github.com, and git push https://github.com/… — and:
- Requests a short-lived ACP-issued scoped token bound to your stored OAuth credential for that vendor
- Injects the token into the call as
GH_TOKEN=…so the existing CLI keeps working with no setup change - Your local PAT is never read or used by the agent — ACP brokers the credential and audits every issuance + use
If you haven't connected the vendor yet, the plugin emits a deny with a clickable connect URL inline in the IDE so you can complete OAuth in your browser without leaving Claude Code.
If your workspace doesn't have scoped tokens enabled, the plugin behaves exactly as v0.4.0 did — your existing local credentials continue to work unchanged.
Other vendors (Slack, Salesforce, Notion, etc.) ship in subsequent releases. Track progress at gatewaystack-connect#114.
- Audit logs — every tool call with identity, arguments, timestamps, decisions
- Policy enforcement — allow/deny by tool name, argument patterns, ABAC rules
- Rate limits & budgets — cap tool calls per minute, per month, or by cost
- Content scanning — detect PII in tool inputs, optionally block or redact
- Team management — multiple members, roles, workspace-level controls
After setup, your dashboard is at:
- Logs:
https://cloud.agenticcontrolplane.com/logs - Policies:
https://cloud.agenticcontrolplane.com/policies - Limits:
https://cloud.agenticcontrolplane.com/limits
# Pause governance (keep credentials)
mv ~/.acp/credentials ~/.acp/credentials.paused
# Resume
mv ~/.acp/credentials.paused ~/.acp/credentials
# Fully remove
rm -rf ~/.acp
claude plugin disable agentic-control-plane