Snowflake CLI release notes for 2026¶
This article contains the release notes for the Snowflake CLI, including the following when applicable:
- Behavior changes
- New features
- Customer-facing bug fixes
See Snowflake CLI for documentation.
Version 3.17.0 (May 11, 2026)¶
New features and updates¶
- The
snow appcommand group now supports both Snowflake Native Apps (applicationandapplication packageentities) and Snowflake Apps Deploy (snowflake-appentities). The entity type insnowflake.ymldetermines which flow is used, so shared subcommands such asbundle,deploy,validate,open,events, andteardownautomatically select the correct behavior. The experimental hiddensnow __appcommand group and theENABLE_SNOWFLAKE_APPSfeature flag have been removed. - Added the
snow app setupcommand for initializing asnowflake.ymlfile for a Snowflake Apps Deploy project. - Added the
snow connection generate-workload-identity-tokencommand to generate a workload identity token for the current environment. Supports AWS, GCP, Azure, and OIDC providers via the--workload-identity-provideroption or connection configuration. - Added the
snow custom-image validatecommand to validate custom Docker images against configured rules (entrypoint, environment variables, Python packages, and dependency health). Supports an optional--scan-vulnerabilitiesflag to run Grype vulnerability scanning. - Added the
snow dcm purgecommand to drop all the objects managed by the specified DCM Project. The project object itself is not dropped. - DCM manifest targets now validate the
account_identifierandproject_ownerfields. The CLI checks these against the current session and prints a warning on mismatch:account_identifieris checked for all manifest-based commands, andproject_owneris checked forsnow dcm create. - Added the
--secondary-rolesoption (and matchingSNOWFLAKE_SECONDARY_ROLESenvironment variable andsecondary_rolesconfiguration key) tosnow connection addand the global connection overrides. The value is forwarded tosnowflake-connector-pythonand acceptsALLorNONE, so sessions can be pinned to the primary role without runningUSE SECONDARY ROLES. - Added the
--forceoption tosnow spcs service dropto allow dropping services that contain block storage volumes. - Significantly improved DCM file upload performance.
- Updated
snowflake-connector-pythonto version 4.4.0. The 4.x series introduced stricter permission checks. In future versions of Snowflake CLI, strict configuration file permissions will become mandatory. To test whether your files have the correct permissions, setSNOWFLAKE_CLI_FEATURES_ENFORCE_STRICT_CONFIG_PERMISSIONS=1before running CLI commands.
Bug fixes¶
- Fixed
snow streamlit deployfailing with a collision error when apages/*.pyglob inadditional_source_filesoverlaps with the automatically-includedpages/directory. Overlapping glob patterns are now deduplicated during v1-to-v2 definition conversion. - Fixed the error message when the
PRIVATE_KEY_PASSPHRASEenvironment variable is set to an empty string. - Fixed
SELECT *output being corrupted when joined tables share column names. Duplicate column names are now disambiguated by appending a numeric suffix (for example,NAME,NAME_2). - Fixed
snow connection generate-jwtandsnow connection generate-workload-identity-tokenfailing withConnection None is not configuredwhen used with--temporary-connection. - Fixed duplicate
LOGIN_HISTORYevents (andOVERFLOW_FAILURE_EVENTS_ELIDEDentries) previously emitted when asnowinvocation was rejected by an authentication policy. The internal connection cache now remembers failed connect attempts and re-raises the original exception on subsequent accesses within the same process, instead of re-dialing Snowflake every time a command accesses the shared connection. - Fixed session/master token connections created from environment variables or named connection configuration not enabling token keep-alive settings. This could cause follow-up commands to fail with
251007: Session and master tokens invalid.
Version 3.16.0 (Mar 19, 2026)¶
New features and updates¶
- Added support for DCM commands in preview.
- Added the
--in-accountoption to list commands (for example,snow object list,snow stage list). This option lists all objects of a given type in the account. Cannot be used together with the--inoption. - Added the experimental command
snow spcs service build-imageto build container images using an SPCS service. The command uploads the local build context to a stage, executes a build job, and streams logs in real time until completion. This command is experimental and subject to change. - Added the
--asyncoption to thesnow spcs service execute-jobcommand to execute job services asynchronously without waiting for completion. - Added the
--replicasoption to thesnow spcs service execute-jobcommand to specify the number of job replicas to run. - Added the
--dbt-versionoption to thesnow dbt deployandsnow dbt executecommands. This option sets the dbt Core version on a dbt project object (snow dbt deploycommand) or executes a dbt command on a specific dbt Core version without altering the dbt object (snow dbt executecommands). - All authenticators (including
snowflake-jwt,username_password_mfa, andworkload_identity) are now case-insensitive. - Changed how the fully qualified names for temporary stages are established for
snow dbt deploy. The database and schema from the dbt project object’s fully qualified name now take precedence over those from the session.
Bug fixes¶
- Fixed
snow stage copy --recursivedropping database and schema qualifiers from fully qualified stage names, which caused the command to resolve stages against the connection’s default database instead of the one specified in the FQN. - Fixed
snow streamlit deploy --prunefailing with an incorrect stage path format for Streamlit entities using versioned deployment. Thesnow://prefix is now correctly preserved through all stage path operations. - Fixed a bug with
snow dbt deploywhere the dbt project uploaded files first and updated project properties afterward. This could cause deploys to fail if, for example, the project lacked external access integrations and dependencies were specified. - Fixed the
snow stage copyandsnow stage putcommands failing when a local directory path contains glob special characters (such as, square brackets in [id] or [slug]). The path is now escaped before glob expansion, so literal directory names are matched correctly.
Version 3.15.0 (Feb 03, 2026)¶
New features and updates¶
- Added the
--if-existsoption to thesnow object dropcommand and object-specific drop commands (for example,snow stage drop) to drop objects only if they exist, preventing errors when dropping non-existent objects. - Updated the project definition with supported Python versions aligned with
snowflake-connector-python.
Bug fixes¶
- Fixed git repository path parsing to allow quotes around both repository and branch names (such as
@"example-repo"/branches/"feature/branch"/*). - Fixed external browser authentication (
EXTERNALBROWSER) for headless systems.