One command. Any agent. Unbypassable.
MCP is how agents use tools. ACP is how humans control agents.
AI agents can send emails, run shell commands, transfer money, and deploy to production โ but there's no universal way to ensure a human said "yes" first.
Every agent framework has its own half-baked "human-in-the-loop" that the agent can bypass. Give an agent shell access, and it has the same power as root.
An agent with exec() can run anything. Install packages, delete files, exfiltrate data. No guardrails.
API keys in environment variables? The agent can read them. And send them anywhere.
Stripe keys, bank APIs, payment webhooks. One bad tool call could cost real money.
Framework-level "approval" lives in the same process as the agent. It can be skipped programmatically.
ACP sits between your agent and the real world. Every sensitive action requires your explicit approval. The agent literally cannot bypass it.
ACP creates a sandboxed environment. Your agent runs inside it with no direct access to credentials or network.
When the agent tries something sensitive โ shell commands, API calls, file writes โ you get a Telegram notification with full context.
One tap on your phone. The agent waits for your decision. No approval = no execution. It's that simple.
ACP works at the infrastructure level. It doesn't care what framework, language, or model you use.
| Feature | LangGraph | CrewAI | MCP | ACP |
|---|---|---|---|---|
| Works with any agent | โ | โ | โ | โ |
| Agent can bypass | Yes | Yes | N/A | No |
| Network enforced | โ | โ | โ | โ |
| Needs code changes | Yes | Yes | Yes | No |
| Credential isolation | โ | โ | โ | โ |
From zero-config to production hardening in three levels.
30 seconds
Interactive terminal prompts. Zero configuration. Just wrap your command and approve in the terminal.
2 minutes
Connect Telegram. Approve actions from your phone. One environment variable to set up.
10 minutes
Full network isolation. Credential vault. Audit trail. Policy engine. Enterprise-ready.
$ npm install -g @acp/cli$ acp init --channel=telegram
Credentials go in the vault โ the agent never sees them directly.
$ acp secret set OPENAI_API_KEY=sk-...
Wrap any command. ACP handles the rest.
$ acp run -- python my_agent.py
Copy this prompt and paste it into any AI agent with shell access. The agent will install ACP on itself. One paste, and you're in control.
Define exactly what your agent can and can't do. Allow reads, gate shell access, block financial actions โ all in a simple YAML config.
default_action: ask rules: - match: { category: read } action: allow - match: { tool: exec } action: ask level: high - match: { category: financial } action: deny
ACP evaluates rules top-to-bottom. The first matching rule wins. Unmatched actions fall through to the default.
Combine with level: high to require extra confirmation for dangerous operations.