< BACK_TO_INDEX
[AI AUTHORIZATION]2026.07.20 // 7 MIN READ

Authorization Beyond Tool Calling

Tool calling is often presented as the capability that unlocks enterprise AI.

In practice, calling a tool is usually the easy part.

The harder problem is deciding whether that capability should be exercised at all.

Should the agent act on behalf of a user?

Should it establish its own workload identity?

Which organizational resources should it be allowed to access?

Who is accountable for the action?

Those questions quickly become more complicated than invoking an LLM or wiring together APIs.

As organizations adopt agentic systems, a familiar problem begins to emerge.

Every interaction between an agent and an organizational resource is an authorization decision.

That changes the architecture.

Instead of starting with tools and integrations, start with authorization.

Tool calling is a capability. Authorization determines whether that capability can be exercised.

Everything else builds on that.

The authorization decision evaluates identity context, capability, and resource boundaries before execution

An authorization gateway, not a tool gateway

People often describe these systems as tool gateways or MCP gateways.

Those descriptions are useful, but they do not capture the gateway's real responsibility.

Agents do not need access to tools.

They need controlled access to organizational resources.

Those resources might include:

Every interaction with one of those resources asks the same question.

Can this agent perform this action against this resource?

An authorization gateway is not there to make APIs easier to call.

It is there to make authorization easier to govern.

Tool Manifests are authorization contracts

Tool Manifests are more than inventories of available tools.

They are authorization contracts between an agent and the organization.

They define the capabilities an agent is trusted to exercise and the boundaries within which those capabilities operate.

A Tool Manifest can define:

A GitHub Tool Manifest might allow pull request creation against specific repositories while explicitly preventing merges.

A Google Workspace Tool Manifest might allow draft creation in Gmail, read access to approved Drive folders, and access to approved users' primary calendars without allowing email delivery.

A BigQuery Tool Manifest might allow read-only queries against approved datasets while limiting access to resources tagged with approved labels, business classifications, or ownership metadata.

Thinking about Tool Manifests this way shifts the conversation away from "what tools are available?" toward "what business capabilities has this agent been authorized to perform?"

Agent Profiles provide context

Once Tool Manifests become authorization contracts, another question naturally follows.

How does the gateway know which manifests apply to a particular agent?

That is where Agent Profiles come in.

An Agent Profile is not responsible for authorization.

It provides the context needed to make authorization decisions.

If you have worked with an identity provider like Okta, Microsoft Entra ID, or Google Workspace, the concept should feel familiar.

User profiles do not define authorization.

They describe the identity.

The same idea applies to agents.

An Agent Profile might look like this:

agent:
  id: release-analysis-agent

  owner:
    team: security-engineering

  business_process:
    release-management

  environment:
    production

  risk_tier:
    medium

  lifecycle:
    active

  assigned_manifests:
    - github-release
    - deployment-metrics

The profile is intentionally a blank slate.

Every organization will describe its agents differently.

Some may include business units, cost centres, application ownership, geographic regions, or data classifications.

Others may add metadata that reflects governance, business processes, compliance requirements, or internal policy.

The schema is not important.

What matters is that the Agent Profile becomes the authoritative description of the agent, just as an identity provider becomes the authoritative description of a human identity.

Those attributes provide the business context the authorization layer uses when evaluating policy.

Agent Profiles, Tool Manifests, Resource Boundaries, and Identity Strategy feed the authorization layer

Identity Strategy

Identity is another area where it is easy to become overly focused on implementation details.

We initially thought about credentials.

Then we thought about multiple identities.

The better abstraction is Identity Strategy.

An agent has a stable enterprise identity.

What changes is how that identity is presented to downstream resources.

Resource Example Identity Strategies
GitHub GitHub App, Fine-Grained PAT, OAuth App
Google Workspace Delegated OAuth, Service Account
BigQuery Service Account Impersonation
Internal Services SPIFFE Workload Identity
Legacy SaaS Managed API Credential

The credential itself is simply the proof required to execute the chosen strategy.

Thinking this way separates authentication from authorization and makes it easier to evolve integrations without changing policy.

Resource boundaries matter more than permissions

Permissions answer what an identity can do.

Resource boundaries answer where, to whom, and under what conditions those permissions apply.

For GitHub, a boundary might define:

For Google Workspace:

For BigQuery:

Every boundary describes four dimensions.

Those attributes do not have to identify individual resources.

They can describe ownership, environment, business domain, data classification, labels, tags, or any other metadata meaningful to your organization.

As environments grow, attributes become far more scalable than maintaining long lists of individual resources.

Capability-oriented tooling

Tool design can simplify authorization just as much as policy.

Instead of exposing broad operations such as:

gmail.execute()

github.execute()

expose capabilities that already communicate their intended security boundary.

gmail.create_draft_as_user()

gmail.create_draft_shared_mailbox()

calendar.read_primary_calendar()

github.create_issue_security_repository()

github.create_pull_request_release_repository()

These are not simply aliases.

Each capability communicates its intended purpose, expected Identity Strategy, and resource boundary before authorization is even evaluated.

Humans can understand what an agent is capable of simply by reading the available capabilities.

The authorization layer has less ambiguity when evaluating requests.

Capability-oriented tooling also discourages exposing broad APIs that require increasingly complex runtime authorization logic.

The Tool Manifest still defines the authorization contract.

The authorization layer still evaluates every request.

The capability simply provides a better vocabulary for expressing what an agent is allowed to do.

Audit belongs in the authorization layer

Many enterprise integrations execute using shared identities.

A GitHub App.

A service account.

A workload identity.

A shared mailbox.

To the downstream platform, every request may appear to come from exactly the same identity.

The downstream platform records what executed.

It often cannot explain why it was allowed to execute.

The authorization layer already has that context.

It knows:

The downstream platform sees the execution identity.

The authorization layer sees the business context behind the request.

Recording that information creates an authorization trail that complements downstream audit logs.

Together they provide a complete picture of an agent's activity.

The authorization gateway creates both the execution identity and the authorization record

Putting it together

Authorization architecture from originating principal to organizational resources

Each layer has a single responsibility.

The Agent Profile describes the agent.

The Tool Manifest defines what that agent is allowed to do.

The Authorization Gateway evaluates policy, records attribution, and captures the authorization trail.

The Identity Strategy determines how requests authenticate.

The Credential Service provides the proof required to execute them.

Each organizational resource continues enforcing its own controls, while the authorization layer provides consistent policy evaluation before execution.

Closing thoughts

Tool calling is an important capability.

It is just one small part of building trustworthy enterprise agents.

The harder challenge is deciding what those agents are allowed to do, how those decisions are governed, and how they can be explained after the fact.

This is not intended to prescribe a single architecture.

Every organization will make different implementation choices.

The important shift is recognizing that authorization deserves to be treated as its own architectural layer.

Once every interaction between an agent and an organizational resource is viewed as an authorization decision, many of the design choices around identity, capabilities, credentials, audit, and policy begin to fall naturally into place.