What is Veto?
Veto is a runtime authorization layer that sits between your AI agents and the tools they can call. Before any tool executes, Veto evaluates the request against policies you define and returns a decision: allow, deny, or escalate — in under 10ms.The problem Veto solves
AI agents are gaining access to powerful tools: file systems, APIs, databases, external services. Protocols like MCP and OAuth can prove who an agent is, but identity is not authorization. Knowing that a request comes from your support bot doesn’t tell you whether it should be allowed to send emails, delete records, or write to arbitrary file paths. Veto fills that gap. Every tool call is evaluated against explicit rules before it runs — so your agents can only do what you’ve said they’re allowed to do.How it works
- You register an agent with Veto and get back a unique agent ID.
- You define one or more policies for that agent — rules that specify which tools it can call, what parameter values are permitted, and when access is allowed.
- Before your code executes a tool, it calls
veto.authorize()with the agent ID, tool name, and parameters. - Veto evaluates the request against your policies and returns a result. If the result is not allowed, you block execution.
- Every decision — allowed or denied — is written to the audit log.
Key concepts
Agents
An agent is a registered AI system — your support bot, coding assistant, or autonomous workflow. Each agent has a unique ID and a status that controls whether it can act at all.
Policies
Policies are collections of rules that govern what an agent can do. Rules cover tool allowlists and denylists, parameter constraints, rate limits, and time-based windows.
Authorization
The authorization check is the core of Veto. Pass an agent ID, tool name, and parameters — get back
allowed, denied, or escalated with a human-readable reason.Audit trail
Every authorization decision is logged with the agent, tool, parameters, outcome, matched policy, and latency. Query the audit log to understand what your agents are doing.
Default-deny model
Veto uses a default-deny model. If no policy explicitly allows a tool call, it is blocked. There is no implicit access — you always opt in to what an agent can do, never opt out. This means a newly registered agent with no policies cannot call any tools. Access must be granted explicitly through a policy.This is intentional. The default-deny model ensures that gaps in your policy coverage result in blocked actions, not unintended access.
Next steps
Quick start
Install the SDK, create an agent, and run your first authorization check.
Authentication
Create an API key and learn how to authenticate your requests.
Concepts: agents
Learn how agents are registered and managed.
API overview
Explore the REST API endpoints directly.