Applied AI Governance — Orchestration & Tool Governance
01 / 16

Navigation

→ / SpaceNext slide
←Previous slide
HomeFirst slide
EndLast slide
SwipeTouch navigation
Click anywhere or press Esc to close

Orchestration & Tool Governance

Model Serving, MCP servers, AI Gateway, and Databricks Apps — four orchestration pillars, one governance model underneath.

Builds on Identity & Auth Foundations and Authorization by Resource Type — this deck is about what happens when agents and tools compose.

Agenda

What this deck covers

1. The four pillars of AI orchestration and where governance is enforced in each

2. Agent Bricks supervisor/sub-agent identity propagation, and the three agent auth methods

3. MCP's three server types and UC Connections as the outbound governance primitive

4. Unity AI Gateway as the single control surface for LLMs, MCPs, and Model Serving

5. Token federation for automation and external callers

6. Configuration steps, common gotchas, and a production checklist

7. Building new agents in 2026: Genie Agents, custom agents on Databricks Apps, and the Supervisor API deprecation

The issue

Composing agents and tools is easy to build. Keeping governance intact across every hop is not.

A supervisor calls sub-agents, sub-agents call tools, tools call external services — each hop is a place where the caller's identity can be silently lost, or where an ungoverned credential can creep in.
4
orchestration pillars, each with its own governance boundary
20
max sub-agents in a single supervisor chain

What this deck answers

How identity propagates through Model Serving, MCP, and Databricks Apps; where AI Gateway fits (and where it doesn't); and the concrete steps to keep every hop auditable.

What — The orchestration stack

Four pillars, each solving a different problem. Unity Catalog governs every layer.

UserHuman or external application
↓
IdentityIdP + token path: OBO / M2M / Federation
↓
Databricks AppsManaged hosting, automatic OAuth
↓
Model Serving / Agent BricksSupervisor endpoint
↓
ToolsGenie Agents · Vector Search · UC Functions · MCP servers

AI Gateway layers onto the LLM and MCP traffic within this stack; UC Connections govern the exit to external services. Same Unity Catalog enforcement regardless of which pillar the request passes through.

What — Agent Bricks

A supervisor coordinates up to 20 sub-agents. OBO propagates the human's identity through all of them.

UserBrowser
→
Databricks AppX-Forwarded-Access-Token
→
SupervisorModel Serving
→
Sub-agentsuser context forwarded
→
Resourcescurrent_user() = human

OBO mode

Supervisor auto-forwards the user's token to all sub-agents. current_user() = human email from the supervisor down to the deepest tool call — row filters, Genie Agents RLS, and function auth all see the actual human.

Runtime limits & scope requirements

  • Each sub-agent's tools need their own UC grants — grants don't cascade from the supervisor
  • Genie Agents sub-agents need both genie and dashboards.genie scopes, or a 403
What — Agent auth on Model Serving

Three authentication methods for agents. Mix and match within the same agent.

Automatic Passthrough

Simplest — Databricks manages everything.

HowDeclare resource dependencies at log time
IdentitySystem-generated SP, least privilege
Best forNo per-user access needed

On-Behalf-Of (OBO)

Agent runs as the calling user.

HowInitialize in predict() with user credentials
Identitycurrent_user() = human email
Best forPer-user access control + audit

Manual Authentication

Explicit credentials, maximum flexibility.

HowSP OAuth (recommended) via UC secret scopes
IdentityService principal
Best forExternal resources, prompt registry

Key constraint: OBO's calling identity is only known at query time — resources must be initialized inside predict(), not __init__().

What — MCP on Databricks

Three MCP server types, all governed by Unity Catalog.

Managed

Databricks-hosted

Pre-built connectors: Genie Agents, Vector Search, UC Functions, Databricks SQL. No code, no infra. Auth: automatic, OBO, or PAT.

Custom

Databricks Apps

Your code, deployed as a Databricks App. Full control over tools and auth — OBO, M2M, or mixed. Auth is OAuth only, PAT not used.

External

Via MCP Services or UC Connections

MCP Services (recommended): Seven built-in services system.ai.slack, system.ai.github, system.ai.atlassian, system.ai.google_drive, system.ai.google_calendar, system.ai.gmail, system.ai.microsoft_365 — zero setup, grant EXECUTE. Governed through Unity AI Gateway with tool filtering, service policies (allow, deny, or require approval), rate limits, and networking controls. OAuth tokens calling MCP Services require the ai-gateway scope. Legacy approach: UC HTTP Connections for custom external MCP servers.

Tool selection priority on name collision: Managed (highest trust) → Custom (explicit business logic) → External (third-party). Configure explicit tool routing in the supervisor when ambiguity exists.

What — UC Connections

Application code never calls an external service directly. UC proxies the call.

Two-layer defense in depth

Network (SNP)Workspace-level FQDN allowlist — anything not listed is unreachable
Credential (UC)USE CONNECTION grant controls which SP can authenticate, enforced before any network traffic
-- Grant access
GRANT USE CONNECTION
  ON CONNECTION github_api
  TO `sp-appeals`;

-- Instant revocation, no redeploy
REVOKE USE CONNECTION
  ON CONNECTION github_api
  FROM `sp-billing`;

Four auth methods, only two give per-user identity externally: Bearer and OAuth M2M share one identity with the external service; OAuth U2M Per User and Managed OAuth give each user their own token on both sides.

What — Traffic patterns

Four traffic patterns, four different governance layers. Not every hop needs a gateway.

PatternCaller → targetGovernance layer
1Agent to Databricks services (Genie Agents, FM API, UC)No gateway. Direct OBO — UC governs at the data plane
2Any caller to an LLM endpointDatabricks AI Gateway. Rate limits, guardrails, usage tracking, fallback routing
3Agent to external services (GitHub, Slack, etc.)UC Connections + SNP. Proxy model, REVOKE = instant removal
4External clients to DatabricksExternal API Gateway. Auth translation, per-tenant rate limiting, versioning

Why pattern 1 skips the gateway: re-issuing a token at a gateway makes current_user() resolve to the gateway service, not the human — row filters then fire as the gateway. UC enforcement happens at the data plane; a gateway can observe HTTP traffic but not which rows were filtered.

What — Unity AI Gateway

One gateway governs LLMs, MCPs, and Model Serving endpoints under the same control surface.

Pillar 1

LLMs

Agents, LLM endpoints, and coding agents (Cursor, Codex CLI, Claude Code) route through gateway endpoints with native multi-provider APIs.

Pillar 2

MCPs

External, custom, and Databricks-managed MCP servers governed under the same permissions, audit, and access controls.

Pillar 3

Model Serving Endpoints

Gateway features layered onto existing endpoints — safety, PII, and keyword guardrails, plus the established system-table observability surface.

One control point: permissions · rate limits · guardrails · usage tracking · inference logging · cost attribution · fallback routing · traffic splitting — applied consistently across every pillar. Coding-agent calls and deployed-agent calls land in the same system.ai_gateway.usage table.

Why it matters

Orchestration governance is where cost, risk, and compliance actually get decided.

Cost control

Rate limits per user, group, or SP cap a runaway agent before it drives an unexpected model bill. system.ai_gateway.usage joined with system.billing.usage attributes spend by team, app, or project.

Risk reduction

REVOKE USE CONNECTION is a runtime kill switch — no redeploy needed to cut off a compromised or misbehaving tool. Guardrails catch PII and unsafe content before it reaches a model or a caller.

Compliance & velocity

One audit trail across coding agents, deployed agents, and tool calls means one place to answer “who called what, and what did it return” — instead of stitching together per-server logs.

Before this unification, MCP governance was ad hoc: UC handled data access, but request-level audit and rate limiting were per-server. Now LLM calls and tool invocations share one permissions model and one configuration surface.

How — Token federation

Configuring federation for automation and external callers: four steps, no secrets stored.

The exchange flow

1App authenticates with your IdP, receives a JWT
2POST the JWT to /oidc/v1/token with grant_type=urn:ietf:params:oauth:grant-type:token-exchange
3Databricks validates the JWT against the federation policy, returns a scoped OAuth token
4Use the Databricks token to call APIs: Authorization: Bearer <token>

Two federation types

FeatureAccount FederationWIF
Applies toUsers & SPsWorkload → SP
SCIM requiredYesNo
Issuer limit5Unlimited
Refresh tokensYes (U2M)No

AWS IAM and GitHub Actions OIDC: WIF only. Token TTL copies the IdP's exp claim verbatim — plan refresh in client code.

How — Scopes & gotchas

Least-privilege scopes, plus the failures that don't throw a clear error.

SymptomRoot causeFix
Genie Agents returns wrong rows, no erroris_member() in a row filterReplace with current_user() — is_member() evaluates the execution service under Genie Agents/Agent Bricks OBO
User identity lost in App A → App BTwo-proxy strippingUse X-Forwarded-Email (proxy-signed, survives hops) + M2M SQL with an email-based filter
Sub-agent 403 on a Genie Agent toolScope not granted on the sub-agent's own SPGrant UC permissions and OAuth scopes per sub-agent — nothing cascades from the supervisor
External tool stops working post-deployConnection ownership tied to the old SPSet connection ownership to the app SP; re-grant USE CONNECTION after every redeploy

Scope ceiling: a token without serving, genie + dashboards.genie, or mcp.* cannot call that resource, even if UC grants would otherwise allow it. Request only what the agent needs.

How — Production checklist

Before shipping an orchestrated agent, verify these.

✓
Agent SP per capability boundary
Not shared — each agent gets its own SP with scoped permissions
✓
UC grants: least privilege, explicit
GRANT only what's needed, REVOKE everything else
✓
Row filters: current_user() only
Never is_member() in Genie Agents or Agent Bricks OBO paths
✓
USE CONNECTION grants per tool
Every external call governed by GRANT/REVOKE on a connection object
✓
Token federation for CI/CD
No Databricks secrets stored in pipeline config
✓
AI Gateway rate limits + guardrails
QPM/TPM per user or SP; content filtering on input and output
✓
system.access.audit + MLflow tracing enabled
Joinable on request_id for end-to-end agent lineage
✓
Tokens never in logs or error payloads
Bearer tokens excluded from all log output
What's changing — Build direction

Building new orchestrated agents: two supported surfaces, one deprecating API.

Low-code

Genie Agents

Natural-language “talk to your data” for business users and supported low-code orchestration over structured data, document search, UC functions, and MCP tools. Governed by Unity Catalog, with OBO carrying the human identity through every sub-agent.

Code-based

Custom agents on Databricks Apps

The recommended target for new code-based and multi-agent systems, built with LangGraph, the OpenAI Agents SDK, or a custom loop. Git packaging, app or on-behalf-of auth, MCP tools, Unity Gateway model access, and MLflow tracing and evaluation. You own the agent loop, state, retries, and tool authorization.

Tools

MCP stays the tool layer

Managed, custom, and external MCP servers remain the preferred way to expose governed tools, and existing Unity Catalog function tools are not deprecated. MLflow Tracing gives one execution trace across model and tool calls.

Supervisor API (Beta) is deprecated — end of life September 30, 2026

Migrate Supervisor API workloads to a custom agent loop on Databricks Apps. The replacement hands you the agent loop, state, retries, and deployment lifecycle, so plan an application change rather than a URL swap. The managed Supervisor Agent and Genie Agents orchestration paths shown earlier are separate products and are unaffected by this change.

Source: Databricks docs — Build a custom agent using the Supervisor API (Beta) (deprecated), docs.databricks.com/aws/en/agents/custom-agents/supervisor-api-app

ORCHESTRATION IS GOVERNANCE.
Every agent action traces to an identity. Every tool call goes through UC. Every external call goes through a connection.
Databricks Applied AI Governance Series · Orchestration & Tool Governance