Stop the wrong AI action before it executes.Prove the right one did.
Invariant is an independent kernel between AI agents and the systems they act on. It checks every action against your rules before it runs, and signs a record of every decision that anyone can verify.
Agents now act on real systems. Nothing in the usual stack checks an action before it executes.
Models are probabilistic.
An agent can misread an instruction, follow text injected into its context, or call the right tool with the wrong amount.
Most controls watch rather than stop.
Observability tools record what an agent did after it happened. Guardrail tools mostly filter what a model says, not what it does.
Checks inside the agent share its fate.
A buggy or compromised agent can skip its own checks.
Nobody can prove what happened.
When something goes wrong, it is unclear who is responsible: the model provider, the company that deployed the agent, or the system that executed the action.
A customer asks for a €50 refund. The agent issues €5,000.
Today
AgentPayment provider€5,000 refunded
The refund goes through. The log explains it afterwards.
With Invariant
AgentInvariantPayment provider
A rule capping refunds stops the call before it reaches the payment provider. A signed record shows which rule stopped it.
Intercept, validate, certify. Three steps, in this order, for every action an agent attempts.
1
Intercept
Capture the action and translate it into one standard record, whatever service or protocol it was meant for.
2
Validate
Check it against your rules. If it breaks one, the call is never made, so nothing happens in the world.
3
Certify
Record the decision and sign it, so anyone can later check what was attempted, what was checked, and what happened.
Fig. 2Refund demo
Scripted simulation in your browser. No real agents, services or customers.
Path of the call
Agent
agent_billing calls POST /stripe/v1/refunds with amount=500000
Intercept
Waiting for the call
Validate
Rules not evaluated yet
api.stripe.com
Reachable only through Invariant
Certify
No decision to sign yet
Agent receives
Nothing yet
Kernel log
enforce
# Pick an amount and a mode, or press Run action.
# The default is the €5,000 mistake in enforce mode.
A certificate appears here once the action is decided.
Amounts are in minor units, so 10000 is €100.00. The policy format is still being finalized.
Gradual adoption
Start in observe mode, which only records. Shadow mode evaluates the rules and records what would have been blocked. Enforcement starts when you choose.
Fail safe
In enforce mode, an action that no rule allows is blocked by default.
Explainable
Every decision names the rule that caused it and the policy version in force. Rules decide. Any risk score is informational, because a rule can be audited and a weighted score is hard to defend.
Kill switch
An operator can halt one agent's traffic, or all traffic, on command.
Personal data detection
Parameters bound for external services can be scanned for personal data, using self-hosted open-source detection.
Connecting an agent is one setting.
Change the base URL the agent's SDK uses for a service to Invariant's route for that service, and add a key that identifies the agent. The agent's own credentials for the service pass through unchanged.
This works with most agent frameworks, because most SDKs let you set a base URL. It needs no forged certificates, and no changes to the agent's code beyond configuration.
Fig. 3The agent's refund call, pointed at Invariant
POSThttp://invariant:8080/stripe/v1/refunds
Invariant-Agent-Key
<per-agent key issued by the operator>
Authorization
Bearer <the agent's own Stripe key, relayed unchanged>
Content-Type
application/x-www-form-urlencoded
charge=ch_123&amount=500000
Header names are illustrative.
The path of one action.
The order is the core of the design: capture, decide, forward. Until the forwarding call is made, nothing has happened in the world. Blocking an action simply means never making that call. A check that runs after forwarding can only report damage.
On the allow path, the agent receives exactly what the service sent: same status, same headers, same body. If the service cannot be reached, Invariant reports an honest error and never fakes a success.
1ArriveThe kernel accepts the request.
2RouteThe route name selects an upstream from configuration.
3IdentifyThe agent key resolves which agent is calling.
4FingerprintThe exact bytes received are hashed before anything is parsed.
5NormalizeThe request becomes one validated Action Object.
6RecordThe Action Object is written to the log.
7DecideAllow or block against your rules.
8ForwardOnly if allowed: the real call goes to the real service.
9ReturnThe response comes back unchanged and the outcome is recorded.
One record for every action.
Every action, whatever protocol it arrived on, becomes one standard Action Object before anything else happens. That is what lets you write a rule once and have it apply across every service your agents use.
Each field has a known source, and the record keeps them apart. Inferred fields are marked, because they can be wrong. If no mapping exists, the intent is recorded as unknown rather than guessed. Anything the agent claims about itself is recorded as a claim, never as fact.
Hashes are SHA-256 over the exact bytes received, and over the RFC 8785 canonical JSON form for structured fields, so anyone can reproduce them. MCP tool calls over the network take the same path: the tool name becomes the intent and the tool arguments become the parameters.
Fig. 4Action Object for the €5,000 refund
Read from the request, computed by Invariant, or inferred from configuration.
The hashes are real SHA-256 values of this example. Abridged, as in the draft schema.
A signed record of every decision. Allowed and blocked alike, checkable without trusting whoever issued it.
The Verified Action Certificate (VAC) is meant to work for AI actions the way a certificate works for a website. A recorded block matters to an auditor as much as a recorded approval, because it is the evidence that a control worked.
Each certificate is designed to prove four things:
This exact action, identified by its hash, was seen at this time.
It was judged by this policy version, with this result and these rules.
The record has not been altered, and no record has been removed or reordered since.
Who signed it.
Records are kept in an append-only log structured as a hash tree, in the style Certificate Transparency uses for web certificates (RFC 9162). That allows two proofs: that a given record is in the log, and that the log's history was never rewritten between two points in time. Signatures cover the whole record, so no field can be edited without detection.
We plan to publish the VAC format as an open, versioned specification with test vectors, so any tool can produce or check records.
Fig. 5Check a certificate
Demo. Real SHA-256 and Ed25519, computed in your browser with a demo key.
Checking the example record from Fig. 1.
Verifier
idle
# The verifier runs when this figure is on screen.
Not checked yet
Check the Fig. 1 example with your own tools: the certificate, the Action Object and the demo public key. The action hash is SHA-256 over the RFC 8785 canonical form of the Action Object. The signature is Ed25519 over the canonical form of the certificate without its signature field.
A standalone verifier, separate from the kernel, takes a record, a public key and a signed snapshot of the log, and answers valid or invalid. It is what an auditor runs.
Who holds the signing key decides what a certificate proves to an outsider. It is the most important trust decision in the product, and we will settle it, and document it, before certification ships.
Built to be a credible witness. These hold in every phase of the product.
Capture, decide, forward
Nothing reaches the destination before a decision.
Independence
Invariant runs as its own process, outside the agent. The agent can send it requests; it cannot modify it. That is what makes it a credible witness.
Fidelity
On the allow path, requests and responses pass through unchanged.
One story per action
Every record about an action carries the same ID.
Fail loudly
Bad input is rejected or flagged visibly, never filled in with a guess.
Fail safe once enforcing
Unknown actions are blocked by default.
Self-hostable in the EU
No third-party hosted service in the product's data path. Dependencies are open source and self-hostable.
Honest numbers
Performance figures are published only once measured, with the method and hardware stated.
Its own weaknesses are product defects.
Every agent's credentials for upstream services pass through Invariant, which makes the kernel a valuable target in its own right. Fixed in the design:
Credentials are never logged. Redaction runs in one central place.
No open proxy. Destinations come only from the operator's configuration, never from agent input, which also closes off requests to internal or cloud metadata addresses.
Agent identity comes from a key issued by the operator, not from anything the agent can freely claim.
Upstream TLS certificates are always verified.
Administrative endpoints never share the port agents use.
No automatic retries, ever. A retried payment request can execute twice.
Before any pilot relies on its records.
AgentInvariantService
Direct route from agent to service: closed by network egress rules
Fig. 6The only way out is through the kernel
Bypass resistance
An agent that calls a service directly is never checked. Network egress rules must leave Invariant as the agent's only way out.
Signing key custody
Who holds the signing key decides what a certificate proves to an outsider. It will be settled, and documented, before certification ships.
A full threat model will be published as a standalone document before the first pilot.
What Invariant does not do.
Train or sell models. It works with whatever model you use.
Filter chatbot text or moderate content. It works at the action boundary.
Depend on third-party hosted services in the data path, or run servers outside the EU.
Claim to detect hallucinations in general. It checks actions against rules; anything broader needs a defined ground truth first.
Publish performance numbers it has not measured.
Make decisions nobody can explain. Every block names the rule that caused it.
Cover local stdio MCP servers or inspect responses.
Runs on infrastructure you control. One container image. No part of it depends on a service outside your environment.
TopologyWhere it runsFitsNotes
Local gatewayOn the agent's machineDevelopment and demosSame image
Central gatewayOne service per environment or private networkMost customers, including banksSame image
SidecarBeside each agent in its Kubernetes podKubernetes teamsPlanned
Embedded SDKInside the agent's processNot offered: the agent could disable itExcluded by design
Agent records can contain personal data taken from action parameters. Retention will be configurable per customer. Payloads are stored apart from the hashes the log chains together, so a payload can be deleted on request without breaking verification of the log.
Why now. Three shifts are landing at once.
Agents went from answering to acting.
In 2023 an AI mistake was usually a wrong sentence. Now it can be a wrong transfer. Standard tool protocols such as the Model Context Protocol make it cheap to give an agent many tools at once, so the number of actions each agent can take keeps growing.
Regulation has fixed dates.
The EU AI Act's Digital Omnibus delayed the obligations for high-risk AI systems. It did not shrink the requirements. They include automatic logging of events (Article 12) and a duty on deployers to keep automatically generated logs for at least six months (Article 26).
Digital Omnibus enters into force
Obligations apply to stand-alone high-risk AI, such as credit scoring, hiring and access to essential services
Obligations apply to high-risk AI built into regulated products
We are mapping which obligations Invariant's records support, and make no compliance claims until legal counsel has reviewed that mapping. Sources: Orrick, Freshfields.
Insurers need a unit of evidence.
Without a verifiable record of what an agent did and what was checked, an insurer has little to price agent risk on. A signed record per action is a candidate basis for that. It is a hypothesis we intend to test with insurers, not a result.
For teams putting agents into production. Organizations that deploy agents onto systems they care about, not the companies that train models.
Agent builders
Who
B2B companies selling agents for customer operations, HR or finance
Who buys
CTO or lead architect
What they need
A credible answer when their own enterprise customers ask what stops the agent
How it runs
Close to their stack, with fast setup
Regulated enterprises
Who
Banks, insurers and large companies running agents internally
Who buys
Platform, security and compliance leads together
What they need
An independent control they can show to auditors and regulators
How it runs
Self-hosted inside their network
The person who feels the pain is the same in both: the engineer who has to approve letting an agent touch production. Today that person either blocks the project or accepts a risk they cannot measure.
Talk to us.
We are looking for design partners for the first pilots: teams putting agents onto systems they care about, who need a control they can show to their customers, auditors or regulators.