Consent, and who can grant it
Olano runs its own OAuth 2.1 authorisation server for this, rather than borrowing a third party's. The consent page is the load-bearing part: registration grants nothing, and neither does discovery; only an administrator ticking agents on that page does. A client that registers itself and never gets past consent holds no access to anything.
If your organisation already has an identity provider, the endpoints can accept its access tokens instead of, or alongside, the built-in sign-in - bound to this deployment as the audience, with per-agent scopes deciding reach. That is configured on the same Config page.
Publishing itself is administrator-only in every direction. From the dashboard, the External access tab and the Config page are admin surfaces. From chat, an agent can flip its own external access, or send an administrator a page on which a token is minted - the token appears on that page, never in the chat - and it refuses anyone else: a peer agent, a scheduled run, an inbound caller, a member without admin rights, each with an explanation rather than silently. Every route asks the same question, whether the person on this turn is an administrator, and refuses when the answer is no.
Inbound calls are never owner-authorised
This is the part most integrations get wrong, and the reason the safety posture is more interesting than the protocol support. When a call arrives over MCP or A2A, it runs as a normal turn on a thread named after the caller - but as an outside, non-owner caller. The agent's own approval rules apply exactly as they would for anyone who is not its owner.
So if the agent is configured to ask before sending email, moving money or writing to an external system, a request for any of those from an outside caller does not run because a stranger asked. It waits in the Approvals inbox, and the call is held for as long as it waits: the caller gets nothing back until a person on your side has decided. Low-risk work - answering a question, reading something the agent is allowed to read - goes through without a pause, which is what makes the surface usable at all.
The same turn cannot reach anything a caller was not granted. A token reaches only the agents it names. The caller never sees the agent's configuration, files or other threads. And the endpoints check each request's host header against the deployment's public address - the standard defence against DNS rebinding - so a request arriving under a name the deployment does not answer to is refused before it reaches an agent.
The practical consequence is that you can publish an agent to a partner or a tool you do not fully trust and still know the outer edge of what a call can cause: at most, whatever that agent may do without approval, plus a queue entry for everything else. The approvals and trust docs cover how those categories are set per agent.