Share
AI Agent Governance

How Does Your Agent Know What It Can Do?

Zero Trust verifies who is asking, then hands off to enforcement. That division of labour worked for people, because a person knows their own job. An AI agent does not — and nobody is telling it.

The industry is asking what happens after an AI agent is verified. It is the wrong question. An agent that has to be caught was never told what it could do in the first place. Tool discovery is an agent literally asking what its job is, and MCP already supports answering it dynamically -- yet almost every implementation returns a fixed manifest instead of what the agent is actually entitled to do.

Martin Gee 5 min read

In response to Identity in the Age of AI: Rethinking Zero Trust's First Pillar, Cloud Security Alliance · May 2026.

authority-governance ai-agent-identity zero-trust mcp agent-authorization
Martin Gee

"An agent that has to be caught was never told. The interesting question is not what it does next. It is how it knows what it can do next."

— Martin Gee, Founder & CEO, IdentityRM

Zero Trust was right.

“Never trust, always verify” is one of the few security ideas of the last decade that survived contact with reality. NIST SP 800-207 gave it a spec, enterprises rebuilt around it, and the implicit-trust perimeter is gone in most places that matter. None of what follows is an argument against any of that.

But Zero Trust answers one question — who is asking? — and then hands off. Verification establishes identity; everything downstream is enforcement. That division of labour worked for two decades because of an assumption nobody had to write down.

People know their own jobs.

Sarah in Finance does not need a system to tell her she is not supposed to approve her own expenses, or provision a user in a division she has never worked in. She knows the shape of her role. The system verifies she is Sarah, gives her a console, and relies on her understanding of her own authority to keep her inside it. Enforcement exists for the exceptions — for mistakes and for bad actors — not for the ordinary case.

An AI agent has none of that. It has no sense of its own job. It will attempt anything it believes is available to it, with complete confidence and no instinct that something might be beyond its remit.

Here is what it looks like when something does tell it. This is what one governed agent run returns — the persona that ran, the assertions that had to clear, the surface its authority resolved to, and a fingerprint tying the run back to the authority behind it. The rest of this piece is why each line is there.

AUTHORITY PROOF VERIFIED

Auditor @ East Coast

node 3 · visible scope: East Coast, New York Office

9/9
checks cleared
  • Authenticated Actor
  • MCP Access Gate
  • Delegated Authority
  • Scope Boundary
  • Bounded Universe
  • Governed Tool Execution
  • AI Decision & Event Contract
  • Evidence Returned
  • Side-Effect Boundary
Derived surface computed from the authority model at the moment the agent asked
24
tools visible
10
categories
0
mutations
sha256:24a160ed9de994ac…

the same fingerprint the agent received when it asked what it could do

The question everyone is now asking

The Cloud Security Alliance has been making the point directly. Agentic systems, it argues, are a distinct category that breaks several legacy assumptions — not static service accounts running fixed scripts, but autonomous entities that move between systems, reason about tasks, and take actions on behalf of users. Zero Trust’s first pillar was not designed for that. Correct, and overdue.

The question being asked alongside it is: what happens after the agent is verified?

It is a reasonable question, and it has produced a reasonable answer. Put something in the path. Intercept the call, evaluate it against policy, and block it if it falls outside the boundary. Log the attempt. That is roughly where the market is, and it is better than nothing by a wide margin.

It is the wrong question

An agent that has to be caught was never told.

Interception is a correction applied to an actor operating on bad information. It assumes the agent will try things it should not, because it has no way to know better — and then builds machinery to catch it in the act. That is a reasonable design if you accept the premise. The premise is what deserves examining.

The more useful question is:

How does the agent know what it can do next?

Agents literally ask this

This is not a metaphor. It is a protocol step.

When an agent connects to a tool server, the first thing it does is ask what tools exist. Tool discovery is an agent asking, in as many words, what is my job here? Everything it subsequently attempts is downstream of the answer it receives.

So the answer matters enormously — and the protocol is not what holds it back. MCP already supports a surface that changes: a server can declare its tool list dynamic, emit a notification when it changes, and the client re-fetches. The mechanism for answering this question properly is in the spec.

What almost every implementation does instead is answer with a fixed manifest. Somebody decided at design time what this agent should be able to do, wrote it down, and every instance of that agent — acting for anyone, in any context, at any time — receives the same list.

That list is a guess about the agent’s job. A good guess, sometimes a very good one. But it is not the agent’s authority, because authority is not a property of the agent. It is a property of the situation: who the agent is acting for, where in the organisation that puts it, and what that position actually permits right now.

Guesses also err generous, because nobody wants to be the person who under-scoped the agent. The tendency is not unique to tool manifests: according to the Cloud Security Alliance, roughly 99% of non-human identities hold permissions far beyond what their actual workloads require.

The gap between the guess and the truth is the entire problem. Interception exists to police that gap. It is a mechanism for catching an agent acting on information we gave it.

What changes when the answer is computed

Suppose the answer is not configured but derived — the tool surface computed from the authority model at the moment the agent asks.

Now the list the agent receives is not a guess. It is the actual set of things this actor, in this position, is entitled to do, right now. Which means the agent cannot attempt something out of scope, because it was never told such a thing exists. Out of scope is not denied. It is not there.

Nothing to enumerate. Nothing to probe. Nothing to block, because nothing out of bounds was ever offered.

This is a different primitive from interception, and it is worth naming once: containment. Not a stronger guard, but the removal of the gap the guard was compensating for.

Two consequences are worth sitting with. The first is that denial leaks information — an agent that gets refused has learned that something exists on the other side of the refusal, and an agent that can enumerate refusals can map a boundary it was never meant to see. Absence leaks nothing.

The second is subtler and matters more in practice. An agent working from a truthful surface does not need correcting. It is not being restrained; it is being informed. Most of the behaviour we currently call “agent misbehaviour” is an agent doing exactly what it was told it could do.

The uncomfortable part

If this is right, then a good deal of what is being built for agent security right now is compensating machinery — necessary only because the agent was handed a list nobody derived.

That is not an argument for removing the guardrails. Defence in depth is real and interception has a permanent place. It is an argument that the interesting work is one layer earlier, at the moment the agent asks what it can do, and that almost nobody is working there.

If you want the mechanics — how a tool surface gets derived, and what separates a governed one from a wrapper — the MCP maturity ladder covers it. For where this sits relative to the identity perimeter, Okta got the category right and this is the half that comes after. And if you want the architecture-level version of the argument, including why delegation chains do not solve it, that one is here.

The short version: stop asking what your agent will do. Ask how it knows.


IdentityRM computes an agent’s tool surface from a governed authority model at the moment it asks — so what an agent can see is what it is actually entitled to do. See how the platform works.


Share
All Posts

More from the Blog

AI Agent Governance

Then I Told It Who to Ask Instead

The practical follow-on to I Told Claude Code to Stop Asking Me. We modeled git push as a permission, gave a delegated owner the authority to grant it, and put a hook in Claude Code that asks IdentityRM before the shell runs. Refused with a reason, fixed by someone whose authority to fix it was recorded, allowed with no prompt, refused again from a different position. Seven real frames, the server records for each, and a plain statement of what a courtesy hook does not enforce.

Read more →
AI Agent Governance

I Told Claude Code to Stop Asking Me

Coding agents like Claude Code and Codex stop and ask for permission constantly. That prompt is not a guardian - it is what an agent does when there is no authority model to consult, so the question gets routed to the only authority it can find: you. Allow once is an ungoverned grant. Allow always is a standing entitlement with no receipt. Here is what happens when the tools the agent calls carry their own authority model: the prompts disappear for governed operations and every governed act leaves a record instead of a click. And here is the catch I walked into: on the client side, that is still a moved click.

Read more →
AI Agent Governance

Am I Authorized to Grant Roles at Seattle?

Rogue AI agents are all the rage - a gym-booking assistant that bumped a stranger off a waitlist, frontier-lab agents that built a covert message board and escaped their sandbox. The industry frames this as alignment. Look closer: every rogue agent improvised because nothing in the stack could answer the question that mattered. In IdentityRM, asking whether you are authorized to grant roles at Seattle is a product action with a computed, evidenced answer - for humans and agents alike.

Read more →