Aegis by IDv4
Platform

One control plane between your agents and everything they touch.

Every model call, tool call, and agent-to-agent hop gets an identity check, a deterministic policy decision, optional human approval, and a tamper-evident record.

  • Identity
  • Policy
  • Human oversight
  • Evidence
tsk_4f9c1a · support refund decision trace
14:02:07.318 wl_support-agent Model callllm:chat.completions · gpt-class Allow
14:02:07.412 wl_support-agent Refund $1,450mcp:tools/call · billing.refund held — above the $500 delegated limit Hold
14:02:41.907 usr_d.reyes Human approvalapprove tsk_4f9c1a Allow
14:02:42.088 wl_support-agent Hand-off to ledger-agenta2a:tasks/send · out of task scope Deny
One task, four decisions: a model call allowed, a refund held for a person, the approval recorded, and an out-of-scope hand-off denied.
01 — Gateways

Three gateways, each fluent in its own protocol.

They cover every way an agent reaches the outside world: an OpenAI-compatible endpoint for model calls, an MCP gateway with OAuth for tool calls, and A2A v1.0 in both directions for agent-to-agent work. Because each one parses what it carries, tool names, JSON-RPC methods, and A2A task states arrive as first-class policy attributes. A rule can turn on tools/call → billing.refund and the amount inside its arguments.

  • Agents never hold upstream credentials. The keys to your models, tools, and downstream systems live at the gateway and are injected per call, scoped to the decision that authorized that call. The agent carries only its own identity.
  • One uniform policy pipeline. Identity, decision, approval, and record run identically whichever protocol the traffic arrives on — no second rulebook for tools, no third for agents.
  • No traffic bypasses it. Network egress rules make the gateways the only route out, so an unreviewed call never reaches a provider.
  • Nothing to rewrite. Point your existing SDK at the endpoint and keep whatever framework the team picked.
three protocols · one pipeline enforcement plane
Three gateway lanes converging on one policy pipeline LLM, MCP, and A2A traffic each enter their own protocol-native gateway and converge on a single policy pipeline that identifies the caller, decides with Cedar, holds for approval when required, and records the decision. Only then does traffic reach models, tools, and other agents. A dashed path attempting to skip the pipeline is stopped by network egress rules. LLM chat · embeddings MCP tools/call · resources A2A tasks/send · task states ONE POLICY PIPELINE 1  Identify org → workload → user → task 2  Decide Cedar · default-deny 3  Hold human approval, when required 4  Record HMAC-chained decision record secrets injected per call, never held by the agent Models any provider, any cloud Tools & APIs MCP servers, internal APIs Agents inbound and outbound A2A BLOCKED BY EGRESS RULES — NO PATH AROUND THE PIPELINE
LLM, MCP, and A2A traffic converging on a single policy pipeline — with no route around it.
02 — Policy

Semantic Policies: write the rule, ship the enforcement.

Write the rule the way you would say it to a new hire. Aegis compiles it to Cedar — deterministic, default-deny, formally verifiable — and enforces the compiled artifact on every call your agents make out. What runs at request time is the rule you read and approved, in the form you approved it, and you can read it again a year later.

The rule, in plain language

“Support agents may issue a refund of up to $500 for a customer who granted them that authority. Anything larger needs a human.”

refund-limit.cedar refund-limit@v7 · default-deny
permit (
  principal in Aegis::Workload::"support-agents",
  action == Aegis::Action::"mcp:tools/call",
  resource == Aegis::Tool::"billing.refund"
)
when {
  context.arguments.amount_usd <= 500 &&
  principal.on_behalf_of.consent.scopes.contains("billing.refund")
};

// above 500 → the approval rule holds the task for a person
// anything not permitted here is denied

Reproducible by construction. request 0x4c1e → ALLOW · refund-limit@v7 replayed → ALLOW · refund-limit@v7

Anonymize
Personal data is detected and replaced inline before the call leaves your boundary. The agent still gets a usable prompt; the provider never sees the original.
Block
The call stops at the gateway with a denial, and the record names the rule and the category of data that stopped it.
Flag
The call proceeds, marked. Reviewers get a queryable trail of exactly where sensitive data moved, and under which policy.
03 — Identity

Every agent gets an identity — and it carries all the way to the task.

Aegis includes an identity provider built for non-human actors: OAuth 2.1 client credentials and short-lived JWTs issued per workload, with rotation and revocation you control. Identity here is a chain: organization, workload, the person who delegated, the task. Every decision is evaluated against the whole of it.

  • Delegated user authority. An agent can act with a subset of a person’s authority, granted through explicit consent, bounded by scope, and named on every call it makes with that authority.
  • Verified mDL attributes as policy conditions. A rule can require that a verified credential presented for this task carries specific attributes (issuing authority, credential validity, an age assertion) before the action is permitted.
  • Task binding. Because the task is part of the identity, authority granted for one piece of work does not leak into the next one.
  • Alongside what you already run. Your identity provider stays the source of truth for people. Aegis governs what agents do on top of it.
identity chain · org → workload → user → task evaluated per call
Organization

org_northwind

The tenant boundary. Policies, records, and approvals never cross it.

Workload

wl_support-agent

OAuth 2.1 client credentials and a short-lived JWT — rotatable, revocable, yours to govern.

User — delegated authority

usr_c.alvarez · consent: billing.refund

Acting on behalf of a person, inside the scopes that person granted. Verified mDL attributes are available as conditions:

  • mdl.issuing_authority = CA DMV
  • mdl.credential_status = valid
  • mdl.age_over_21 = true
Task

tsk_4f9c1a · state: working

The unit of work. Authority is scoped to it, and every record is chained to it.

every decision carries the full chain — no anonymous agent traffic
The identity chain carried on every decision: organization, workload, delegated user authority with verified mDL attributes, and the task itself.
04 — Human oversight

Policy names the actions that need a person.

You write it into the rule instead of threading approval logic through every agent your team builds. When a rule calls for review, Aegis returns a hold: the triggering task pauses at the gateway while the rest of the fleet keeps working.

  • The reviewer gets one card. Who is asking, under which policy, and exactly what the agent proposes to do, down to the arguments it intends to send.
  • The agent never gets an error. The call simply hasn’t returned yet — no error path, no retry storm, no lost context. On approval the task resumes precisely where it paused.
  • Scoped to the task. The other work in flight never learns about it.
  • The approval is evidence. Approver identity, timestamp, and decision land on the same chain as the action they authorized.
tsk_4f9c1a · refund-limit@v7 Hold
Requested by wl_support-agent · on behalf of usr_c.alvarez
Action mcp:tools/call → billing.refund
{ "invoice": "INV-88214", "amount_usd": 1450.00 }
Held because Amount exceeds the $500 delegated limit — refund-limit.cedar
Task state input-required · waiting 34s · the agent’s call has not returned
on approval, the task resumes and the approver is written to the chain
  • tsk_4f9c1arefund · INV-88214held for review
  • tsk_51b7e2invoice reconciliationworking
  • tsk_51b8c0vendor lookup · A2Aworking
One card, one task. tsk_51b7e2 and tsk_51b8c0 keep running while tsk_4f9c1a waits.
05 — Evidence

Evidence auditors verify, not logs they’re asked to trust.

Every decision writes a record, and every record is HMAC-chained to the one before it. Remove a record or edit a field and the chain stops verifying — the gap is detectable by an auditor, without taking anyone’s word for it.

  • The full identity chain travels with the record. Organization, workload, the person whose authority was delegated, and the task, plus the policy id and version that produced the decision.
  • Complete task call-graphs, zero agent instrumentation. Aegis reconstructs the whole tree at the gateway, from the first model call to the last hand-off. Nothing gets installed in the agent.
  • Auditor-queryable. Query by task, by workload, or by the person whose authority was used, and every row comes back with a verifiable chain behind it.
  • Stopped actions are on the record. A refused call gets a record of its own, naming the rule that refused it.
dec_01JQ7X2B9NC4KD1F · prev 0x71bd0e9a chain verified
orgnorthwind workloadsupport-agent userc.alvarez task4f9c1a
14:02:07.412 wl_support-agent Refund $1,450mcp:tools/call · billing.refund policy refund-limit@v7 · approval required Hold
14:02:41.907 usr_d.reyes Approved the refundapprover identity written to the chain Allow
hmac 0x9f3a71c4…b207 · links to 0x71bd0e9a…4ce1 · chain intact
tsk_4f9c1a · call graph reconstructed at the gateway
tsk_4f9c1a  support refund       completed
├─ llm:chat.completions           ALLOW      312 ms
├─ mcp:tools/call  invoice.get    ALLOW       88 ms
├─ mcp:tools/call  billing.refund HOLD
│   └─ approved by usr_d.reyes    ALLOW      34.5 s
└─ a2a:tasks/send  ledger-agent   DENY    out of scope
no SDK, no code changes — assembled entirely from gateway traffic
A chained decision record and the reconstructed call graph for the same task — assembled without a line of agent code.
Deployment posture

Runs where your agents run — inside your boundary.

Aegis is self-hosted. It deploys into your VPC alongside the workloads it governs, and the material that makes governance meaningful (your policies, your decision records, your approval history) never has to leave.

Your VPC
01

Self-hosted by design

Deploy into your own cloud account and your own network. Governance sits where the agents already are.

02

Your data stays yours

Policies, decision records, and approval data live inside your boundary, under your retention rules and your access controls.

03

Control plane, enforcement plane

Authoring, compilation, and administration are separated from the enforcement path, so decisions stay fast and stay available.

04

The only path out

Network egress rules make the gateways the sole route to models, tools, and other agents. Coverage becomes a property of the network.

Next step

Bring one workflow you would not let an agent run unwatched.

We will write the rule with you in plain language, compile it, and put it in front of real traffic — so you can see the decision, the hold, and the record it leaves behind.