The checkpoint
Free
Every tool call is decided before the tool runs, not logged after.
The call goes to the data plane first. Checks run in the same order every time and each reason carries a stable code, so the same call under the same policy always gets the same verdict: allowed, recorded, held or denied. A gate that does not answer counts as a refusal.
Console · Activity → Sessions
Influence is not authority
Free
Content can suggest an action. Only people can authorise one.
Underwrit tracks where each value that carries authority came from: the recipient, the amount, the target. A value that appears only in something the agent read, such as a web page, an inbox or a ticket, is held for a person. Reading outside content marks the session, and the mark stays.
Secrets leaving in free text
Free
A credential or account number the session read, sent out inside a message, is held.
The engine looks inside every text argument for credential shapes (cloud keys, tokens, private keys, passwords in URLs) and for IBANs and wallet addresses. It holds one the session read that the user's own request did not contain, whatever the tool is called. Reasons name the kind, never the value.
It checks shapes we wrote ourselves, measured on our own 20-case set.
Policy you can read
Free
A short list of rules in plain words, not a model's judgement.
Start from one of 45 templates (coding agents, MCP, Kubernetes, Terraform, cloud IAM, refunds, HR, SOC 2, PCI DSS, HIPAA, the EU AI Act and more) and set your limits, payees and quorums. A template never switches enforcement on and never loosens a rule you already wrote. "Ask the gate" shows what a call would get under a draft, writing nothing.
Console · Policies → Templates, Decision rules, Test policy
A first policy by action class
Free
Reads run, writes wait for a person, admin is refused, without listing every tool.
Each tool is filed as Read, Create, Update, Delete or Admin the first time it is seen: your own choice first, then a table of names that mislead, then the verbs in its name. A name with no verb we know counts as a change, never a read, and is shown first as guessed so a person can confirm it. The starter template gives each class allow, approve or deny, and every other check still runs.
Console · Policies → Action classes
Refused tools are never offered
Free
An agent is not shown a tool it can never use, so it does not plan around it.
Before the Underwrit Gateway answers the agent's tool list, it asks the plane which tools are refused whatever the session holds: the deny list, a class the policy refuses, a blocked MCP server or a stopped agent. Those are left out. A tool that would only be held stays listed, because a person may approve it. Each change to what an agent is not shown is recorded, and the call is still decided if the agent names a hidden tool anyway.
Monitoring only hides nothing; it reports what would have been hidden.
Monitoring only, and the what-if
Free
See what enforcing would do before it stops anything.
A new environment starts monitoring only: verdicts are recorded and nothing is blocked, and the console says so on every page where that changes what a verdict means. A hold reads "Would require approval" and a refusal "Would block", and counts keep each decision in the mode it was decided in. Before you switch to enforcing, the what-if replays your recorded traffic as if enforced, and reports how often agents would be stopped, the people-minutes it would ask for, and the tools to narrow first. Asking changes nothing.
A 14-day side-by-side trial
Free
Run Underwrit next to the controls you have, then read what it would have held or blocked.
Name the environments and the trial keeps them monitoring only for 14 days, so nothing is stopped. The report counts what would have required approval and what would have been blocked, how many of those ran anyway, by day, tool, agent and reason, with the riskiest examples to open. It carries no argument values, so it can go to someone who may not see the traffic.
Console · Overview → Side-by-side trial
An example, then your own agent
Free
Follow one payment request from the agent's ask to the record, before connecting anything.
Set up opens with a worked example drawn with the console's own pages over fixed data: the request, the decision and why, a review that compares the recipient with where it came from, and the evidence it leaves. Nothing is sent or recorded. Then setup is one workflow: pick your stack, get one recommended integration, and see its first event arrive. The approval step follows your role, and Python and TypeScript setup end in a connection check you can run.
Console · Overview → Set up
Data leaving, spend and delegation limits
Free
Rules for confidential data, money and chains of agents.
Mark which tools return confidential data. Once a session has read from one, sending anywhere outside your allowlist is held. Spend limits hold the call that would take a session past its budget, and a chain of agents deeper than you allow is held.
Connect where agents already talk
Free
A sidecar, the gateway you already run, or twenty lines of SDK.
The Underwrit Gateway carries MCP and the agent's model traffic, so a proposed tool call is decided before the agent even receives it. Envoy, Istio, Kong, agentgateway, Portkey and LiteLLM can ask Underwrit too, as can the Claude Code hook and the Python and TypeScript clients.
Not an LLM gateway: no provider routing, caching or rate limits.
Console · Settings → Integrations
Decisions stay on your side
Free
The data plane decides next to your agents. The cloud never sees an argument.
The control plane is never in the decision path. Policy flows down to each data plane, and only counts and digests go up. If the link is cut, the data plane keeps deciding from the policy it already has.
Docs your coding assistant can read
Free
The reference an assistant reads before it writes the integration, generated from the code.
llms.txt indexes the site, openapi.json is generated from the plane's own route table with the grant and plan of every route, a read-only MCP server answers routes, reason codes, plans and policy fields from the installed package, and Get started gives a block to paste into AGENTS.md. The MCP server holds no token and changes nothing.
Nothing in this group needs a higher plan than the one you picked.