Activation required. AI access management must be enabled for your tenant before you can use it. To get started, contact the C1 support team for a walkthrough.
- Snowflake (Data) — run SQL statements and inspect schemas, tables, databases, and warehouses.
- Snowflake (Admin) — manage accounts, databases, and warehouses.
- Snowflake Cortex — Cortex Analyst natural-language questions over governed data, and Cortex Search.
- Snowflake Cortex Inference — the Cortex large language model completion API.
How C1 connects to Snowflake
C1 hosts the Snowflake MCP servers, so your users’ AI clients only ever see MCP tools — they never call Snowflake directly. When an AI client calls one of these tools, C1 makes the matching request to the Snowflake API using the credentials you configure here, then returns the result to the AI client. The credentials you set up below are what C1 uses to call Snowflake on your users’ behalf.Before you begin
- AI access management must be enabled for your tenant. See Enable AI access management.
- You need the ACCOUNTADMIN role in Snowflake, or a role with the privileges to create the objects below. Only ACCOUNTADMIN has the
CREATE INTEGRATIONprivilege by default. See CREATE SECURITY INTEGRATION in the Snowflake documentation. - You need your Snowflake account URL, including the scheme, such as
https://myorg-myaccount.snowflakecomputing.com. Find it in Snowsight under your account details, or see Account identifiers.
Create a Snowflake role for C1
Snowflake OAuth has no per-API or per-resource scopes. There is no read scope or write scope to grant. What a tool can reach is decided entirely by the Snowflake role it runs as, and by what that role has been granted. This is true whichever authentication method you choose, so start here. Create the role and grant it only what your users need. A role needsUSAGE on every container in the path plus the privilege on the object itself — USAGE alone does not grant access to data:
USAGE on a warehouse is required for anything that executes SQL. To widen or narrow what tools can reach later, change the grants on this role rather than the server configuration. See Overview of Access Control.
Choose how users authenticate
Snowflake supports two methods, and the right one depends on a single question: do the people using the AI client have their own Snowflake accounts?- Per-user OAuth. Each person authorizes with their own Snowflake account, so every tool call runs under that user’s Snowflake identity and returns only what their role allows. Snowflake attributes each query to the individual. Choose this when your users are Snowflake users.
- Programmatic access token. You issue one token for a service user, and every tool call reaches Snowflake as that single identity. Choose this when your users don’t have Snowflake accounts, or when you want all AI activity to run through one service identity.
- Per-user OAuth
- Programmatic access token
Create a custom OAuth client in Snowflake, then grant your role to the people who will use the server. Each user authorizes once from their AI client.Your Snowflake OAuth security integration is ready. Keep the client ID and secret for Register the server with OAuth.Repeat for each Snowflake server you want to use. The same security integration and account URL apply to all of them.
Create a Snowflake OAuth security integration
Run this in Snowsight as ACCOUNTADMIN.1
Create the security integration. Set Set the redirect URI to exactly
OAUTH_CLIENT_TYPE to 'CONFIDENTIAL', because C1 holds the client secret in a protected backend.https://accounts.conductor.one/auth/callback. Snowflake requires a TLS-protected redirect URI, and the value must not include query parameters.2
Retrieve the client ID and secret. Pass the integration name in uppercase.The result is a JSON object. Copy the
oauth_client_id and oauth_client_secret values — you enter both in C1. Snowflake also returns oauth_client_secret_2, a second secret you can use to rotate credentials without downtime. See SYSTEM$SHOW_OAUTH_CLIENT_SECRETS.3
Grant the role to everyone who will use the server. A user can only authorize as a role they already hold, so this step is what makes per-user OAuth work.
OAUTH_REFRESH_TOKEN_VALIDITY is measured in seconds. For a custom client, Snowflake accepts 86400 seconds (1 day) through 7776000 seconds (90 days), and defaults to 90 days. When the refresh token expires, users reconnect their Snowflake account.Register the server with OAuth
With your Snowflake role and OAuth security integration ready, register the server and provide your credentials.1
Follow Register an MCP server and select the Snowflake server you want from the catalog, such as Snowflake (Data).
2
Enter your Snowflake account URL, such as
https://myorg-myaccount.snowflakecomputing.com.3
When you configure authentication, choose per-user OAuth and enter the security integration’s client ID and client secret.To pin every session to one Snowflake role, add the
session:role:<ROLE_NAME> scope, replacing <ROLE_NAME> with an uppercase Snowflake role name. Leave Snowflake token type empty — it applies only to programmatic access tokens.4
Save your changes. The first time a user calls a Snowflake tool from their AI client, they’re prompted to connect their Snowflake account.
How OAuth credentials are shared
Each user authorizes with their own Snowflake account, so tool calls run under that user’s Snowflake identity and the role they consented to. Snowflake attributes each query to the individual user, and C1 also attributes each call in the AI tool usage audit log.Manage your OAuth credentials
- Rotate the client secret.
SYSTEM$SHOW_OAUTH_CLIENT_SECRETSreturns two secrets, so you can move C1 to the second one and then rotate the first without interrupting users. - Change what tools can reach. Adjust the grants on
c1_mcp_role. Tools return Snowflake’s own permission error when the role lacks a privilege. - Revoke access for one person. Revoke the role from that user with
REVOKE ROLE c1_mcp_role FROM USER jsmith. - Revoke access for everyone. Disable the integration with
ALTER SECURITY INTEGRATION c1_mcp_oauth SET ENABLED = FALSE. - Scope changes take effect on the next authorization. Existing connections keep the role they were granted until the user reconnects.
Discover and govern tools
After you register the server, C1 runs tool discovery against Snowflake. Discovered tools appear on the server’s Tools tab. Each tool starts as either Pending review or automatically Approved, depending on the option chosen when the server was set up or your tenant’s default tool settings in AI > MCP > Settings. See Require tool approval and Default tool classification. Before anyone can call a Snowflake tool, it must be approved, added to a toolset, and bound to an access profile. Continue to Govern tools and toolsets to set this up.Tool discovery runs even if your credentials are incorrect, so seeing discovered tools doesn’t confirm that authentication is working. You confirm your Snowflake credentials when an approved user successfully calls a Snowflake tool from their AI client.