Snowflake Cortex: CORTEX_MODELS_ALLOWLIST no longer controls model access (Pending)

Attention

This behavior change is in the 2026_07 bundle.

For the current status of the bundle, refer to Bundle history.

Access control based on the CORTEX_MODELS_ALLOWLIST account parameter is removed. Model role-based access control (RBAC) becomes the only supported model access control mechanism for Snowflake AI, and model RBAC is also enforced for embedding models.

This change is the enforcement phase of the CORTEX_MODELS_ALLOWLIST deprecation, which was announced as an unbundled behavior change.

Before the change:

Snowflake checked model RBAC first, then fell back to the CORTEX_MODELS_ALLOWLIST parameter. Access was allowed if either the calling role had access to the model object in SNOWFLAKE.MODELS or the model was covered by the allowlist. Model RBAC wasn’t enforced for embedding models.

After the change:

When the 2026_07 behavior change bundle is enabled in your account, CORTEX_MODELS_ALLOWLIST isn’t consulted during authorization. Access is determined exclusively by model RBAC: the calling role must have access to the model through the corresponding model application role. Model RBAC is also enforced for embedding models, including AI_EMBED, AI_MULTI_EMBED, AI_SIMILARITY, EMBED_TEXT_768, and EMBED_TEXT_1024.

Model RBAC provides the same access outcomes the allowlist provided. An allowlist of 'All' is equivalent to granting CORTEX-MODEL-ROLE-ALL to the PUBLIC role, and an allowlist of specific models is equivalent to granting those model application roles to PUBLIC. Accounts that grant CORTEX-MODEL-ROLE-ALL also gain access to models Snowflake releases later, while accounts that grant specific model roles must grant a new role for each new model.

What you need to do

Before the bundle is enabled by default, confirm that the roles running your Cortex workloads have the model application roles they need.

  1. Check your current allowlist value. If it’s already 'None', your account uses model RBAC exclusively and no action is required.

    SHOW PARAMETERS LIKE 'CORTEX_MODELS_ALLOWLIST' IN ACCOUNT;
    
  2. Review the model application roles granted to the PUBLIC role.

    SHOW GRANTS TO ROLE PUBLIC;
    
  3. Grant the equivalent model application roles for any models your workloads use, then set the allowlist to 'None'. For the full procedure, see Migrate from the allowlist to RBAC.

    ALTER ACCOUNT SET CORTEX_MODELS_ALLOWLIST = 'None';
    

Test in a non-production account first. Test with a role other than ACCOUNTADMIN, because ACCOUNTADMIN always has access to all models.

This change is being made to standardize model access on a single, consistent authorization mechanism, so that access follows the same role-based framework used elsewhere in Snowflake.

Note

Managed reader accounts without the SNOWFLAKE.MODELS schema continue to use CORTEX_MODELS_ALLOWLIST during this migration.

Ref: 2378