Security model and operating boundaries

AgentGuard is an authorization component, not an agent sandbox or a general prompt-injection detector. Its security value comes from placing a policy decision immediately before a protected operation and making the caller stop unless that decision explicitly permits execution.

This guide describes the security contract of the shipped components. It does not replace a deployment-specific threat model, review of your Cedar policies, or testing of every adapter and execution path.

Authorization contract

Cedar evaluates the supplied principal, action, resource, context, and entity set against the loaded policy bundle. No matching permit means deny; an applicable forbid overrides a permit. Authorization is effective only when the adapter:

  1. derives principal and security-sensitive context from trusted systems;
  2. submits the actual target and arguments immediately before execution;
  3. executes only after an explicit allow and successful decision response; and
  4. applies the same rule to retries, delegated calls, and alternate tool paths.

Timeouts, malformed responses, PDP failures, and configured audit failures must not become implicit permission. The Strands guard demonstrates fail-closed HTTP handling. Custom integrations must preserve that behavior. The CLI emits its decision only after required audit persistence succeeds; on an audit error it exits unsuccessfully without writing a decision to stdout. The explicit --skip-audit option disables that guarantee and should only be used when the caller has another durable audit path. The embedded Authorizer does not write audit records automatically.

Trust boundaries and identity

Policy and lifecycle

Generated initialization policies are broad development grants. Replace and review them before deployment; validate policy and schema changes before activation. The standalone file watcher and SIGHUP path build a replacement snapshot before swapping it in. Invalid edits retain the last-known-good snapshot, but a successful reload does not prove that the new policy is safe. Embedded Authorizer instances are immutable; the embedding application owns rebuild and swap behavior.

The standalone PDP enables decision caching by default. Cache keys include the canonical request, supplied Cedar entities, and policy version so changes to identity, context, entity hierarchy, or policy do not reuse another decision. Embedded applications opt into caching themselves and own lifecycle/config integration.

Audit evidence

The standalone server appends configured audit records durably and returns an error when an append fails; readiness is withdrawn when configured audit storage becomes unavailable. Chained logs use an HMAC secret and durable chain identity metadata. Protect the secret and audit volume, retain independently trusted chain-head checkpoints, and test restore procedures. A chain alone does not prove completeness: a secret holder can forge records, and verification without a trusted checkpoint cannot prove that earlier records were not removed. The embedded authorizer does not create audit records unless the embedding application supplies that lifecycle.

agentguard audit verify verifies the native HMAC chain with its chain secret. That verifier is also a signer: anyone given the secret can create valid HMAC-authenticated records. JSONL, CEF, LEEF, and ECS audit export output is for operational/SIEM ingestion; the exported records do not carry the native chain’s cryptographic metadata and cannot be independently verified as AgentGuard-attested evidence. The current product has no public-key-signed export or handoff format. Do not give an external recipient the chain secret when the recipient must be able to verify evidence without gaining signing authority. A separately signed export attestation would be a distinct future capability, not a replacement for the native audit chain or delegation tokens.

Explicit exclusions and limitations

Production use

The supported reference deployment is Docker on Kubernetes, with persistent policy/audit storage and the operator responsibilities documented in the production deployment guide. Review the complete Kubernetes, console, backup, and incident response procedures before rollout. Test the exact adapter, identity source, policy lifecycle, failure modes, and recovery path that your application will use. A successful build or health probe does not substitute for those checks.

For vulnerability reports, follow SECURITY.md and use GitHub’s private vulnerability reporting. Do not publish exploit details in a public issue.