FAQ · the agent control plane
The questions teams actually ask.
Straight answers about what Arc does, what it proves, and what it costs — before you wrap your first action. New to the vocabulary? Start with the glossary.
What Arc is, in plain terms
What are AI agent guardrails?
Runtime controls that constrain what an autonomous AI agent is allowed to do before it acts, not just what it's prompted to do — enforcing spend limits, requiring human approval for risky actions, blocking destructive or irreversible operations, and recording every decision. Arc is a guardrail for the action itself, sitting in front of the tool calls that move money or mutate production.
Is Arc a model, an LLM gateway, or something else?
Something else. Arc doesn't run inference and you don't route model traffic through it. It's an action control plane: it governs the consequential tool calls an agent makes — refunds, deletes, sends, infra changes — with allow / ask / block policy, human approval, signed execution, and a hash-chained audit. Your prompts and completions stay wherever they already live.
What does allow / ask / block actually mean?
They're the three decisions Arc returns for every agent action. Allow lets it proceed and be signed. Ask pauses it for a human to approve or reject. Block stops it outright. Arc is default-deny, so an action with no matching grant is blocked — unconfigured agents fail closed, never open.
What is a 'protected agent' and a 'guarded action'?
A protected agent is an autonomous agent whose actions route through Arc before touching production. A guarded action is a single high-risk operation it attempts — a refund, cancel, delete, or send — that Arc governs end to end. They're Arc's two units of metering: you pay for the agents you put behind the guardrail and the actions they take, never for human seats.
Stopping a runaway bill
How is a spend cap different from the cost tracking my observability tool already has?
Cost tracking tells you about a runaway bill after it happens; a spend cap stops one before it does. Arc enforces a cumulative limit over a rolling or calendar window, estimates each action's cost, reserves it under a lock, and commits on execution. On breach it can block the action or require approval. It's the difference between a smoke detector and a sprinkler.
Doesn't my AI gateway's budget limit already cover this?
A gateway caps aggregate dollars at the model call; it's blind to which action runs. An agent can stay under budget and still issue a wrong refund or delete a record. Arc enforces cumulative spend too, but adds the thing a gateway can't: per-action allow / ask / block, human approval, and a signed execution your app verifies. Most teams run both.
Will the spend cap hold up under concurrency?
Yes — that's the point of doing it in Arc rather than by hand. The cap is enforced atomically on the hot path of every guarded action, with the reservation taken under a lock. Two agent loops can't both read the remaining budget, both pass, and both spend. A naive read-then-act budget check in your own code races exactly there.
Approving and blocking the risky ones
Does Arc add latency to every action?
Low-risk allow actions pass a policy and budget check and proceed — negligible overhead. Blocked actions return immediately, before reaching your app. The only real wait is on ask actions, and that wait is the feature: by design they pause for a human to approve. You decide which actions are worth that pause.
What happens when an action is set to 'ask' and nobody responds?
Nothing executes. Arc returns pending_approval with an approval id and holds; the action runs only after a human approves in the console, over the API, or from your chat tooling. Approvals are single-use and state-checked, tied to that one execution and its input hash, so an approval can't be replayed for a different request. Pending approvals expire rather than silently firing.
Can I block an action entirely instead of just gating it?
Yes. Mark an action's default decision as block and the agent simply cannot invoke it — Arc returns blocked before anything reaches your app, and the attempt is audited. Anything you never granted is blocked by default too. When you want a controlled exception, set it to ask so a named human approves rather than the action being silently impossible.
Proving what happened
What does 'signed, app-verified execution' actually mean?
Arc never calls your systems directly. After policy and approval pass, its worker issues an ES256-signed (JWS) request carrying a body hash, an expiry, and a one-time nonce, delivered to your /arc/execute endpoint. The @geostack/arc SDK verifies the signature, timestamp, nonce, and exact body hash before your business logic runs. Your app refuses anything Arc didn't sign.
Can an agent bypass Arc by calling my API directly?
Not if you verify, which the SDK does for you. Your execute endpoint runs an action only after checking Arc's ES256 signature, the nonce, the expiry, and a hash of the exact request body. A request that didn't come through Arc — or a replayed or tampered one — fails verification and never executes. The signature binds 'this exact action was approved' to 'this is what ran.'
What makes the audit log tamper-evident, and does it leak data?
Each entry stores the previous entry's hash alongside its own — computed as sha256(prev_hash + canonical_json) — so any later edit or deletion breaks the chain and is detectable. Arc writes one event per decision, approval, and execution. It's redacted: sensitive fields are stripped while numeric cost is preserved, so spend stays accountable without exposing payloads.
Does Arc replace MCP?
No. MCP decides which tools an agent can call; Arc decides whether a specific call should run right now. Arc's MCP adapter exposes your guarded actions as MCP tools and routes every call through policy, approval, signed execution, and audit — a drop-in transport layer, no app code change. The adapter never executes business logic, self-approves, or bypasses policy.
Getting started, and what it costs
Is Arc hosted?
Yes — Arc is a hosted control plane. Sign up for a free workspace (no credit card), create an app in the console, and point your agents at it. You integrate with the @geostack/arc SDK and verify signed execution in your own app. The free Developer tier includes the full allow / ask / block policy, signed execution, and audit. You meter on protected agents and guarded actions, not seats.
What does Arc cost?
Free to start — sign up for a hosted workspace, no credit card. The free Developer tier is capped at 10k guarded actions/month, 1 agent, and 7-day audit retention so it can't be abused. Paid plans are Team at $99/mo, Business at $499/mo, then Enterprise. Pricing meters protected agents and guarded actions — never per-seat.
How long does it take to wrap my first action?
An afternoon. Install @geostack/arc, declare your actions with arc.defineActions (a risk level and a default allow / ask / block decision each), call agent.invoke (via ArcAgentClient) where the agent acts, and mount arc.handleAction at /arc/execute to verify and run them. The quickstart walks through one guarded action end to end in about five minutes.
Do I have to put all my agent's actions behind Arc at once?
No — and you shouldn't. Start with the one action that scares you most: the refund, the delete, the infra change. Wrap that single guarded action, leave everything else exactly as it is, and expand from there. Arc is designed to sit in front of the few consequential actions, not to intermediate every call your agent makes.
Didn't find it?
The deep questions — threat model, signing internals, comparisons — live in the docs and the compare page.
Start with the one action that scares you most.
Free Developer tier — sign up for a hosted workspace, no credit card. Metered on protected agents and guarded actions — never seats.
Last updated 2026-06-04