Is AgentGuard open source?
+
Yes. The full runtime — policy engine, wire-level transports, approval queue, and dashboard — is Apache 2.0, source on GitHub. Self-hosted, single binary. AgentGuard Cloud is a separate hosted layer that never gates the open path.
How do I install AgentGuard?
+
One command. On macOS or Linux: curl -fsSL https://github.com/Caua-ferraz/AgentGuard/releases/latest/download/install.sh | sh. On Windows, in PowerShell: irm https://github.com/Caua-ferraz/AgentGuard/releases/latest/download/install.ps1 | iex. Both install the server, the MCP gateway, and the LLM API proxy after checking them against the release checksums. Then run agentguard setup: a menu that starts AgentGuard at login with a starter policy and an API key, and later updates or uninstalls it. Running the install command again also updates. There is also a multi-arch Docker image, ghcr.io/caua-ferraz/agentguard, and a go install path for Go 1.26+.
What does wire-level enforcement mean?
+
AgentGuard intercepts at the protocol boundary instead of asking the agent to opt in. The MCP gateway sits between any MCP client (Claude Desktop, Cursor, Cline, Continue, Zed) and the real MCP server, policy-checking every tools/call. The LLM API proxy sits in front of the OpenAI and Anthropic APIs — set one base-URL environment variable and tool calls in the response stream are gated before your code ever sees them.
Does AgentGuard work with coding agents like Claude Code and Cursor?
+
Yes. agentguard hook claude-code, cursor, gemini-cli and codex plug into each agent's own hook system and check its shell commands, file reads and writes, web fetches and MCP tool calls against the same policy as every other path (Claude Code since v1.3; Cursor, Gemini CLI and Codex CLI since v1.4). agentguard setup connects and disconnects each agent and can add a starter rule block for it. By default a call the hook cannot check goes ahead with a warning; with --fail-closed it is denied instead. Calls from subagents are linked to the session that started them, and the dashboard replays the session with one lane per agent.
What happens if AgentGuard cannot read a tool call?
+
It refuses it. Gating fails closed: a response the proxy cannot decode into a tool call, a stream that ends mid-tool-call, and a tool input that arrives orphaned from its call are all denied under a stable rule string rather than forwarded unexamined. v1.1 closed five such paths in the LLM API proxy — before it, a stream that ended with a tool call still buffered produced an empty 200, and a body an SDK could execute but Go could not decode was passed through. Refusals are recorded in the audit trail with the DENY the client received, and they are deliberately not subject to --fail-mode allow: that flag governs an unreachable guard, not a healthy guard that cannot see what the client will execute.
Does AgentGuard see my prompts or tool data?
+
No. AgentGuard is self-hosted and makes no outbound calls by default. Prompts, tool arguments, and results stay in your network unless you configure notifications (Slack, webhooks) or opt in to AgentGuard Cloud.
How fast is a policy decision?
+
0.53 ms p99, measured end-to-end on the full HTTP check path with persistence enabled (the v1.0 verification). A CI gate fails the build of every release if p99 crosses the 3 ms budget; v1.2's command-by-command shell checks left the simple-command path at v1.1's speed.
Can AgentGuard run across multiple replicas?
+
Yes, since v1.0, and hardened in v1.1. The zero-config default is single-node SQLite; point --store-dsn at PostgreSQL and give each replica a --node-id to share approval, rate-limit, and cost state across nodes. Reconciliation runs in the background — no synchronous database call is added to the /v1/check hot path, so the sub-3 ms p99 budget is preserved. v1.1 added an advisory lock so replicas no longer race each other through schema migration at boot, and a shared row-lock order that removed cross-node flush deadlocks: a three-node cluster served 5.1M requests across three runs with zero errors and zero deadlocks, where the pre-fix build of the same shape produced 393. Distributed rate limiting is bounded-overshoot by design, and conflicting approval resolutions always converge to DENY.
Is the audit log tamper-proof?
+
Tamper-evident, since v1.4. AgentGuard writes an append-only JSON-Lines audit trail of every decision — agent, scope, command, reasoning — and with --audit-seal it chains every entry to the one before it with an HMAC-SHA256. agentguard audit verify checks the log offline, archives included, and names the first edited, deleted or reordered line by file and line. New installs made with agentguard setup are sealed; an existing server stays unsealed until you turn it on. A chain cannot show that its newest entries were cut off, so AgentGuard publishes the chain head every few minutes: forward those anchors, or the trail itself, to append-only/WORM storage such as S3 Object Lock, a SIEM, or syslog.
Is AgentGuard a sandbox?
+
No. AgentGuard is a policy-enforcement and audit layer, not an OS sandbox — it does not intercept syscalls. Combine it with OS-level isolation (containers, seccomp, egress rules) when your threat model includes a hostile agent that controls its own runtime. As of v1.1 this is written down rather than implied: docs/THREAT_MODEL.md states the actors in decreasing order of trust, the trust boundaries between them, the fail-open versus fail-closed matrix, and the explicit non-goals.