Releases: snowflakedb/snowflake-cli
Releases · snowflakedb/snowflake-cli
v3.17.1
Backward incompatibility
Deprecations
New additions
Fixes and improvements
- Encrypted private key files no longer require
PRIVATE_KEY_PASSPHRASEto be set in the environment. The passphrase can now be read fromprivate_key_file_pwd(the name used bysnowflake-connector-python) orprivate_key_passphraseinconnections.toml/config.toml. ThePRIVATE_KEY_PASSPHRASEenvironment variable continues to take precedence when set. This also fixes a regression in 3.17.0 where commands using key-pair authentication withprivate_key_passphraseinconnections.tomlfailed withargument 'password': Cannot convert "<class 'str'>" instance to a buffer.
v3.17.0
Deprecations
New additions
snow appnow supports both Snowflake Native Apps (application/application packageentities) and Snowflake Apps Deploy (snowflake-appentities). The entity type insnowflake.ymldetermines which flow is used, so shared subcommands likebundle,deploy,validate,open,events, andteardownautomatically pick the correct behavior. The experimental hiddensnow __appcommand group and theENABLE_SNOWFLAKE_APPSfeature flag have been removed.- Added
snow app setupcommand for initializing asnowflake.ymlfor a Snowflake Apps Deploy project. - Added
snow connection generate-workload-identity-tokencommand to generate a workload identity token for the current environment. Supports AWS, GCP, Azure, and OIDC providers via--workload-identity-providerflag or connection configuration. - Added
snow custom-image validatecommand to validate custom Docker images against configured rules (entrypoint, environment variables, Python packages, dependency health). Supports an optional--scan-vulnerabilitiesflag to run Grype vulnerability scanning. - Added
snow dcm purgecommand to drop all the objects managed by the specified DCM Project - DCM manifest targets now validate
account_identifierandproject_ownerfields.
CLI validates these against the current session and prints a warning on mismatch:account_identifieris checked for all manifest-based commandsproject_owneris checked forsnow dcm create
- Added a
--secondary-rolesoption (plus matchingSNOWFLAKE_SECONDARY_ROLESenv var andsecondary_rolesconfig 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 running an extraUSE SECONDARY ROLESstatement. - Added
--forceflag tosnow spcs service dropto allow dropping services that contain block storage volumes.
Fixes and improvements
- Significantly improved DCM files upload performance
- Fixed
snow streamlit deployfailing with a collision error whenpages/*.pyglob inadditional_source_filesoverlaps with the automatically-includedpages/directory. Overlapping glob patterns are now deduplicated during v1-to-v2 definition conversion. - Updated
snowflake-connector-pythonto version 4.4.0. Connector python 4.x series introduced stricter permission checks. In future versions of Snowflake CLI strict configuration file permissions will become mandatory. To test if your files have correct permissions set SNOWFLAKE_CLI_FEATURES_ENFORCE_STRICT_CONFIG_PERMISSIONS=1 before running CLI commands. - Fixed error message when
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 (e.g.NAME,NAME_2). - Fixed
snow connection generate-jwtandsnow connection generate-workload-identity-tokenfailing withConnection None is not configuredwhen used with--temporary-connection. - 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. This fixes, among other cases, the customer-visible duplicate
LOGIN_HISTORYevents (andOVERFLOW_FAILURE_EVENTS_ELIDED) previously emitted when asnowinvocation was rejected by an authentication policy. - Fixed session/master token connections created from environment variables or named connection config not enabling token keep-alive settings. This could cause follow-up commands to fail with
251007: Session and master tokens invalid.
v3.17.0-rc0
Deprecations
New additions
snow appnow supports both Snowflake Native Apps (application/application packageentities) and Snowflake Apps Deploy (snowflake-appentities). The entity type insnowflake.ymldetermines which flow is used, so shared subcommands likebundle,deploy,validate,open,events, andteardownautomatically pick the correct behavior. The experimental hiddensnow __appcommand group and theENABLE_SNOWFLAKE_APPSfeature flag have been removed.- Added
snow app setupcommand for initializing asnowflake.ymlfor a Snowflake Apps Deploy project. - Added
snow connection generate-workload-identity-tokencommand to generate a workload identity token for the current environment. Supports AWS, GCP, Azure, and OIDC providers via--workload-identity-providerflag or connection configuration. - Added
snow custom-image validatecommand to validate custom Docker images against configured rules (entrypoint, environment variables, Python packages, dependency health). Supports an optional--scan-vulnerabilitiesflag to run Grype vulnerability scanning. - Added
snow dcm purgecommand to drop all the objects managed by the specified DCM Project - DCM manifest targets now validate
account_identifierandproject_ownerfields.
CLI validates these against the current session and prints a warning on mismatch:account_identifieris checked for all manifest-based commandsproject_owneris checked forsnow dcm create
- Added a
--secondary-rolesoption (plus matchingSNOWFLAKE_SECONDARY_ROLESenv var andsecondary_rolesconfig 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 running an extraUSE SECONDARY ROLESstatement. - Added
--forceflag tosnow spcs service dropto allow dropping services that contain block storage volumes.
Fixes and improvements
- Significantly improved DCM files upload performance
- Fixed
snow streamlit deployfailing with a collision error whenpages/*.pyglob inadditional_source_filesoverlaps with the automatically-includedpages/directory. Overlapping glob patterns are now deduplicated during v1-to-v2 definition conversion. - Updated
snowflake-connector-pythonto version 4.4.0. Connector python 4.x series introduced stricter permission checks. In future versions of Snowflake CLI strict configuration file permissions will become mandatory. To test if your files have correct permissions set SNOWFLAKE_CLI_FEATURES_ENFORCE_STRICT_CONFIG_PERMISSIONS=1 before running CLI commands. - Fixed error message when
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 (e.g.NAME,NAME_2). - Fixed
snow connection generate-jwtandsnow connection generate-workload-identity-tokenfailing withConnection None is not configuredwhen used with--temporary-connection. - 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. This fixes, among other cases, the customer-visible duplicate
LOGIN_HISTORYevents (andOVERFLOW_FAILURE_EVENTS_ELIDED) previously emitted when asnowinvocation was rejected by an authentication policy. - Fixed session/master token connections created from environment variables or named connection config not enabling token keep-alive settings. This could cause follow-up commands to fail with
251007: Session and master tokens invalid.
v3.16.0
Deprecations
New additions
- DCM commands are now available in preview
- Added
--in-accountflag to list commands (e.g.,snow object list,snow stage list). This flag allows listing all objects of a given type in the account. Cannot be used together with the--inflag. - Added experimental command
snow spcs service build-imageto build container images using SPCS service. The command uploads 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
--asyncflag tosnow spcs service execute-jobcommand to execute job services asynchronously without waiting for completion. - Added
--replicasparameter tosnow spcs service execute-jobcommand to specify the number of job replicas to run. - Added
--dbt-versionflag tosnow dbt deployandsnow dbt executecommands. This flag allows to set dbt Core version on dbt project object (deploycommand) or execute a dbt command on a specific dbt Core version, without altering the dbt object (executecommands).
Fixes and improvements
- Fixed
snow stage copy --recursivedropping database and schema qualifiers from fully-qualified stage names, causing the command to resolve stages against the connection's default database instead of the one specified in the FQN. - all authenticators (including
snowflake-jwt,username_password_mfa,workload_identity) are now case-insensitive. - Fixed
snow streamlit deploy --prunefailing with 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 dbt project would have files uploaded first and project properties updated afterwards. This could lead to failed deploys if for example project lacked external access integrations and dependencies were specified. - Changed how the fully qualified name for temporary stages is established for
snow dbt deploy. The database and schema from the DBT Project object's fully qualified name take precedence over those from the session. - Fixed
snow stage copyandsnow stage putfailing when a local directory path contains glob special characters (e.g. square brackets in[id]or[slug]). The path is now escaped before glob expansion so literal directory names are matched correctly.
v3.16.0-rc1
Deprecations
New additions
- DCM commands are now available in preview
- Added
--in-accountflag to list commands (e.g.,snow object list,snow stage list). This flag allows listing all objects of a given type in the account. Cannot be used together with the--inflag. - Added experimental command
snow spcs service build-imageto build container images using SPCS service. The command uploads 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
--asyncflag tosnow spcs service execute-jobcommand to execute job services asynchronously without waiting for completion. - Added
--replicasparameter tosnow spcs service execute-jobcommand to specify the number of job replicas to run. - Added
--dbt-versionflag tosnow dbt deployandsnow dbt executecommands. This flag allows to set dbt Core version on dbt project object (deploycommand) or execute a dbt command on a specific dbt Core version, without altering the dbt object (executecommands).
Fixes and improvements
- Fixed
snow stage copy --recursivedropping database and schema qualifiers from fully-qualified stage names, causing the command to resolve stages against the connection's default database instead of the one specified in the FQN. - all authenticators (including
snowflake-jwt,username_password_mfa,workload_identity) are now case-insensitive. - Fixed
snow streamlit deploy --prunefailing with 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 dbt project would have files uploaded first and project properties updated afterwards. This could lead to failed deploys if for example project lacked external access integrations and dependencies were specified. - Changed how the fully qualified name for temporary stages is established for
snow dbt deploy. The database and schema from the DBT Project object's fully qualified name take precedence over those from the session. - Fixed snow stage copy and snow stage put failing when a local directory path contains glob special characters (e.g. square brackets in [id] or [slug]). The path is now escaped before glob expansion so literal directory names are matched correctly.
v3.16.0-rc0
Deprecations
New additions
- Added
--in-accountflag to list commands (e.g.,snow object list,snow stage list). This flag allows listing all objects of a given type in the account. Cannot be used together with the--inflag. - Added experimental command
snow spcs service build-imageto build container images using SPCS service. The command uploads 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
--asyncflag tosnow spcs service execute-jobcommand to execute job services asynchronously without waiting for completion. - Added
--replicasparameter tosnow spcs service execute-jobcommand to specify the number of job replicas to run. - Added
--dbt-versionflag tosnow dbt deployandsnow dbt executecommands. This flag allows to set dbt Core version on dbt project object (deploycommand) or execute a dbt command on a specific dbt Core version, without altering the dbt object (executecommands).
Fixes and improvements
- Fixed
snow stage copy --recursivedropping database and schema qualifiers from fully-qualified stage names, causing the command to resolve stages against the connection's default database instead of the one specified in the FQN. - Updated
snowflake-connector-pythonto version 4.3.0. - all authenticators (including
snowflake-jwt,username_password_mfa,workload_identity) are now case-insensitive. - Fixed
snow streamlit deploy --prunefailing with 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 dbt project would have files uploaded first and project properties updated afterwards. This could lead to failed deploys if for example project lacked external access integrations and dependencies were specified. - Changed how the fully qualified name for temporary stages is established for
snow dbt deploy. The database and schema from the DBT Project object's fully qualified name take precedence over those from the session.
v3.15.0
New additions
- Added
--if-existsoption tosnow object dropcommand and object-specific drop commands (e.g.,snow stage drop) to drop objects only if they exist, preventing errors when dropping non-existent objects.
Fixes and improvements
- Fix git repository path parsing to allow quotes around both repo and branch names (e.g.,
@"example-repo"/branches/"feature/branch"/*). - Fix
externalbrowserauth for headless systems. - Update project definition with supported python versions aligned with
snowflake-connector-python
v3.15.0-rc1
New additions
- Added
--if-existsoption tosnow object dropcommand and object-specific drop commands (e.g.,snow stage drop) to drop objects only if they exist, preventing errors when dropping non-existent objects.
Fixes and improvements
- Fix git repository path parsing to allow quotes around both repo and branch names (e.g.,
@"example-repo"/branches/"feature/branch"/*). - Fix
externalbrowserauth for headless systems. - Update project definition with supported python versions aligned with
snowflake-connector-python
v3.15.0-rc0
New additions
- Added
--if-existsoption tosnow object dropcommand and object-specific drop commands (e.g.,snow stage drop) to drop objects only if they exist, preventing errors when dropping non-existent objects.
Fixes and improvements
- Fix git repository path parsing to allow quotes around both repo and branch names (e.g.,
@"example-repo"/branches/"feature/branch"/*). - Fix
externalbrowserauth for headless systems. - Update project definition with supported python versions aligned with
snowflake-connector-python
v3.14.0
Deprecations
snow streamlit deploy --experimentalflag is deprecated. Versioned deployment is now the default behavior.
New additions
snow streamlit deploynow uses versioned stages by default (modern FROM syntax with automatic version management)- Added
snow streamlit deploy --legacyflag to use the legacy ROOT_LOCATION deployment for backward compatibility