Skip to content

Identity and permissions

What a user can reach through an agent comes down to four variables:

  1. How the request authenticated — as a real user, or as a machine-to-machine OAuth client.
  2. Whether they have access to that specific agent — every agent has its own access settings, independent of Alation role.
  3. The user’s role and grants in Alation — the role drives catalog metadata visibility; per-object grants drive data-product access.
  4. Which warehouse credential runs the query — the warehouse enforces that credential’s native permissions.

The second variable decides whether a user can reach an agent at all; the rest decide what they can do or see once they’re in. See Agents for how per-agent access works.

The authentication mode chosen at the entry point determines which identity and role drive the request. Agent Studio’s MCP server and REST APIs support two OAuth 2.0 modes.

Authentication modeAlso known asUse it whenEffect
User-initiated OAuth (interactive)3-legged OAuth, authorization-code flowA person is present to authorize accessThe request runs as the real user. Their role drives catalog visibility; their grants drive data-product access; their own warehouse credential is used by default. The standard, least-privilege path.
Machine-to-machine OAuth (service account)2-legged OAuth, client-credentials flowAutomated integrations and scheduled flows, with no user presentThe request runs with the role assigned to the OAuth application at creation. Assign that role deliberately — it sets the ceiling for everything the integration can reach.

To set up either mode, follow the client-creation guides: user-initiated or machine-to-machine.

Does a user OAuth token inherit catalog permissions?

Section titled “Does a user OAuth token inherit catalog permissions?”

Yes. With user-initiated OAuth, the request carries the user’s own identity to every Alation service, so it inherits exactly the catalog visibility, data-product access, and per-agent permissions that user has in the Agent Studio web app. Two users with different roles, different agent grants, or different data-product grants get different results from the same agent.

With machine-to-machine OAuth, the request instead inherits the permissions of the role assigned to the OAuth application — not those of any individual user.

Agent Studio uses your existing Alation roles. The table below shows what each role can view and run by default, with no explicit grant — not what it can create, edit, or delete (see Permission matrices for that). See Agents below for how agent access can extend beyond this baseline, and Data-product visibility for how a grant changes the data-products column.

Global roleAgentsData productsCatalog metadata
Server AdminAll (admin bypass)All (admin bypass)All
Catalog AdminAll (admin bypass)Needs a grantBroad
Source AdminNeeds a grantNeeds a grantSource-scoped
ComposerNeeds a grantNeeds a grantComposer-scoped
StewardNeeds a grantNeeds a grantSteward-scoped
ExplorerNeeds a grantNeeds a grantCloud discovery
ViewerNeeds a grantNeeds a grantRead-only

By default you have full control over resources you create; restrictions apply to actions on other people’s resources. The same rules are enforced in the UI, the REST API, and over MCP — the acting role comes from how the caller authenticated.

For Agent Studio permissions, Alation roles group into four tiers:

TierRolesSummary
GlobalServer AdminFull control over all resources, including other users’
AdminCatalog AdminCan see all Agent Studio resources (agents, tools, flows), edit others’ flows
StandardComposer, Steward, Source AdminFull control over own resources, can publish agents as tools
RestrictedViewer, ExplorerCan view and use agents they have access to; cannot create, edit, delete, or clone agents or flows (can create and manage their own custom tools)

Every custom agent has its own access settings, managed from its Agent Access tab. A new agent starts with only its creator as Agent editor; anyone who is already an editor (including Server Admin) can then add other people, groups, or “everyone” at one of three agent roles:

  • Agent viewer — see the agent’s configuration
  • Agent user — also run it: chat, API, MCP tool calls
  • Agent editor — also edit, delete, manage its access, and publish/unpublish or list it

What that agent role actually grants you depends on your Alation tier:

Agent roleServer AdminCatalog AdminStandard rolesViewer / Explorer
Agent editorCan view
Can run
Can edit
Can view
Can run
Can edit
Can view
Can run
Can edit
Can view
Can run
Agent userCan view
Can run
Can edit
Can view
Can run
Can view
Can run
Can view
Can run
Agent viewerCan view
Can run
Can edit
Can view
Can run
Can viewCan view
Not addedCan view
Can run
Can edit
Can view
Can run

In the Agent Access tab’s Agent privacy section, choose Public to grant “everyone” a role at once (the modern equivalent of publishing), or add specific users and groups while keeping the agent private overall. Default agents (SQL Agent, Deep Research, etc.) are always public to everyone and can’t be restricted.

Custom tools have no visibility filtering — all custom tools are visible to all authenticated users.

ActionServer AdminCatalog AdminStandard rolesViewer / Explorer
Create toolYesYesYesYes
Edit own toolYesYesYesYes
Edit others’ toolYesNoNoNo
Delete own toolYesYesYesYes
Delete others’ toolYesNoNoNo
See all toolsYesYesYesYes

Two behaviors differ from agents: Catalog Admin can edit others’ flows, and Viewer/Explorer cannot trigger others’ flows.

ActionServer AdminCatalog AdminStandard rolesViewer / Explorer
Create flowYesYesYesYes
Edit own flowYesYesYesYes
Edit others’ flowYesYesNoNo
Delete own flowYesYesYesYes
Delete others’ flowYesNoNoNo
See all flowsYesYesYesYes
Trigger own flowYesYesYesYes
Trigger others’ flowYesYesNoNo

Ownership is set by who created the resource and does not change when a user’s role changes. A Composer who creates an agent and is later downgraded to Viewer keeps their Agent editor role on that specific agent, but loses the ability to act on it above what Viewer allows — they can still see and run it, but not edit or delete it. For flows, which don’t have per-agent access settings, the same downgrade fully loses edit/delete on owned flows. Role changes take effect immediately on the next request.

Status codeMeaning
404 Not FoundThe resource is invisible to you (for example, another user’s private agent you have no grant on). The existence of the resource is not revealed.
403 ForbiddenYou can see the resource but lack permission for the requested action.

A data product’s visibility is the combination of its privacy mode and the per-object grants on it.

Privacy modeNo grantWith a user or group grantWith an “everyone” grant
PublicVisibleVisibleVisible to all
Private (restricted)Hidden (returns 404) even to non–Server Admin adminsVisiblen/a

Restricted products that you have no grant for return 404 Not Found rather than 403 Forbidden, so the existence of the product is not revealed. Use the access-request flow to obtain a grant.

When an agent queries a warehouse, the warehouse authenticates a stored credential; the user’s Alation token never reaches it. Which principal that credential maps to depends on configuration.

Credential usedWhat the warehouse enforces
User’s own (SSO/OAuth, key pair, or basic)The user’s own warehouse identity → that user’s native row, column, and object security
Shared service accountOne shared principal for all users of the data product → per-user warehouse scoping and attribution are lost. Available only if your administrator has enabled it for the data product.

Resolution order: the user’s own active credential is preferred. A shared service account is used only when it is enabled for the data product and selected — it is an opt-in fallback, not the default.

Supported per-user warehouse mechanisms include Snowflake OAuth/SSO, Snowflake key pair, BigQuery per-user service-account key, basic username/password, and Redshift AssumeRoleWithSAML.

Viewer · user OAuth · own warehouse credential · public product. Sees all public agents and their tools, plus any agent they’ve been explicitly granted access to. Reads catalog metadata read-only. Sees the public data product. The warehouse query runs as the user’s own warehouse identity, so results respect their column and row grants. A clean least-privilege path.

Viewer · user OAuth · restricted product, no grant. Same agents and tools. The restricted product returns 404 — indistinguishable from not existing. The user must request a grant through the access-request flow.

Viewer · granted access to a private agent. Can’t see other users’ private agents, but can chat with and run the one agent they were explicitly granted access to — the same as if it were public — without being able to edit it or see who else has access.

Composer · user OAuth · shared service account · public product. Sees public agents and tools plus agents they’ve been granted access to, and can compose. The warehouse query runs as the shared service account, so the user sees whatever that account can see — not their own warehouse grants — and warehouse audit attributes the query to the service account. Alation still records that this user initiated the query.