Authorization for AI agents

Know which agents act for your customers.

Behest verifies every AI agent action against your policy before it reaches your systems.

Decides on structured actions. Never reads prompts.

POST /v1/decisions200 OK
{
  "agent": "billpay-assistant",
  "on_behalf_of": "customer_8f21",
  "action": "transfer.create",
  "amount": 4200,
  "decision": "deny",
  "reason": "exceeds daily transfer limit (2000)"
}

How it works

Your policy decides. Behest enforces it on every action.

01

Define your policy

List the actions agents may take and the limit on each. Anything not listed is denied. You can change the policy at any time.

policy.yamlyaml
# Actions not listed here are denied.
version: 1
actions:
  bill.pay:
    allow: true
  transfer.create:
    allow: true
    max_per_day: 2000
  profile.update:
    allow: false
02

Customer connects an agent

The bank starts the flow and shows the consent screen. The customer sees exactly what the agent may do and approves it. The agent never gets the customer's password.

consent screenhosted by the bank
03

Every action gets a decision

Before the agent acts, it asks Behest. Behest checks the agent, the customer's approval and your policy, then returns allow or deny with a reason. Every decision is logged.

request / responsehttp
# agent and customer fields omitted
POST /v1/decisions
{ "action": "bill.pay", "amount": 142.80 }

200 OK
{ "decision": "allow" }

POST /v1/decisions
{ "action": "profile.update" }

200 OK
{ "decision": "deny", "reason": "profile.update is not allowed by policy" }

Built for both sides

For businesses

  • You own the policy. Behest enforces it and never changes it.
  • Every agent action is checked before it runs, and logged with its reason.
  • Works for people acting on someone's behalf too, like a caregiver or an accountant.

For agent providers

  • Integrate once. Work with every business on Behest.
  • No custom integration for each bank.
  • Know whether an action is allowed, and why, before your agent runs it.

How Behest compares

API keys and OAuth scopes say who may call an API. They don't decide on each action.

API keysOAuth scopesBehest
partial: identifies the app holding the credential, not the specific agent.

Questions

Do you read the agent’s prompts or conversations?

No. Behest only sees structured actions, like transfer.create with an amount. It never sees prompts, chats or model output.

Who decides what an agent is allowed to do?

The business, through its policy. Behest enforces that policy and does not change it.

What happens when an action is denied?

The agent gets a deny with a reason, so it can tell the customer or stop. The business gets a log entry for the decision.

Does this work for humans acting on someone’s behalf?

Yes. A caregiver, assistant or accountant goes through the same connect flow and the same policy checks.

Put your policy between agents and your customers' accounts.