Unreleased version
August 14, 2026 · View on GitHub
Backward incompatibility
Deprecations
New additions
snow connection addnow supports--client-store-temporary-credential, which writesclient_store_temporary_credential = trueto the new connection inconfig.toml.snow sql --local-onlydefault can now be set via theSNOWFLAKE_CLI_SQL_LOCAL_ONLYenvironment variable. Accepted values:1/true/yes/on(enable) and0/false/no/off(disable). When unset, the default remainsfalse.- The
snow appcommands now support anapp.yml(version 2) for Snowflake App Runtime projects; when present it drives the flow instead ofsnowflake.yml(the Native App flow is unchanged). Itstargetsblock declares named per-environment deployments, and a new--targetflag ondeploy,open,events,teardown, andvalidateselects which one to use.snow app deployruns an upload → build → deploy pipeline that can be limited to a single phase with--upload-only,--build-only, or--promote-only.
Fixes and improvements
snow app eventsfor Snowflake App Runtime projects can now return more events by requesting a higher--lastvalue.snow app deploywith workspace-backed storage now builds fromversions/live/(the current working state) instead of the last committed version. In the Workspaces editor, files auto-save to the live version continuously — readingversions/lastduring the build phase caused stale content to be deployed when running from a live workspace session.- DCM projects: the
snow dcm preview,snow dcm refresh, andsnow dcm testcommands are not yet generally available. They are now hidden from--helpunless theenable_dcm_preview_featuresCLI feature flag is enabled, so they no longer appear insnow dcm --helpwithout an explicit opt-in. snow streamlit deploy --replace: fixed a crash when replacing a legacyROOT_LOCATIONStreamlit app with a versioned deployment.- Upgraded
GitPythonfrom 3.1.57 to 3.1.58.
v3.24.1
Fixes and improvements
- DCM projects: the
--env-file/-eoption for sourcing declaredtemplating.env_vars/templating.env_secretsvalues from a.envfile is not yet generally available. It is now hidden from--helpunless theenable_dcm_project_env_varsCLI feature flag is enabled. This fixes a bug introduced in v3.24.0, where the option was visible without requiring any opt-in.
v3.24.0
Backward incompatibility
snow appcommands for Snowflake App Runtime projects now always operate onAPPLICATION SERVICEobjects and no longer fall back to plain SPCSSERVICEobjects.snow app open --settingsalways uses theapp-serviceSnowsight URL segment, andsnow app teardownalways drops and verifies the app viaAPPLICATION SERVICE. Apps still deployed as legacy SPCS services are no longer supported by these commands.
Deprecations
New additions
- Added optional
--validation-profiletosnow spcs service remote-build(e.g.ML_JOB,NOTEBOOK). The value is forwarded asvalidation_profileonPOST /api/v2/remote-build/executeso the image builder can select a pre-baked validation ruleset. When omitted, no image validation is requested. Ignored for--build-type app. - Added
snow spcs service remote-build,remote-build-status, andremote-build-historycommands that submit and track SPCS image/app builds via the remote build REST API. These commands are hidden by default and gated by theenable_spcs_remote_buildCLI feature flag. snow dcm plannow supports the--deltaflag for incremental deployments. This option enables processing only statements that have changed since the last deploy, plus statements potentially impacted by those changes.snow dcmcommands are now generally available (GA). DCM provides infrastructure-as-code capabilities for managing Snowflake objects through declarative SQL files. All DCM commands are now available without needing to enable theenable_snowflake_projectsfeature flag.- DCM projects:
snow dcm deploy,snow dcm plan, andsnow dcm previewnow support environment variables and secrets declared in a project manifest'stemplating.env_vars/templating.env_secretssections. Declared values are collected from the shell environment, or from a.envfile passed via--env-file/-e(the shell always wins for a name declared in both), and forwarded to the server. - Added
snow helpers check-version, which reports the installed Snowflake CLI version alongside the latest published version and whether an upgrade is available. Use--refreshto bypass the local cache and query PyPI/Homebrew directly. This is the on-demand equivalent of the automatic upgrade banner and always reports its result, even whenignore_new_version_warningis set. - Added
snow dbt copy, which copies files between a local directory and a stage (or between stages) for a dbt project. It is an alias ofsnow stage copyand supports the same paths and options (--recursive,--overwrite,--parallel,--auto-compress,--refresh). snow app eventsnow surfaces app health telemetry for Snowflake App Runtime projects.--type log|metric|lifecycleselects the stream (defaultlog);--since/--untilaccept relative shorthand (e.g.30m,6h,2d) or absolute UTC timestamps and switch logs to the historical event table, whilemetricandlifecycleare always historical and default to the last hour.--metric cpu|memory|networknarrows metric output and--rawemits unconverted values (bytes, cores). The baresnow app eventslive log tail is unchanged.snow dcm deploy,snow dcm purge,snow dcm plan,snow dcm preview,snow dcm refresh, andsnow dcm testnow show live, per-step progress as an interactive checklist instead of a single generic spinner.
Fixes and improvements
snow dcmcommands now summarize the files being uploaded as a tree beneath the upload step, instead of listing every file on its own line.- Recursive stage uploads now upload directories concurrently instead of one at a time. This applies to every command that uploads a directory tree to a stage (e.g.
snow stage copy --recursive,snow dcm deploy,snow dcm plan,snow dbt deploy,snow spcs service build-image). Upload wall-clock is dominated by per-PUT round-trip latency, so trees with many nested folders (e.g. one file per directory) see a large speedup. Total upload concurrency is bounded by theSNOWFLAKE_CLI_STAGE_UPLOAD_WORKERSsetting (config keycli.stage_upload_workers, default 16; set to 1 to restore the previous serial behavior). Forsnow stage copythis budget is shared with--parallelrather than multiplied by it, so existing invocations do not spawn more threads than before. snow dcm plan,deploy, andpurgenow render each altered object's changes as an indented tree, showing added, modified, and removed columns, constraints, grants, and other properties — with previous → new values — instead of only the object name. Long or multi-line values are collapsed to a single line.- A bare
USER$database resolved from the active connection is now expanded to the caller's personal database (USER$<username>) when the connection specifies a username, so commands validate and report against the fully-qualified name. snow appcommands (validate,open,events,deploy,teardown) now resolve their database and schema from the active connection like other CLI commands, so a bareUSER$database configured insnowflake.ymlis expanded to the caller's personal database.snow app setupnow defaults to a workspace for code storage on all databases (previously regular databases used a stage). When the role cannot create a workspace it uses a stage instead, andsnow app deployalso falls back to a stage if a workspace cannot be used.- Upgraded
GitPythonfrom 3.1.50 to 3.1.57. snow dcmcommands run with--save-outputnow write artifacts directly into theout/directory, with each command's response inout/<command>_result.json, instead of nesting them under a per-command subdirectory. Theout/directory is recreated empty at the start of every such run.
v3.23.0
Deprecations
New additions
snow spcs service eventsis now generally available. This command returns service-level and service-instance-level platform events in addition to container-level events.snow app opennow accepts a--watchflag for Snowflake App Runtime projects. With--watch, the command no longer fails when the app service does not exist yet; it polls until the service is created and its endpoint is ready before opening (or printing) the URL.snow app --helpis now context-aware: when the current project'ssnowflake.ymlunambiguously targets one app family (Native Apps or Snowflake App Runtime), the help listing hides the other family's commands. Detection is conservative — a mixed, missing, or unparsable project shows every command — and hidden commands remain fully runnable. Because the same filtering backs shell completion and Click's "did you mean" suggestions, the hidden family's commands also stop appearing insnow app <TAB>completion for such a project (they still run when invoked explicitly).
Fixes and improvements
snow app deploynow drops the code stage before recreating it only when the stage already exists. A first deploy has nothing to clear, so it no longer issuesDROP STAGEunnecessarily, letting a role with onlyCREATE STAGE(and notOWNERSHIP) deploy successfully.- Upgraded
snowflake-connector-pythonfrom 4.6.0 to 4.7.1. - Upgraded
snowflake-snowpark-pythonfrom 1.41.0 to 1.53.0.
v3.22.1
Fixes and improvements
snow streamlit deploy: fix re-deploy incorrectly attempting to UNSET schema-inherited governance tags the deploying role has no APPLY privilege on. Omitting thetags:property fromsnowflake.ymlnow leaves directly-set tags untouched; usetags: []to explicitly clear all directly-set tags.
v3.22.0
Deprecations
New additions
- Added
tagsfield to Streamlit entity so that tags can be set withsnow streamlit deploy. config.tomlandconnections.tomlfiles with0644permissions (readable by group or others) now emit a warning instead of a hard error whenSF_SKIP_TOKEN_FILE_PERMISSIONS_VERIFICATION=trueorSKIP_TOKEN_FILE_PERMISSIONS_VERIFICATION=trueis set, aligning with snowflake-connector-python behaviour. Files writable by group or others remain a hard error regardless of the env var.
Fixes and improvements
snow app setupnow correctly preserves case-sensitive (double-quoted) identifiers in the generatedsnowflake.yml. Previously, values such as"lower_db"were silently stripped of their surrounding quotes by YAML, causing Snowflake to uppercase the identifier and fail to locate the object.snow app setupno longer writesbuild_compute_pool/service_compute_poolto the generatedsnowflake.yml, and no longer reads theDEFAULT_SNOWFLAKE_APPS_BUILD_COMPUTE_POOL/DEFAULT_SNOWFLAKE_APPS_SERVICE_COMPUTE_POOLaccount parameters. Snowflake App Runtime services now always run on server-managed compute pools. Existing projects that set these fields insnowflake.ymlcontinue to be honored bysnow app deploy.snow app setup --dry-runnow exits with code 0 while still printing the same setup validation errors that a non-dry-run invocation surfaces.snow app deploynow supports a separateservice_eaifield onsnowflake-appentities for newly created application services. Whenservice_eaiis not set, deploy continues to fall back tobuild_eaifor backward compatibility.snow dbt deploynow preserves the customer's original key order inprofiles.ymlinstead of silently reordering keys alphabetically.snow app setupandsnow app deployresolve their Snowflake App Runtime defaults via theSYSTEM$GET_APPLICATION_SERVICE_DEFAULTS()system function, and automatically fall back to the previousSHOW PARAMETERSbased resolution on accounts where that function is not yet available. The fallback is transitional and will be removed once the function has fully rolled out.- Fixed
snow app eventsandsnow app setup --dry-runcrashing on Windows with an uncaughtUnicodeEncodeErrorwhen their output contained non-ASCII characters (e.g. emoji, box-drawing, or accented text in application logs or the dry-run plan preview). Thesnow appcommands now render output as UTF-8 instead of the platform default code page (cp1252/cp932 on Windows).
v3.21.0
Deprecations
New additions
- Added
cli.encodingconfig section (and matchingSNOWFLAKE_CLI_ENCODING_*env vars) to control text encoding in three areas:file_iofor reading and writing project files (e.g. SQL files,snowflake.yml),subprocessfor decoding output of external processes (e.g. Docker, pip), andstdoutfor encoding CLI output written to stdout. Setting all three toutf-8ensures correct Unicode handling on Windows systems where the platform default encoding is not UTF-8. - Added
--no-prompt-exit-reploption and configuration setting to skip the exit confirmation prompt in the SQL REPL. - Added
--server-session-keep-aliveglobal connection flag (plus matchingSNOWFLAKE_SERVER_SESSION_KEEP_ALIVEenv var andserver_session_keep_aliveconfig key) that prevents Snowflake from closing idle sessions. Useful for long-running operations or connections held open between multiple operations.
Fixes and improvements
- Fixed REST API object operations (e.g.
snow object create) crashing withModuleNotFoundError: No module named 'snowflake.connector.vendored'when running against the Snowflake Universal Driver (connector-python v5). HTTP error handling now works on both connector v4.x and the Universal Driver v5. - The
snow app setup--compute-pooloption and thebuild_compute_pool/service_compute_poolfields of asnowflake-appentity are now hidden and undocumented (omitted from--helpand the generated project-definition JSON schema). They remain fully functional:snow app setupandsnow app deploystill honor theDEFAULT_SNOWFLAKE_APPS_BUILD_COMPUTE_POOL/DEFAULT_SNOWFLAKE_APPS_SERVICE_COMPUTE_POOLaccount parameters and any compute pools configured insnowflake.yml. TheENABLE_APPLICATION_SERVICE_MANAGED_COMPUTE_POOLandENABLE_APPLICATION_SERVICE_MANAGED_COMPUTE_POOL_FALLBACKparameter checks (and the related deploy-time warning) have been removed. snow streamlit deploy --replacenow usesALTER STREAMLIT ... SETinstead ofCREATE OR REPLACE STREAMLITwhen the app already exists, preserving existing grants and permissions on the object.- Fixed
snow app setupincorrectly treating system-default parameter values as admin-configured values. After runningALTER ACCOUNT UNSETonDEFAULT_SNOWFLAKE_APPS_BUILD_COMPUTE_POOLorDEFAULT_SNOWFLAKE_APPS_SERVICE_COMPUTE_POOL, those fields no longer appear in the generatedsnowflake.ymlor--dry-runoutput. - Upgraded
pipfrom 26.1.1 to 26.1.2. snow app setupandsnow app deploynow default to a workspace (instead of a stage) for app code whenever the resolved destination is a personal database (USER$<user>), which do not support stages. An explicitly configuredcode_stageis still honored, with a warning when the destination is a personal database.- Fixed
snow app deployfailing on Windows when uploading app code to a workspace (connector error253006,ER_FILE_NOT_EXISTS) due to a malformed local file URI. - Fixed
snow app deployfailing with connector error253006when an app's files live under directories whose names contain glob metacharacters — for example Next.js dynamic-route directories such as[id]or[...slug]. The connector expandsPUTsources as glob patterns, so the unescaped local path matched nothing (File doesn't exist) or a same-named sibling directory (Not a file but a directory). Local file paths are now escaped before being passed toPUT. This affected the workspace upload path used for personal-database destinations. snow app deploynow uploads app code to a stage one file at a time (preserving the directory structure) instead of via a recursivePUT <dir>/*, and no longer deletes the local bundle during upload. The per-file form also avoids the directory-matching glob behind connector error253006.- The
build_eaifield of asnowflake-appentity can now be specified as a bare string (e.g.build_eai: MY_EAI) in addition to the existingbuild_eai:\n name: MY_EAIobject form. snow app setupnow honors the--warehouse,--database, and--schemaconnection options as explicit overrides for the generatedsnowflake.yml, taking precedence over account parameters and the connection defaults. This lets users target a warehouse, database, or schema other than the account defaults. When--databaseis specified,--schemamust also be specified.snow dcmcommands now use the system temporary folder to bundle project files before uploading, rather than creating theoutputproject directory and dropping it afterwardsnow dbtno longer rejects valid--dbt-versionvalues (e.g.2.0.0-preview.175) that don't match a hard-coded client-side regex. Versions are now validated against the server's supported list, with unsupported versions failing fast and listing the actual supported set.- Fixed
snow appcommands (e.g.snow app deploy,snow app validate) failing on Windows with aUnicodeDecodeErrorwhensnowflake.ymlcontained non-ASCII characters (e.g. a non-Latin app title or description). Thesnow appcommand group now defaults to reading and writingsnowflake.ymlas UTF-8 instead of falling back to the platform default code page (cp1252/cp932 on Windows). An explicitcli.encoding.file_iosetting still takes precedence when configured; UTF-8 is only the default forsnow appcommands. Other commands continue to honor thecli.encoding.file_iosetting / platform default when reading project files. - The
--deploy-onlyflag ofsnow app deployhas been renamed to--promote-only. The previous--deploy-onlyname continues to work as a hidden alias for now, but this backward compatibility is temporary and will be removed soon. snow app deploynow drops and recreates the code stage before uploading (instead of clearing it withREMOVE) so each deploy always starts from an empty stage. This prevents stale files from a previous deploy from being mixed into the build, which could produce incorrect or conflicting build artifacts.snow app deploynow uploads app code files in parallel (up to 5 at a time) instead of one at a time, reducing upload time for apps with many files. This applies to both the stage and workspace upload paths.
v3.20.0
Deprecations
New additions
- Added a
--protocoloption (plus matchingSNOWFLAKE_PROTOCOLenv var andprotocolconfig key) tosnow connection addand the global connection overrides. This allows selectinghttporhttpsas the connection protocol without editingconfig.toml, which is primarily useful for local development againsthttpdeployments. - Added
snow helpers generate-project-schemacommand to emit a JSON Schema for thesnowflake.ymlproject definition file. The output follows JSON Schema Draft 2020-12 and can be plugged into supported editors (e.g. VS Code via the YAML extension) or CI pipelines to get completion and to catch structural mistakes (unknown keys, wrong types, missing required fields) before a deploy. The schema is generated from the CLI's own models, so some cross-field and semantic checks are still only applied at load/deploy time. Use--definition-versionto select the project definition version (1,1.1, or2; defaults to2) and--output-file/-oto write the schema to a file.
Fixes and improvements
- Fixed
TooManyFilesErrorduringsnow streamlit deploywhenmain_fileis a descendant of a directory listed inartifacts. - Upgraded
snowflake-connector-pythonfrom 4.5.0 to 4.6.0. snow dcm list-deploymentsandsnow dcm drop-deploymentnow wrap the project name inIDENTIFIER(...), matching every other DCM subcommand. Fully-qualified and quoted project names are now handled consistently.- Fixed
snow sqltable output rendering as a series of|characters when selecting many columns into a non-terminal destination (e.g. piped or redirected output). get_account_identifier()andsnow spcs service build-imagenow raise a clear, user-visible error whenCURRENT_ORGANIZATION_NAME()/CURRENT_ACCOUNT_NAME()return no row or a NULL value, instead of a crypticTypeError: 'NoneType' object is not subscriptable/AttributeError: 'NoneType' object has no attribute 'lower'.snow app setupandsnow app deploynow verify the current role can deploy to the account-configured destination (theDEFAULT_SNOWFLAKE_APPS_DESTINATION_DATABASE/DEFAULT_SNOWFLAKE_APPS_DESTINATION_SCHEMAaccount defaults) before using it. When the role is missing the required privileges, the commands fall back to your personal database — as if no account default were set — and print a warning listing the missing grants and pointing you to your account administrator.
v3.19.0
Deprecations
New additions
- Added
--local-onlyflag tosnow sql. When set,!sourceand!loaddirectives that referencehttp://orhttps://URLs are rejected instead of fetched, restricting the command to local SQL files. Useful for running SQL in environments where outbound network access from the CLI is undesirable, or when SQL inputs should be reviewed locally before execution. Local file!source/!loadare unaffected. The flag also applies to the interactive REPL and to files reached transitively via nested!source.
Fixes and improvements
v3.18.0
Deprecations
New additions
- Added
snow streamlit logscommand to stream live logs from a Streamlit-in-Snowflake app running on the SPCSv2 container runtime. Supports--tailfor historical lines,--nameto target apps without a project definition, and honors the global--formatflag (plain / JSON / CSV) for downstream piping.
Fixes and improvements
- Updated
snowflake-connector-pythonto version 4.5.0. - Updated
gitpythonto version 3.1.50. - Fixed macOS arm64 installer incorrectly requiring Rosetta 2. The
Distribution.xmlpackage metadata now declareshostArchitectures="arm64,x86_64", so the installer is recognized as native on Apple Silicon. - Fixed
snow spcs service build-imageon Azure accounts to work with stages using SNOWFLAKE_FULL encryption. - Fixed SQL string literal escaping in
identifier_to_show_like_patternandto_string_literalto use Snowflake's standard single-quote doubling ('') instead of backslash escaping, which is not interpreted under the defaultSTANDARD_ESCAPE_SEQUENCES=FALSEsession setting. This closes SQL injection vectors throughSHOW ... LIKEqueries driven by a project-controlledsnowflake.ymlormanifest.yml. - Upgraded
pipto version 26.1.1. - Fixed
snow connection listcrashing withAttributeErrorwhenconfig.tomlcontains a scalar value directly under[connections]. Such entries are now skipped with a warning so valid connections are still listed. - Fixed SQL injection via
FQN.sql_identifier. - Fixed Snowsight URL generation (used by
snow streamlit deploy,snow streamlit get-url,snow app run,snow notebook, and similar commands) for accounts whose host is 4-part (e.g.<account>.us-east-1.snowflakecomputing.com) or 5-part with a cloud suffix (e.g.<account>.<region>.aws.snowflakecomputing.com). These hosts now resolve to the correct regioned Snowsight URL instead of raising"host (...) was missing or not in the expected format". - Fixed boolean connection parameters (
client_store_temporary_credential,oauth_disable_pkce,oauth_enable_refresh_tokens,oauth_enable_single_use_refresh_tokens) being passed to the connector as raw strings when supplied viaSNOWFLAKE_*orSNOWFLAKE_CONNECTIONS_<name>_*environment variables. Values likefalse/0are now correctly interpreted asFalserather than truthy strings. - Fixed SQL injection in
snow spcs service create,execute-job, andupgradewhere a$$sequence in a YAML spec file could break out of the dollar-quoted SQL literal and execute arbitrary SQL with the caller's session privileges.$$sequences in spec content are now neutralized before the spec is embedded in SQL. - Improved file handling in the
read_file_contentandprocedure_from_js_fileJinja filters used during SQL template rendering. - Improved path handling in the Snowpark annotation processor (
nativeapp codegen snowpark). - Improved path handling for post-deploy
sql_scripthooks. - Improved string handling in
CREATE STREAMLITSQL emitted bysnow streamlit deployand related commands. - Improved output of
repr(ConnectionContext)and related debug logs. - Improved file handling in artifact bundling for
snow appandsnow snowpark. - Improved input handling in
snow git setup,snow connectionsecret creation, and API integration creation. - Improved argument handling in SPCS service status and log commands.
- Improved input handling in
snow cortex completeandsnow cortex translate. - Improved pattern handling for
--likearguments tosnow object show,snow git show, andsnow spcs image-repository list-images.
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.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. - Fixed Jinja block statements (
{% if %},{% for %}) containing semicolons being incorrectly split before rendering, causingTemplateSyntaxErrorwhen using--enable-templating jinja.
v3.15.0
Deprecations
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
Fixes and improvements
v3.13.1
Backward incompatibility
Deprecations
New additions
Fixes and improvements
- Fixed parsing of --vars provided to
snow dbt executesubcommands. This allows to pass variables in the same way as to dbt cli, i.e. --vars '{"key": "value"}'
v3.13.0
Deprecations
New additions
- Added global option
--decimal-precisionallowing setting arbitrary precision for Python'sDecimaltype. - Added support for
auto_suspend_secsparameter in SPCS service commands (deploy,set,unset) to configure automatic service suspension after inactivity period. - Added
snow dbt describeandsnow dbt dropcommands - Added
snow dbt execute ... retrysubcommand - Added new flags to
snow dbt deploycommand:--default-targetto set a default target--unset-default-targetto clear default--external-access-integrationsets external access integrations (needed to pull external deps on altering dbt project object)--install-local-depsinstructs to install dependencies located in the project
- Added support for running Streamlit on SPCS runtime
Fixes and improvements
- Bumped
snowflake-connector-python==3.18.0 - Grant privileges defined in
snowflake.ymlafter deploying Streamlit - Relaxed dbt profiles.yml validation rules; added extra validation for role specified in profiles.yml
v3.12.0
Deprecations
New additions
- The
!editcommand for external editors was added to REPL - Added
--partialflag tosnow logscommand for partial, case-insensitive object name matching
Fixes and improvements
- Fixed crashes with older x86_64 Intel CPUs
- Improved parsing
!sourcewith trailing comments !commands no longer require trailing;for evaluation- Bumped to
typer=0.17.3. Improved displaying help messages. - Fixed using
ctx.varinsnow sqlwith Jinja templating. - Fixed issues when pasting content with trailing new lines.
- Improved output handling with streaming
- Bumped
snowflake-connector-pythonto 3.17.3 - Fixed
snow snowpark deployfailing on duplicated packages - Fixed
snow spcs logsIndexOutOfRangeerror
v3.11.0
Deprecations
New additions
- Add
snow connection removecommand - Added support for
runtime_environment_versionfield in notebook entity configuration, allowing specification of runtime environment version for containerized notebooks. - Added
snow auth oidccommand group for managing workload identity federation authentication:snow auth oidc read-token- Reads and displays OIDC tokens from CI/CD environments- Supports GitHub Actions OIDC provider for passwordless authentication in CI/CD pipelines
Fixes and improvements
v3.10.1
Deprecations
New additions
Fixes and improvements
- Fixed DBT deploy command to properly handle fully qualified names
- Fixed DBT deploy command to properly handle local directories with dots in names
v3.10.0
Deprecations
- Snowpark processor in Native Apps.
New additions
- Add support for passing OAuth token via
--tokenflag. - Added feature to allow suppressing the new version warning message in the Snowflake CLI, configurable via a configuration file or environment variable.
- Add support for
--format=CSV. - Add
--enabled-temaplatingflag forsnow sqlcommand, configuring which template syntax should be used to resolve variables:- standard (
<% ... %>), enabled by default - legacy (
&{ ... }), enabled by default - jinja (new) (
{{ ... }}), disabled by default
- standard (
- Added packages alias for artifact_repository_packages in the snowflake.yml schema.
- Added support for copying files between named stages using
snow stage copy @src_stage @dst_stagecommand. - DBT commands:
deploy,executeandlistare now available in preview.
Fixes and improvements
- Fixed failing snow sql command when snowflake.yml is invalid and query has no templating.
- Fix JSON serialization for
Decimal,timeandbinary. - Added
--format=JSON_EXToption to return JSON objects as proper JSON structures rather than strings. - Refactored Streamlit app deployment (using
FROM <stage>syntax); removed deprecated Streamlit features
v3.9.1
Deprecations
New additions
- Added
--private-linkflag tosnow spcs image-registry logincommand to login using private link URLs.
Fixes and improvements
v3.9.0
Deprecations
New additions
- Added
--encryptionflag tosnow stage createcommand defining the type of encryption for all files on the stage.
Fixes and improvements
- Fix
usecommands error if current database is not set.
v3.8.3
Deprecations
New additions
- Added
--private-linkflag tosnow spcs image-registry urlcommand for retrieving private link URLs.
Fixes and improvements
v3.8.2
Deprecations
New additions
Fixes and improvements
- Fix
enable_release_channelsproperty in application package definition to default toNoneinstead ofFalse.
v3.8.1
Deprecations
New additions
Fixes and improvements
- Upgrade message is printed to stderr.
- Fixed
snowflake.coreimport issue on newer Python versions
v3.8.0
Deprecations
New additions
- Added support for OAuth tokens.
- Cleaning up the output directory after coping files to the stage for Streamlit, Notebook, SPCS Service and project.
- Added interactive mode for
snow sql. - Added support for async SQL queries (
;>syntax). - Added support for
!queries,!resultand!abortcommands from SnowSQL. - Added
artifact_repository,artifact_repository_packagesandresource_constraintfields to the Snowpark Entity Model to support direct usage of non-anaconda packages. - Added
--single-transactionflag tosnow sql. Wraps BEGIN/COMMIT around statements to execute them as a single transaction, ensuring all commands complete successfully or no change is applied.
Fixes and improvements
- Fix for deploying Snowpark project using
!=operator inrequirements.txt. - Fix escaping identifiers for
usecommands. - Move
enable_release_channelsfrom global feature flag to project level. - Fixed
snow spcs service metricscommand to accept fully qualified service names.
v3.7.2
Deprecations
New additions
Fixes and improvements
- Fix error appearing on help messages after click BCR update.
v3.7.1
Deprecations
New additions
Fixes and improvements
- Fix certificate connection issues.
- Fix
snow spcs image-registry loginslow query problem.
v3.7.0
Deprecations
New additions
- Added
--pruneflag todeploycommands, which removes files that exist in the stage, but not in the local filesystem. - Added
snow logscommand for retrieving and streaming logs from the server. - Added
snow helper check-snowsql-env-varswhich reports environment variables from SnowSQL with replacements in CLI.
Fixes and improvements
- Updated MacOS postinstall script to update PATH if snow not exist.
v3.6.0
Deprecations
New additions
- Added support for
!sourcecommand in SQL. This command allows to execute SQL from a local file.
Fixes and improvements
- Fix for incompatible options in
snow spcs compute-poolcommands didn't raise error. - Change binary builds to embed whole Python environment.
- Fixed recursive copying to stage for unbalanced directory trees.
- Fixed checking for new CLI version.
- Added file execution log in stage and git commands.
v3.5.0
Deprecations
New additions
- Extended snowflake.yml support for new entities:
- SPCS compute pool
- SPCS service
- SPCS image repository
- Added
snow compute-pool deploycommand usingsnowflake.ymlfile. - Added
snow spcs service deploycommand usingsnowflake.ymlfile. - Added
snow image-repository deploycommand usingsnowflake.ymlfile. - Added support for creating native applications with manifest version 2.
Fixes and improvements
- Fix handling of date types in
snow sqlcommand when using JSON for output format
v3.4.1
Backward incompatibility
Deprecations
New additions
- Add an optional
stage_subdirectoryfield toapplication packageentity. When specified, application artifacts are uploaded to this subdirectory instead of the root of the application package's stage. - Add
snow spcs service eventscommand to retrieve service-specific events:- Supports filtering by service name, container name, instance ID, time intervals (
--since,--until), and pagination (--first,--last). - Use
--allto fetch all columns.
- Supports filtering by service name, container name, instance ID, time intervals (
- Add
snow spcs service metricscommand to fetch service metrics:- Supports filtering by service name, container name, instance ID, and time intervals (
--since,--until). - Use
--allto fetch all columns.
- Supports filtering by service name, container name, instance ID, and time intervals (
- Added support for glob pattern (except
**) in artifact paths in snowflake.yml for Streamlit. - Added support for glob pattern (except
**) in artifact paths in snowflake.yml for Snowpark, requires ENABLE_SNOWPARK_GLOB_SUPPORT feature flag. - Added command
snow app release-directive add-accountsandsnow app release-directive remove-accounts - Added
snow app release-channel set-accountscommand to set accounts for release channel. - Added support for Mac Os x86_64 architecture.
- Added
--force-replaceflag insnow snowpark deploycommand to replace entities even if no changes are detected. - Changes to notebook commands:
- Added
snow notebook deploycommand that allows creating a notebook using local file. - Add support for containerized notebooks.
- Added notebooks to
snow objectcommands.
- Added
Fixes and improvements
- Fixed MFA caching issue in binaries.
- Fixed auto-completion issue in binaries.
v3.3.0
Backward incompatibility
Deprecations
- Added deprecation message for default Streamlit warehouse
New additions
- Add support for Release Directives by introducing the following commands:
snow app release-directive listsnow app release-directive setsnow app release-directive unset
snow app version createnow returns version, patch, and label in JSON format.- Add
--from-stageflag tosnow app version createto allow version creation from the content of the stage without re-syncing to the stage. - Add support for release channels:
- Add support for release channels feature in native app version creation/drop.
- Add ability to specify release channel when creating application instance from release directive:
snow app run --from-release-directive --channel=<channel> - Add ability to list release channels through
snow app release-channel listcommand - Add ability to add and remove accounts from release channels through
snow app release-channel add-accountsand snow app release-channel remove-accounts` commands. - Add ability to add/remove versions to/from release channels through
snow app release-channel add-versionandsnow app release-channel remove-versioncommands.
- Add publish command to make it easier to manage publishing versions to release channels and updating release directives:
snow app publish - Add support for restricting Snowflake user authentication policy to Snowflake CLI-only. For more infotmation, check the documentation.
- Added a new command:
snow helpers import-snowsql-connectionsallowing to import configuration of connections from SnowSQL.
Fixes and improvements
- Fixed inability to add patches to lowercase quoted versions
- Fixes label being set to blank instead of None when not provided.
- Fixes generate-jwt command to preserve command line connection options.
- Fixed stage path handling for notebook commands.
v3.2.2
Backward incompatibility
Deprecations
New additions
Fixes and improvements
- Fix "No module named 'pandas'" warning.
v3.2.1
Backward incompatibility
Deprecations
New additions
Fixes and improvements
- Fixed crashes with older x86_64 Intel CPUs.
v3.2.0
Deprecations
manifestfield ofapplication packageentity is now optional. This field does not have any functionality.
New additions
- Added
--retain-commentsoption tosnow sqlcommand to allow passing comments to Snowflake. - Added
--replaceand--if-not-existsoptions tosnow object createcommand. - Added support for event sharing, which now can be specified under the
telemetrysection of an application entity. Two fields are supported:share_mandatory_eventsandoptional_shared_events. snow stage copysupports--recursiveflag to copy local files and subdirectories recursively to stage. Including glob support.snow helpers v1-to-v2now converts v1 template references to v2 in Native App artifacts that use thetemplatesprocessor.- Added
--labeloption tosnow app version createcommand to allow adding labels to versions and patches. - Enhanced
snow spcs service logscommand with new parameters for improved log retrieval and monitoring.--previous-logs: Retrieve logs from the last terminated container.--since: Start log retrieval from a specified UTC timestamp.--include-timestamps: Include timestamps in log entries for log streaming.--follow: Stream logs in real-time.--follow-interval: Set custom polling intervals during log streaming.
snow connection addsupports--no-interactiveflag to skip interactive prompts.
Fixes and improvements
snow --infocallback returns information aboutSNOWFLAKE_HOMEvariable.- Removed requirement of existence of any
requirements.txtfile for Python code execution viasnow git executecommand. Before the fix the file (even empty) was required to make the execution working. - Fixed saving of the config file updates when
connections.tomlexists. Removed incorrect copying of connections fromconnections.tomltoconfig.toml. - Fixes
snow connection generate-jwtto work with keys with no passphrase. - The privilege to create a schema or stage is no longer required to run
snow app version createif the schema and stage already exist. - Fix Windows permissions error on files created by CLI when owner is a part of custom group with granted default permissions.
v3.1.0
Deprecations
- Added deprecation warning in the description of
snow spcs service statusandsnow spcs image-repository list-tags. - Completely removed the
snow app initas it was replaced withsnow initin Snowflake CLI 3.0
New additions
- Added
snow connection generate-jwtcommand to generate JWT token for Snowflake connection. - Added
snow spcs service list-instances,snow spcs service list-containersandsnow spcs service list-rolescommands, which support fetching information about all instances/containers/service roles in a service. snow spcs service setnow supports--eai-nameto update external access integrations for a service.
Fixes and improvements
- Fixed a bug that would cause the
deploy_root,bundle_root, andgenerated_rootdirectories to be created in the current working directory instead of the project root when invoking commands with the--projectflag from a different directory. - Align variables for
snow stage|git execute. For Python files variables are stripped of leading and trailing quotes. snow spcs service list-imagesnow displays image tag and digest.- Fix
snow stage list-filesfor paths with directories. - Fix for list fields in mixins applied twice
v3.0.2
Backward incompatibility
Deprecations
New additions
Fixes and improvements
- Fixed the handling empty default values for strings by
snow snowpark deploy. - Added log error details if the
pipcommand fails. - Fix
snow git executesupport for Python files.
v3.0.1
Backward incompatibility
Deprecations
- Changing package name from
snowflake-cli-labstosnowflake-cli.Snowflake-cli-labswill be pointing to the corresponding version ofsnowflake-cli.
New additions
Fixes and improvements
v3.0.0
Backward incompatibility
- Dropped support for Python below 3.10 version.
snow object stagecommands are removed in favour ofsnow stage.snow snowpark init,snow streamlit init, andsnow app initcommands are removed in favor ofsnow initcommand.- Removed deprecated flags from
snow snowparkcommands. - Default Python version for Snowpark functions and procedures was bumped to 3.10 from 3.8.
- Snowpark commands
snow snowpark buildcreates a .zip file for each specified artifact that is a directory. Non-Anaconda dependencies are packaged once asdependencies.zip.snow snowpark deployuploads all artifacts created during build step. Dependencies zip is upload once to every Snowpark stage specified in project definition.- The changes are compatible with V1 projects definition though the result state (file layout) is different.
snow snowpark packagecommands no longer fallback to Anaconda Channel metadata when fetching available packages info fails.- Added
snow streamlit execute app-namecommand to run Streamlit apps in a Snowflake environment in headless mode.
Deprecations
- Renamed
private-key-pathflag toprivate-key-file, addedprivate-key-pathas an alias for backward compatibility.
New additions
- Added
snow spcs service execute-jobcommand, which supports creating and executing a job service in the current schema. - Added
snow app eventscommand to fetch logs and traces from local and customer app installations. - Added support for external access (api integrations and secrets) in Streamlit.
- Added support for
<% ... %>syntax in SQL templating. - Support multiple Streamlit application in single snowflake.yml project definition file.
- Added
snow helpers v1-to-v2command to migratesnowflake.ymlfile from V1 to V2. - Added
--package-entity-idand--app-entity-idoptions tosnow appcommands to allow targeting specific entities when thedefinition_versioninsnowflake.ymlis2or higher and it contains multipleapplication packageorapplicationentities. - Added templates expansion of arbitrary files for Native Apps through
templatesprocessor. - Added
SNOWFLAKE_..._PRIVATE_KEY_RAWenvironment variable to pass private key as a raw string. - Added periodic check for newest version of Snowflake CLI. When new version is available, user will be notified.
- Added support for
importsin Streamlit definition. - Add
--hostand--portto connection flags.
Fixes and improvements
- Fixed problem with whitespaces in
snow connection addcommand. - Added check for the correctness of token file and private key paths when addind a connection.
- Fix the typo in spcs service name argument description. It is the identifier of the service instead of the service pool.
- Fix error handling and improve messaging when no artifacts provided.
- Improved error message for incompatible parameters.
- Fixed SQL error when running
snow app version createandsnow app version dropwith a version name that isn't a valid Snowflake unquoted identifier - Duplicated keys in
snowflake.ymlare now detected and reported. snow streamlit deploywill check for existing streamlit instance before deploying anything.- Fixed
snow git executewith/in name of the branch. snow appcommands don't enforce ownership of the objects they manage, and rely on RBAC instead.snow app deployfor package entity now allows operating on application packages created outside the CLI- Fixes
snow connection addbehavior whenconnections.tomlfile exists. - Add more readable error messages in
snow object createcommand.
v2.8.2
Backward incompatibility
Deprecations
- Changing package name from
snowflake-cli-labstosnowflake-cli.Snowflake-cli-labswill be pointing to the corresponding version ofsnowflake-cli.
New additions
Fixes and improvements
v2.8.1
Backward incompatibility
Deprecations
New additions
Fixes and improvements
- Fixed git execute not working with upper case in directory name.
- Fixed
snow git setupcommand behaviour for fully qualified repository names. - Fixed
snow git setupcommand behaviour in case API integration or secret with default name already exists. - Fixed
snow snowpark package createcreating empty zip when package name contained capital letters.
v2.8.0
Backward incompatibility
Deprecations
- Added deprecation warning for
native_app.package.scriptsin project definition file.
New additions
- Added support for project definition file defaults in templates.
- Added support for
native_app.package.post_deployscripts in project definition file.- These scripts will execute whenever a Native App Package is created or updated.
- Currently only supports SQL scripts:
post_deploy: [{sql_script: script.sql}].
Fixes and improvements
- Fix return values of
snow snowpark list,describeanddropcommands. - Show warnings returned by Snowflake when
snow app runis successful.
v2.7.0
Backward incompatibility
Deprecations
snow snowpark initandsnow streamlit initare marked as deprecated. The commands are still functional, but should be replaced withsnow init
New additions
- Added connection option
--token-file-pathallowing passing OAuth token using a file. The function is also supported by settingtoken_file_pathin connection definition. - Support for Python remote execution via
snow stage executeandsnow git executesimilar to existing EXECUTE IMMEDIATE support. - Added support for autocomplete in
--connectionflag. - Added
snow initcommand, which supports initializing projects with external templates.
Fixes and improvements
- The
snow app runcommand now allows upgrading to unversioned mode from a versioned or release mode application installation - The
snow app teardowncommand now allows dropping a package with versions when the--forceflag is provided - The
snow app version createcommand now allows operating on application packages created outside the CLI - Added support for user stages in stage execute and copy commands
- Improved support for quoted identifiers in snowpark commands.
- Updated post_deploy SQL script default database to be the application database
- Handle
NULLmd5 values correctly when returned by stage storage backends - Regionless host URLs are now supported when generating Snowsight URLs
snow app runandsnow app deploynow correctly determine modified status for large files uploaded to AWS S3
v2.6.1
Backward incompatibility
Deprecations
New additions
Fixes and improvements
snow object createmessage returns meaningful error if connection database is not defined.- Fixed crashing when save_logs is false and log directory does not exist
v2.6.0
Backward incompatibility
Deprecations
New additions
- Add
snow object createcommand - Added support for
titlefield in Streamlit definition insnowflake.ymlproject file. - Added
--auto-compressflag tosnow stage copycommand enabling use of gzip to compress files during upload. - Added new
native_app.application.post_deploysection tosnowflake.ymlschema to execute actions after the application has been deployed viasnow app run.- Added the
sql_scripthook type to run SQL scripts with template support.
- Added the
- Added support for
--envcommand line arguments for templating.- Available for commands that make use of the project definition file.
- Format of the argument:
--env key1=value1 --env key2=value2. - Overrides
envvariables values when used in templating. - Can be referenced in templating through
ctx.env.<key_name>. - Templating will read env vars in this order of priority (highest priority to lowest priority):
- vars from
--envcommand line argument. - vars from shell environment variables.
- vars from
envsection of project definition file.
- vars from
Fixes and improvements
- Passing a directory to
snow app deploywill now deploy any contained file or subfolder specified in the application's artifact rules - Fixes markup escaping errors in
snow sqlthat may occur when users use unintentionally markup-like escape tags. - Fixed case where
snow app teardowncould not tear down orphan applications (those that have had their package dropped) - Fixed case where
snow app teardowncould leave behind orphan applications if they were not created by the Snowflake CLI - Fixed case where
snow app runcould fail to run an existing application whose package was dropped by prompting to drop and recreate the application - Improve terminal output sanitization to avoid ASCII escape codes.
- The
snow sqlcommand will show query text before executing it. - Improved stage diff output in
snow appcommands - Hid the diff from
snow app validateoutput since it was redundant - Added log into the file with loaded external plugins
- Warn users if they attempt to use templating with project definition version 1
- Improved output and format of Pydantic validation errors
- Improved support for quoted identifiers in streamlit commands.
- The
snow app runcommand will no longer override debug mode during an application upgrade unless explicitly set insnowflake.yml
v2.5.0
Backward incompatibility
Deprecations
New additions
- Added
snow app bundlecommand that prepares a local folder in the project directory with artifacts to be uploaded to a stage as part of creating a Snowflake Native App.- Snowflake Native App projects can now optionally generate CREATE FUNCTION or CREATE PROCEDURE declarations in setup scripts from Snowpark python code that includes decorators (e.g. @sproc, @udf).
- Added
snow app validatecommand that validates the setup script SQL used to create a Snowflake Native App for syntax validity, invalid object references, and best practices- Added new
native_app.scratch_stagefield tosnowflake.ymlschema to allow customizing the stage that the CLI uses to run the validation
- Added new
- Changed
snow app deployandsnow app runto trigger validation of the uploaded setup script SQL and block uploads on validation failure, pass--no-validateto disable - Changed
snow app version create --patchto require an integer patch number, aligning with what Snowflake expects - Added
snow notebookcommands:snow notebook executeenabling head-less execution of a notebook.snow notebook createproving an option to create a Snowflake Notebook from a file on stage.
- Added templating support for project definition file.
- Template variables can now be used anywhere in the project definition file.
- Added
--defaultflag tosnow connection addcommands allowing users to mark the new connection as default.
Fixes and improvements
- Fixed error handling for malformatted
config.toml - Fixed ZIP packaging of Snowpark project dependencies containing implicit namespace packages like
snowflake. - Deploying function/procedure with
--replaceflag now copies all grants - Fixed MFA caching
- Fixed
DeprerationWarning/SyntaxWarningdue to invalid escape sequences - Improved error message in
snow spcs image-registry loginwhen docker is not installed. - Improved detection of conflicts between artifact rules for native application projects
- Fixed URL generation for applications, streamlits, and notebooks that use a quoted identifier with spaces.
v2.4.0
Backward incompatibility
Deprecations
New additions
- Added the
--cascadeoption tosnow app teardowncommand that drops all application objects owned by the application. - Add external access integration to snow object commands
- Add aliases for
snow object list/describe/dropcommands under:snow stagefor stagessnow gitfor git repository stagessnow streamlitfor streamlit appssnow snowparkfor procedures and functionssnow spcs compute-poolfor compute poolssnow spcs image-repositoryfor image repositoriessnow spcs servicefor services
snow sqlworks now withsnowflake.ymlfile. The variables defined in the newenvsection ofsnowflake.ymlwill be used to expand templates.snow sqlsupport executing multiple files. Users can use-f/--fileflag more than once to execute queries from many files.snow git executeandsnow stage executesupport passing input variables for SQL execution.- Added
snow cortexcommands:complete- Given a prompt, the command generates a response using your choice of language model. In the simplest use case, the prompt is a single string. You may also provide a JSON file with conversation history including multiple prompts and responses for interactive chat-style usage.extract-answer- Extracts an answer to a given question from a text document. The document may be a plain-English document or a string representation of a semi-structured (JSON) data object.sentiment- Returns sentiment as a score between -1 to 1 (with -1 being the most negative and 1 the most positive, with values around 0 neutral) for the given English-language input text.summarize- Summarizes the given English-language input text.translate- Translates text from the indicated or detected source language to a target language.search- for integration with Cortex Search Service
- When invoked without command help is displayed by default with list of available commands.
- Add tab-completion for
snowcommand.
Fixes and improvements
- Improved support for quoted identifiers.
- Fixed creating patches with
snow app version createwhen there are 2 or more existing patches on a version - Using
--format=jsonadds trailing new line to avoid%being added by some terminals to signal no new line at the end of output. - Fixed
--interactiveflag to be enabled by default in interactive environments and added the--no-interactiveflag to be able to turn off prompting.
v2.3.1
Backward incompatibility
Deprecations
New additions
Fixes and improvements
- Fixed bugs in source artifact mapping logic for native applications
v2.3.0
Backward incompatibility
Deprecations
New additions
- New
snow sqlfunctionality:-D/--variableallows variable substitutions in a SQL input (client-side query templating)
- New
snow app deployfunctionality:- Passing files and directories as arguments syncs these only:
snow app deploy some-file some-dir. --recursivesyncs all files and subdirectories recursively.--prunedeletes specified files from the stage if they don't exist locally.
- Passing files and directories as arguments syncs these only:
Fixes and improvements
- More human-friendly errors in case of corrupted
config.tomlfile. - Fixed a bug in
snow appthat caused files to be re-uploaded unnecessarily. - Optimize snowpark dependency search to lower the size of .zip artifacts and the number of anaconda dependencies for snowpark projects.
- Added support for fully qualified stage names in stage and git execute commands.
- Fixed a bug where
snow app runwas not upgrading the application when the local state and remote stage are identical (for example immediately aftersnow app deploy). - Fixed handling of stage path separators on Windows
- Change to
external_access_integrationsinsnowflake.ymlnow also triggers function replace - The
--infocallback returns info about configured feature flags.
v2.2.0
Backward incompatibility
Deprecations
snow snowpark package lookupno longer performs check against PyPi. Using--pypi-downloador--yeshas no effect and will cause a warning. In this way the command has single responsibility - check if package is available in Snowflake Anaconda channel.snow snowpark package create:--pypi-downloador--yesflags are deprecated, have no effect and will cause a warning.createcommand always checks against PyPi.--allow-native-librariesis deprecated in favour of boolean flag--allow-shared-libraries. Using old flag will cause a warning.
snow snowpark build:--pypi-downloadflag is deprecated, have no effect and will cause a warning. Build command always check against PyPi.--check-anaconda-for-pypi-deptsis deprecated and using it will cause warning, the functionality is replaced by--ignore-anaconda--package-native-librariesis deprecated and using it will cause warning, the functionality is replaced by--allow-shared-libraries
snow object stagecommands are deprecated and using them will cause a warning. Functionality is replaced bysnow stagecommands.
New additions
- Added support for fully qualified name (
database.schema.name) innameparameter in streamlit project definition - Added support for fully qualified image repository names in
spcs image-repositorycommands. - Added
--if-not-existsoption tocreatecommands forservice, andcompute-pool. Added--replaceand--if-not-existsoptions forimage-repository create. - Added support for python connector diagnostic report.
- Added
snow app deploycommand that creates an application package and syncs the local changes to the stage without creating or updating the application. - Added
is_defaultcolumn tosnow connection listoutput to highlight default connection. snow snowpark package create:- new
--ignore-anacondaflag disables package lookup in Snowflake Anaconda channel. All dependencies will be downloaded from PyPi. - new
--skip-version-checkskips comparing versions of dependencies between requirements and Anaconda. - new
--index-urlflag sets up Base URL of the Python Package Index to use for package lookup.
- new
snow snowpark build:- new
--skip-version-checkskips comparing versions of dependencies between requirements and Anaconda. - new
--index-urlflag sets up Base URL of the Python Package Index to use for package lookup.
- new
- Added
--recursiveflag for copy from stage, it will reproduce the directory structure locally. - Added support for snowgit. New commands:
snow git setup- wizard setting up a git repository stage and creating all necessary objectssnow git fetch- fetches latest changes from the origin repository into Snowflake repositorysnow git list-branches- lists all branches in the repositorysnow git list-tags- lists all tags in the repositorysnow git list-files- lists all files on provided branch/tag/commitsnow git copy- copies files from provided branch/tag/commit into stage or local directorysnow git execute- execute immediate files from repository
- Added command for execute immediate
snow object stage execute - Fetching available packages list from Snowflake instead of directly from Anaconda with fallback to the old method (for backward compatibility).
As the new method requires a connection to Snowflake, it adds connection options to the following commands:
snow snowpark buildsnow snowpark package lookupsnow snowpark package create
Fixes and improvements
- Adding
--image-nameoption for image name argument inspcs image-repository list-tagsfor consistency with other commands. - Fixed errors during
spcs image-registry loginnot being formatted correctly. - Project definition no longer accept extra fields. Any extra field will cause an error.
- Changing imports in function/procedure section in
snowflake.ymlwill cause the definition update on replace - Adding
--patternflag tostage list-filescommand for filtering out results with regex. - Fixed snowpark build paths for builds with --project option (fixed empty zip issue).
- More clear error messages in
snow snowpark buildcommand - Adding support for any source supported by
pipinsnow snowpark. - Fixed version parsing for packages lookup on Snowflake Anaconda Channel
- Fix handling database/schema/role identifiers containing dashes
- Fix schema override bug in
snow connection test - Hidden incorrectly working config permissions warning on Windows
- Make errors from
snow connection testmore meaningful when role, warehouse or database does not exist.
v2.1.2
Fixes and improvements
- Add
pipas Snowflake-cli dependency - Optimize
connection testcommand - Fix venv creation issues in
snowpark package createandsnowpark buildcommand
v2.1.1
Fixes and improvements
- Improved security of printing connection details in
snow connection list. - Improved parsing of non-quoted scalar values within square brackets in
manifest.ymlin Native App projects.
v2.1.0
Backward incompatibility
New additions
-
Added ability to specify scope of the
object listcommand with the--in <scope_type> <scope_name>option. -
Introduced
snowflake.cli.api.console.cli_consoleobject with helper methods for intermediate output. -
Added new
--mfa-passcodeflag to support MFA. -
Added possibility to specify
databaseandschemain snowflake.yml for snowpark objects. Alsonamecan specify a fully qualify name. -
New commands for
spcs- Added
image-registry urlcommand to get the URL for your account image registry. - Added
image-registry logincommand to fetch authentication token and log in to image registry in one command. - Added
image-repository url <repo_name>command to get the URL for specified image repository. - Added
createcommand forimage-repository. - Added
status,set (property),unset (property),suspendandresumecommands forcompute-pool. - Added
set (property),unset (property),upgradeandlist-endpointscommands forservice.
- Added
-
You can now use github repo link in
snow snowpark package createto prepare your code for upload -
Added
allow-native-librariesoption tosnow snowpark package createcommand -
Added alias
--install-from-pipfor-yoption insnow snowpark package createcommand -
Connections parameters are also supported by generic environment variables:
SNOWFLAKE_ACCOUNTSNOWFLAKE_USERSNOWFLAKE_PASSWORDSNOWFLAKE_DATABASESNOWFLAKE_SCHEMASNOWFLAKE_ROLESNOWFLAKE_WAREHOUSESNOWFLAKE_MFA_PASSCODE
-
Introduced
--pypi-downloadflag forsnow snowpark packagecommands to replace-yand--yesThe
SNOWFLAKE_CONNECTION_<NAME>_<KEY>variable takes precedence before the generic flag. For example ifSNOWFLAKE_PASSWORDandSNOWFLAKE_CONNECTIONS_FOO_PASSWORDare present and user tries to use connection "foo" then the later variable will be used. -
Testing connection using
snow connection testvalidates also access to database, schema, role and warehouse specified in the connection details. -
Added
snow connection set-defaultcommand for changing default connection.
Fixes and improvements
- Restricted permissions of automatically created files
- Fixed bug where
spcs service createwould not throw error if service with specified name already exists. - Improved package lookup, to avoid unnecessary uploads
- Logging into the file by default (INFO level)
- Added validation that service, compute pool, and image repository names are unqualified identifiers.
spcs servicecommands now accept qualified names.- Updated help messages for
spcscommands.
v2.0.0
Backward incompatibility
-
Introduced
snow objectgroup withlist,describeanddropcommands which replaces corresponding functionalities of procedure/function/streamlit specific commands. -
snow stageis nowsnow object stage -
snow stage getandsnow stage putare replaced bysnow object stage copy [FROM] [TO] -
snow warehouse statusis nowsnow object list warehouse -
snow connection testnow outputs all connection details (except for the password), along with connection status -
snow sqlrequires explicit-iflag to read input from stdin:cat my.sql | snow sql -i -
Switched to Python Connector default connection https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-connect#setting-a-default-connection
- Default connection name changed from
devtodefault - Environment variable for default connection name changed from
SNOWFLAKE_OPTIONS_DEFAULT_CONNECTIONtoSNOWFLAKE_DEFAULT_CONNECTION_NAME
- Default connection name changed from
-
Snowpark changes
- Removed
procedureandfunctionsubgroups. - Removed
snow snowpark function packageandsnow snowpark procedure packagein favour ofsnow snowpark build. - Removed
snow snowpark function createandsnow snowpark function update. Functions can be deployed usingsnow snowpark deploy. - Removed
snow snowpark procedure createandsnow snowpark procedure update. Procedures can be deployed usingsnow snowpark deploy. - Procedures and functions use single zip artifact for all functions and procedures in project.
- Changed path to coverage reports on stage, previously created procedures with coverage will not work, have to be recreated.
- Previously created procedures or functions won't work with
deploycommand due to change in stage path of artifact. Previous code will remain under old path on stage. - Package commands are now under
snow snowpark package. - Coverage commands were removed. To measure coverage of your procedures or functions use coverage locally.
- Removed
-
Snowpark Containers services commands
cpalias forcompute-poolcommands was removed.servicescommands were renamed toserviceregistrycommands were renamed toimage-registrycompute-pool,service, andimage-registrycommands were moved fromsnowparkgroup to a newspcsgroup.snow spcs compute-pool createandsnow spcs service createhave been updated with new options to match SQL interface.- Added new
image-repositorycommand group underspcs. Movedlist-imagesandlist-tagsfromimage-registrytoimage-repository. - Removed
snow snowpark jobscommand. list-imagesandlist-tagsnow outputs image names with a slash at the beginning (e.g. /db/schema/repo/image). Image name input tolist-tagsrequires new format.snow spcs compute-pool stophas been removed in favor ofsnow spcs compute-pool stop-all.
-
Streamlit changes
snow streamlit deployis requiringsnowflake.ymlproject file with a Streamlit definition.snow streamlit describeis nowsnow object describe streamlitsnow streamlit listis nowsnow object list streamlitsnow streamlit dropis nowsnow object drop streamlit
New additions
- Added
snow streamlit get-url [NAME]command that returns url to a Streamlit app. --temporary-connectionflag, that allows you to connect, without anything declared in config file- Added project definition for Streamlit
- Added
snow streamlit get-url [NAME]command that returns url to a Streamlit app. - Added project definition for Snowpark procedures and functions.
- The
snowflake.ymlfile is required to deploy functions or procedures. - Introduced new
deploycommand for project with procedures and functions. - Introduced new
buildcommand for project with procedure and functions
- The
- Added support for external access integration for functions and procedures
- Added support for runtime version in snowpark procedures ad functions.
- You can include previously uploaded packages in your functions, by listing them under
importsinsnowflake.yml - Added more options to
snow connection add- now you can also specify authenticator and path to private key - Added support for native applications by introducing new commands.
snow app initcommand that creates a new Native App project from a git repository as a template.snow app version createcommand that creates or upgrades an application package and creates a version or patch for that package.snow app version dropcommand that drops a version associated with an application package.snow app version listcommand that lists all versions associated with an application package.snow app runcommand that creates or upgrades an application in development mode or through release directives.snow app opencommand that opens the application inside of your browser on Snowsight, once it has been installed in your account.snow app teardowncommand that attempts to drop both the application and package as defined in the project definition file.
- Snowpark: add
defaultfield to procedure and function arguments definition insnowflake.ymlto support named and optional arguments
Fixes and improvements
- Allow the use of quoted identifiers in stages
v1.2.5
Fixes and improvements
- Import git module only when is needed
v1.2.4
Fixes and improvements
- Fixed look up for all folders in downloaded package.
v1.2.3
Fixes and improvements
- Removed hardcoded values of instance families for
snow snowpark pool createcommand.
v1.2.2
Fixes and improvements
- Fixed parsing of commands and arguments lists in specifications of snowpark services and jobs
v1.2.1
Fixes and improvements
- Fix homebrew installation
v1.2.0
Backward incompatibility
- Removed
snow streamlit createcommand. Streamlit can be deployed usingsnow streamlit deploy - Removed short option names in compute pool commands:
-nfor--name, name of compute pool-dfor--num, number of pool's instances-ffor--family, instance family
- Renamed long options in Snowpark services commands:
--compute_poolis now--compute-pool--num_instancesis now--num-instances--container_nameis now--container-name
New additions
snow streamlit initcommand that creates a new streamlit project.snow streamlit deploysupport pages and environment.yml files.- Support for private key authentication
Fixes and improvements
- Adjust streamlit commands to PuPr syntax
- Fix URL to streamlit dashboards
v1.1.1
Backward incompatibility
- Removed short version
-pof--passwordoption.
New additions
- Added commands:
snow snowpark registry list-imagessnow snowpark registry list-tags
Fixes and improvements
- Too long texts in table cells are now wrapped instead of cropped
- Split global options into separate section in
help - Avoiding unnecessary replace in function/procedure update
- Added global options to all commands
- Updated help messages
- Fixed problem with Windows shortened paths
- If only one connection is configured, will be used as default
- Fixed registry token connection issues
- Fixes in commands belonging to
snow snowpark compute-poolandsnow snowpark servicesgroups - Removed duplicated short option names in a few commands by:
- Removing
-pshort option for--passwordoption for all commands (backward incompatibility affecting all the commands using a connection) (it was conflicting with various options in a few commands) - Removing
-ashort option for--replace-alwaysinsnow snowpark function updatecommand (it was conflicting with short version of--check-anaconda-for-pypi-deps) - Removing
-cshort option for--compute-poolinsnow snowpark jobs create(it was conflicting with short version of global--connectionoption) - Removing
-cshort option for--container-nameinsnow snowpark jobs logs(it was conflicting with short version of global--connectionoption)
- Removing
- Fixed parsing of specs yaml in
snow snowpark services createcommand