An agent call looks like any other request
When an agent calls your API, the request arrives as ordinary HTTP. Nothing in it reliably tells you:- Who is this? Is it a legitimate agent, or something impersonating one?
- On whose authority does it act? Which user or organization is behind it?
- What should it be allowed to do? Read-only? Move money? Everything?
- Is it still trusted right now? Or was it revoked five minutes ago?
Shared API keys don’t solve it
The usual stopgap is a shared API key. It falls short in ways that matter once agents are involved:- Long-lived. A key works until someone manually rotates it. A leak can go unnoticed for months.
- Over-privileged. Everyone holding the key gets the same broad access. There’s no per-agent scope.
- Hard to revoke. Rotating a key breaks every legitimate caller at once, so teams avoid it.
- Anonymous. You can’t tell which agent made which call, so there’s no accountability and no clean audit.
What’s actually needed
To trust agent traffic, you need the properties a shared key can’t give you:- Every agent has its own identity, not a shared secret.
- Access is short-lived — credentials that expire on their own.
- Permissions are scoped — each agent gets only what it needs.
- Trust is revocable instantly — without breaking everyone else.
- Every verification is recorded — so you can prove what happened.

