NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4782 most downloaded on PyPI
Snowflake CLI
Last release 10 days ago
24 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 44 of 44 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
44 releases · first in 2024
One column per month.
snow feature is now available in preview. This command group manages declarative feature-store objects in Snowflake ( init , sync , plan , apply , lis
snow feature is now available in preview. This command group manages declarative feature-store objects in Snowflake (init, sync, plan, apply, list, describe, online-service (status/create/drop), ingest, query). It is hidden by default; enable it with the ENABLE_FEATURE_STORE feature flag (SNOWFLAKE_CLI_FEATURES_ENABLE_FEATURE_STORE=true or [cli.features] enable_feature_store = true in config.toml). It requires the snowflake-ml-python[feature_store] library.snow dbt deploy accepts --env-file-dir, which injects an env.yml from outside the project source into the deployed project root, and --default-env / --unset-default-env, which set or clear the environment block from env.yml that the project compiles and executes with by default. snow dbt execute accepts --env to select an environment at execution time (NO_ENV skips env.yml entirely), --env-vars to override individual variables with a YAML/JSON object of uppercase DBT_* keys and string values, and --use-shell-env-vars to forward exported DBT_* shell variables, which --env-vars overrides on collision. Variables passed either way appear in the query text and query history, so keep credentials in the secrets: block of env.yml instead.snow dbt deploy accepts --default-writeback / --no-default-writeback and --auto-compile / --no-auto-compile, which set and persist on the project whether results are written back and whether it is compiled on deploy; omit them to leave the existing setting unchanged. snow dbt execute accepts --writeback / --no-writeback to override writeback for a single run (place it before the dbt command).snow dbt execute are now generally available. The repeatable --import option adds an IMPORTS clause to the run; each value is a stage path (@stage/s1), a snow://dbt project URL, or one of the SYSTEM$DBT_GET_LAST_RUN_TARGET, SYSTEM$DBT_GET_LAST_SUCCESSFUL_RUN_TARGET, SYSTEM$DBT_GET_LAST_FAILED_RUN_TARGET, or SYSTEM$LOCATE_DBT_ARTIFACTS functions, optionally aliased to a target folder with as <folder>.cli.output_format in config.toml or the SNOWFLAKE_CLI_OUTPUT_FORMAT environment variable (TABLE, JSON, JSON_EXT, or CSV). --format on the command still overrides it.snow spcs service remote-build, remote-build-status, and remote-build-history are now generally available.snow dbt deploy now also accepts --git-url, recording the repository URL in the project's last_deployed_from metadata alongside --git-commit/--git-branch. Like those flags, it is auto-detected from the GitHub Actions environment (GITHUB_SERVER_URL/GITHUB_REPOSITORY) when not explicitly specified.snow dbt execute now accepts the source, docs, clean, debug, ls, and deps_compile commands (for example snow dbt execute <project> source freshness and snow dbt execute <project> docs generate), matching the set of commands the Snowflake backend already supports. These previously failed with a CLI "No such command" error even though the server accepted them.snow helpers clean-installer-path cleans up the PATH entries that older macOS installers left behind in shell startup files, which can keep an outdated snow ahead of the current one. It reports what it would remove by default; --apply removes the entries and backs up every file it changes.grants: entry in snowflake.yml now accepts user: in place of role:, so snow streamlit deploy can grant an app to an individual user (UBAC) as well as to a role. Each entry needs exactly one of the two.snow sql now reports Time Elapsed: <seconds>s after each synchronous SQL submission in the interactive REPL, including the time needed to display results.dcm plugin, assets defined in the manifest file are uploaded. assets: is a mapping of names to either path (one file, directory, or glob) or paths (a list of them), all relative to the project root.snowflake.yml accepts a sharing: list, each entry naming a role: or a user: and optionally with_grant_option: true. snow streamlit deploy grants USAGE on the app to every entry. This is the key Snowsight Workspaces already writes when an app is shared there, which the CLI previously rejected as an unsupported field.grants: is the canonical spelling and sharing: the older one; a sharing: entry means the same as a grants: entry whose privilege is USAGE. Writing the same grant under both keys deploys it once rather than failing, comparing names the way Snowflake resolves them.snow streamlit share accepts --to-user, sharing the app with an individual user (UBAC) rather than a role. Repeat the option to share with several users. The share is also recorded under the matching entity's grants: in snowflake.yml, so the next snow streamlit deploy keeps it. The role argument stays positional, so existing invocations are unaffected.snow streamlit share accepts --with-grant-option, so the grantee can share the app onward.snow streamlit share accepts --grant-location-usage, which also grants the grantee USAGE on the database and schema holding the app. A refusal is reported as a warning and the app grant stands, since it does not depend on those.grants: entry in snowflake.yml accepts with_grant_option: true, so a project file can record a share the grantee may pass on, and snow streamlit deploy issues it as GRANT ... WITH GRANT OPTION.externalbrowser or OAuth authorization-code authentication, commands that never touch Snowflake — such as snow connection list, snow app bundle, and snow sql --help — no longer open a browser tab, and no longer hang in headless or CI runs waiting for one that cannot appear.cli.stage_upload_workers) is now 32, up from 16. This speeds up every command that uploads a directory tree to a stage — snow stage copy --recursive, snow dcm deploy, snow dcm plan, snow dbt deploy, snow spcs service build-image — by roughly 16-28% on trees with many nested folders. Set cli.stage_upload_workers (or SNOWFLAKE_CLI_STAGE_UPLOAD_WORKERS) to restore the previous value.grants: are quoted only where SQL requires it, so a role or user whose name is not a bare identifier — an email address, for instance — no longer produces a syntax error.privilege: in grants: is now validated: it must be a privilege name — one or more unquoted-identifier words, such as USAGE or IMPORTED PRIVILEGES. Anything else is rejected before the project file is used.role: or user: in grants: is now treated as absent and reported, rather than emitted as a quoted blank name.snow --info now reports installation_source (pypi, binary, or snowflake-managed) so support and agents can see how the CLI was installed. snow --version is unchanged..pkg installer no longer appends export PATH= to every user startup file on each upgrade. A machine-wide install (including Homebrew Cask) writes /etc/paths.d/snowflake-cli and an install under /Users/<name>/ adds one marked PATH block to .zprofile for zsh or updates the first existing login profile (.bash_profile, .bash_login, or .profile) for bash. Duplicate lines from older installers stay until you remove them yourself.snow sql REPL (and one-shot snow sql that only scheduled async queries) now completes as a successful command, so the upgrade banner may appear on exit, matching other snow commands.snow streamlit deploy now rejects a runtime_name in snowflake.yml that the CLI does not recognize, rather than dropping it from the DDL and deploying
snow streamlit deploy now rejects a runtime_name in snowflake.yml that the CLI does not recognize, rather than dropping it from the DDL and deploying onto whichever runtime the account defaults to. Supported values are SYSTEM$ST_CONTAINER_RUNTIME_PY3_11 and SYSTEM$WAREHOUSE_RUNTIME, matched ignoring case and surrounding whitespace.runtime_name or compute_pool is now an error, where both were previously treated as unset and deployed. Omit the key entirely instead.runtime_name that was previously accepted and ignored now takes effect, including on apps that already exist. If a deployed app runs on a different runtime than snowflake.yml specifies, the next snow streamlit deploy issues ALTER STREAMLIT ... SET RUNTIME_NAME and moves it, so review runtime_name in existing project files before upgrading.SYSTEM$WAREHOUSE_RUNTIME keeps whatever compute pool it had, since there is no way to detach one, but Snowflake ignores the property for that runtime so the leftover has no effect.snow snowpark build now collects a project's dependencies from pyproject.toml when the project has no requirements.txt, so snow snowpark deploy picks them up as before. The dependencies key of the PEP 621 [project] table is read; optional dependencies (extras) are not. A project that has a requirements.txt still builds from it, and pyproject.toml is then ignored; the build says so when pyproject.toml also declares [project] dependencies. Dependencies declared as dynamic metadata (dynamic = ["dependencies"]) cannot be resolved and are reported as such.config.toml/connections.toml. Large config files were parsed in seconds and re-parsed several times per command, adding noticeable startup latency to every snow invocation; parsing is now effectively instant regardless of file size.snow streamlit deploy now includes runtime_name from snowflake.yml in the generated CREATE STREAMLIT DDL; previously only SYSTEM$ST_CONTAINER_RUNTIME_PY3_11 reached it and every other value was dropped without a warning. This matters now that BCR-2342 makes the container runtime the default, since an app requesting the warehouse runtime was created on the container runtime instead.snow streamlit deploy matches a recognized runtime_name ignoring case and surrounding whitespace, then emits it in canonical form, so project-file formatting no longer reaches the DDL. compute_pool is trimmed the same way.snow streamlit deploy now accepts SYSTEM$ST_CONTAINER_RUNTIME_PY3_11 without a compute_pool, since Snowflake supplies a default pool, and accepts compute_pool without a runtime_name by inferring the container runtime. Both were previously rejected.snow streamlit deploy omits COMPUTE_POOL when runtime_name is SYSTEM$WAREHOUSE_RUNTIME, which does not run on a pool, and warns that the pool is ignored.snow streamlit deploy now warns rather than staying silent when --legacy or a ROOT_LOCATION deployment cannot carry the requested runtime_name, and when a redeploy moves a running app onto a different runtime.snow streamlit deploy --replace of an existing versioned SPCS v2 app now restarts the running Streamlit service after uploading files, so content-only updates show up without a Snowsight restart. First-time deploys, CREATE OR REPLACE conversions, and --legacy deploys are unchanged. Warehouse runtimes and no-op uploads (no file changes) are also unchanged.snow streamlit deploy now rejects a runtime_name in snowflake.yml that the CLI does not recognize, rather than dropping it from the DDL and deploying onto whichever runtime the account defaults to. Supported values are SYSTEM$ST_CONTAINER_RUNTIME_PY3_11 and SYSTEM$WAREHOUSE_RUNTIME, matched ignoring case and surrounding whitespace.runtime_name or compute_pool is now an error, where both were previously treated as unset and deployed. Omit the key entirely instead.runtime_name that was previously accepted and ignored now takes effect, including on apps that already exist. If a deployed app runs on a different runtime than snowflake.yml specifies, the next snow streamlit deploy issues ALTER STREAMLIT ... SET RUNTIME_NAME and moves it, so review runtime_name in existing project files before upgrading.SYSTEM$WAREHOUSE_RUNTIME keeps whatever compute pool it had, since there is no way to detach one, but Snowflake ignores the property for that runtime so the leftover has no effect.snow sql REPL accepts an opt-in custom prompt via --prompt-format or a quoted cli.prompt_format string in config.toml. The default remains unchanged at >. Supported placeholders are [user], [host], [account], [role], [warehouse], [database], [schema], and [connection]; they match ignoring case ([USER] is the same as [user]). \n is a newline; \[, \], and \\ are literal [, ], and \. Unrecognised [...] tokens are dropped from the prompt and reported with a warning when the REPL starts, rather than rendered as literal text; this reserves the [...] namespace for later extensions. Colour directives such as [#rrggbb] and [bg:#rrggbb] are part of that namespace and are dropped in this version.snow snowpark build now collects a project's dependencies from pyproject.toml when the project has no requirements.txt, so snow snowpark deploy picks them up as before. The dependencies key of the PEP 621 [project] table is read; optional dependencies (extras) are not. A project that has a requirements.txt still builds from it, and pyproject.toml is then ignored; the build says so when pyproject.toml also declares [project] dependencies. Dependencies declared as dynamic metadata (dynamic = ["dependencies"]) cannot be resolved and are reported as such.snow spcs service metrics now reads both the legacy event-table metric schema and the next-gen event table schema (record.name and tagged {"int_value"|"double_value"} values). Previously the command failed with Error processing metric row. against accounts whose EVENT_TABLE had been migrated to SNOWFLAKE.TELEMETRY.DATA.snow spcs service metrics now works against accounts whose event table has been migrated to the next-gen schema. Previously the command failed with Error processing metric row. on such accounts.config.toml/connections.toml. Large config files were parsed in seconds and re-parsed several times per command, adding noticeable startup latency to every snow invocation; parsing is now effectively instant regardless of file size.snow streamlit deploy now includes runtime_name from snowflake.yml in the generated CREATE STREAMLIT DDL; previously only SYSTEM$ST_CONTAINER_RUNTIME_PY3_11 reached it and every other value was dropped without a warning. This matters now that BCR-2342 makes the container runtime the default, since an app requesting the warehouse runtime was created on the container runtime instead.snow streamlit deploy matches a recognized runtime_name ignoring case and surrounding whitespace, then emits it in canonical form, so project-file formatting no longer reaches the DDL. compute_pool is trimmed the same way.snow streamlit deploy now accepts SYSTEM$ST_CONTAINER_RUNTIME_PY3_11 without a compute_pool, since Snowflake supplies a default pool, and accepts compute_pool without a runtime_name by inferring the container runtime. Both were previously rejected.snow streamlit deploy omits COMPUTE_POOL when runtime_name is SYSTEM$WAREHOUSE_RUNTIME, which does not run on a pool, and warns that the pool is ignored.snow streamlit deploy now warns rather than staying silent when --legacy or a ROOT_LOCATION deployment cannot carry the requested runtime_name, and when a redeploy moves a running app onto a different runtime.snow streamlit deploy --replace of an existing versioned SPCS v2 app now restarts the running Streamlit service after uploading files, so content-only updates show up without a Snowsight restart. First-time deploys, CREATE OR REPLACE conversions, and --legacy deploys are unchanged. Warehouse runtimes and no-op uploads (no file changes) are also unchanged.snow connection test --enable-diag now appends SnowCD -style per-endpoint connectivity checks (health, latency, certificate info, and an effective net
snow connection test --enable-diag now appends SnowCD-style per-endpoint connectivity checks (health, latency, certificate info, and an effective network policy summary) to the existing SnowflakeConnectionTestReport.txt. Stdout is unchanged. Pass --print-diag with --enable-diag to print that same report to stdout. Replaces the end-of-life SnowCD tool.app.yml (version 2) for Snowflake App Runtime projects is now generally available, and no longer needs a feature flag. snow app setup creates an app.yml for new projects. Existing snowflake.yml projects keep working as before.snow dbt deploy is now available. --git-commit and --git-branch record the source commit and branch in the project's last_deployed_from metadata. These values will also be auto-detected from GitHub Actions environments if no explicit flags are specified.snow app deploy for Snowflake App Runtime projects now explains a failure while preparing code storage in terms of the statement that actually failed. A missing database or schema is reported as such instead of as a missing privilege, a privilege error names only the grant that statement needs, and a rejected stage encryption type is named explicitly.snow app deploy for Snowflake App Runtime projects no longer surfaces a raw connector traceback when uploading code fails. The error now names the stage or workspace being written to, how many files had already uploaded, and what to do next. Failed file transfers, which were previously not caught at all, are reported the same way.snow helpers detect-encoding now detects when the Windows console isn't configured for UTF-8 output (independent of the CLI's own encoding settings) and points the user at the fix — chcp.com 65001 for cmd.exe/Git Bash, or the docs for PowerShell 5.x. The CLI's startup encoding warning surfaces the same note, but only when it isn't already warning about a Python encoding mismatch — run snow helpers detect-encoding for the full picture.snow app deploy for Snowflake App Runtime projects no longer needs OWNERSHIP on the code stage and CREATE STAGE on the schema to redeploy. The upload used to start by dropping the stage and creating it again, so a role holding only WRITE could deploy once and then never again — and a role allowed to drop the stage but not create one lost the stage entirely. The stage is now only dropped when the deploying role can also recreate it; otherwise its contents are cleared, with a warning that files deleted from the project since the last deploy may survive on the stage.snow app setup leaves code_stage/code_workspace out of app.yml, and snow app deploy provisions a temporary <app>_CODE stage (or a <app>_CODE workspace for personal databases, which don't support stages) just for the build and drops it once the build finishes. Because the name is derived from the app, --build-only can still find and drop what --upload-only created. Set code_stage or code_workspace in app.yml to keep a persisted stage/workspace instead.snow helpers check-version failing with "Could not determine the latest Snowflake CLI version" when the local version cache file was corrupted. A corrupted or unreadable cache now falls back to a live network fetch instead of silently returning nothing.--help, --version, and --info).snow connection add now supports --client-store-temporary-credential , which writes client_store_temporary_credential = true to the new connection in
snow connection add now supports --client-store-temporary-credential, which writes client_store_temporary_credential = true to the new connection in config.toml.snow sql --local-only default can now be set via the SNOWFLAKE_CLI_SQL_LOCAL_ONLY environment variable. When unset, the default remains false.snow app events now accepts --instance <N> (Snowflake App Runtime only) to retrieve live container logs from a specific service instance. Useful when horizontal scaling is active and more than one instance is running. Defaults to instance 0 when the flag is omitted.snow app commands now support an app.yml (version 2) for Snowflake App Runtime projects; when present it drives the flow instead of snowflake.yml (the Native App flow is unchanged). Its targets block declares named per-environment deployments, and a new --target flag on deploy, open, events, teardown, and validate selects which one to use. snow app deploy runs an upload → build → deploy pipeline that can be limited to a single phase with --upload-only, --build-only, or --promote-only.dbt_projects_profiles.yml support in snow dbt deploy is now generally available. When the profiles directory contains a dbt_projects_profiles.yml, it takes precedence over profiles.yml and is staged into the deployed project under its own name. The profiles directory is the one given by --profiles-dir, or the project root when that option is omitted, so projects that already contain a dbt_projects_profiles.yml alongside profiles.yml will now deploy with the former and emit a warning.snow app command no longer fails because it could not clean up after itself. If a leftover file cannot be deleted — common on Windows, where an editor or antivirus can be holding it — the command still succeeds and warns which directory was left behind. When the bundle directory cannot be cleared before bundling, the command now stops with an explanation of what to do instead of a permissions error.snow app commands no longer delete anything in a Snowflake App Runtime project's output directory apart from the bundle they created there. A project that keeps its own build results, exports or notebook output under output lost them to a command that only meant to bundle.snow app events for Snowflake App Runtime projects can now return more events by requesting a higher --last value.snow app deploy with workspace-backed storage now builds from versions/live/ (the current working state) instead of the last committed version. In the Workspaces editor, files auto-save to the live version continuously — reading versions/last during the build phase caused stale content to be deployed when running from a live workspace session.snow dcm preview, snow dcm refresh, and snow dcm test--helpenable_dcm_preview_features CLI feature flag is enabled, so they nosnow dcm --help without an explicit opt-in.snow dcm plan now tracks the server's own progress, like snow dcm deploy already does: its RENDER, COMPILE and PLAN steps advance as the backend reports each phase. Previously RENDER and COMPILE completed instantly and the rest of the run showed as a single PLAN spinner.snow dcm deploy, snow dcm plan and snow dcm purge no longer require an active warehouse. Progress tracking read the result with RESULT_SCAN, which requires a warehouse.snow dcm deploy, snow dcm plan and snow dcm purge now wrap a change line too wide for the terminal, with its continuation aligned under the change instead of breaking back to the left margin. The file list shown while uploading uses the same tree guides as the changeset.snow streamlit deploy --replace: fixed a crash when replacing a legacy ROOT_LOCATION Streamlit app with a versioned deployment.GitPython from 3.1.57 to 3.1.58.snow connection add now supports --client-store-temporary-credential, which writes client_store_temporary_credential = true to the new connection in config.toml.snow sql --local-only default can now be set via the SNOWFLAKE_CLI_SQL_LOCAL_ONLY environment variable. When unset, the default remains false.snow app events now accepts --instance <N> (Snowflake App Runtime only) to retrieve live container logs from a specific service instance. Useful when horizontal scaling is active and more than one instance is running. Defaults to instance 0 when the flag is omitted.snow app commands now support an app.yml (version 2) for Snowflake App Runtime projects; when present it drives the flow instead of snowflake.yml (the Native App flow is unchanged). Its targets block declares named per-environment deployments, and a new --target flag on deploy, open, events, teardown, and validate selects which one to use. snow app deploy runs an upload → build → deploy pipeline that can be limited to a single phase with --upload-only, --build-only, or --promote-only.dbt_projects_profiles.yml support in snow dbt deploy is now generally available. When the profiles directory contains a dbt_projects_profiles.yml, it takes precedence over profiles.yml and is staged into the deployed project under its own name. The profiles directory is the one given by --profiles-dir, or the project root when that option is omitted, so projects that already contain a dbt_projects_profiles.yml alongside profiles.yml will now deploy with the former and emit a warning.snow app command no longer fails because it could not clean up after itself. If a leftover file cannot be deleted — common on Windows, where an editor or antivirus can be holding it — the command still succeeds and warns which directory was left behind. When the bundle directory cannot be cleared before bundling, the command now stops with an explanation of what to do instead of a permissions error.snow app commands no longer delete anything in a Snowflake App Runtime project's output directory apart from the bundle they created there. A project that keeps its own build results, exports or notebook output under output lost them to a command that only meant to bundle.snow app deploy for Snowflake App Runtime projects now retries a file upload that fails while transferring to cloud storage, instead of failing the whole deploy on the first network blip. Errors the server returned about the statement itself, such as a missing stage or a missing privilege, are not retried.snow app deploy with workspace-backed storage no longer fails with an "object already exists" error when the workspace already has a live version. That is the normal state on every deploy after the first, and only one of the two error codes the server can return for it was being tolerated.snow app events for Snowflake App Runtime projects can now return more events by requesting a higher --last value.snow app deploy with workspace-backed storage now builds from versions/live/ (the current working state) instead of the last committed version. In the Workspaces editor, files auto-save to the live version continuously — reading versions/last during the build phase caused stale content to be deployed when running from a live workspace session.snow dcm preview, snow dcm refresh, and snow dcm test
commands are not yet generally available. They are now hidden from --help
unless the enable_dcm_preview_features CLI feature flag is enabled, so they no
longer appear in snow dcm --help without an explicit opt-in.snow dcm plan now tracks the server's own progress, like snow dcm deploy already does: its RENDER, COMPILE and PLAN steps advance as the backend reports each phase. Previously RENDER and COMPILE completed instantly and the rest of the run showed as a single PLAN spinner.snow dcm deploy, snow dcm plan and snow dcm purge no longer require an active warehouse. Progress tracking read the result with RESULT_SCAN, which requires a warehouse.snow dcm deploy, snow dcm plan and snow dcm purge now wrap a change line too wide for the terminal, with its continuation aligned under the change instead of breaking back to the left margin. The file list shown while uploading uses the same tree guides as the changeset.snow streamlit deploy --replace: fixed a crash when replacing a legacy ROOT_LOCATION Streamlit app with a versioned deployment.snow snowpark deploy now sends only the packages an entity declares for its artifact repository in the object's PACKAGES clause. Packages that snow snowpark build resolved from the Anaconda channel were merged into the same clause, so a project using artifact_repository alongside a requirements.txt could fail to deploy with the same package requested at two versions, or ask the artifact repository for a package that only exists in Anaconda. The command now warns when it leaves those packages out. An entity using an artifact repository therefore has to declare every package it needs — snowflake-snowpark-python included — under its artifact_repository_packages or packages; a project that deployed only because the Anaconda-resolved packages were merged into the clause will fail until they are declared in snowflake.yml.GitPython from 3.1.57 to 3.1.58.DCM projects: the --env-file / -e option for sourcing declared templating.env_vars / templating.env_secrets values from a .env file is not yet general
--env-file/-e option for sourcing declaredtemplating.env_vars/templating.env_secrets values from a .env file is--help unless theenable_dcm_project_env_vars CLI feature flag is enabled. This fixes a bugsnow app commands for Snowflake App Runtime projects now always operate on APPLICATION SERVICE objects and no longer fall back to plain SPCS SERVICE o
snow app commands for Snowflake App Runtime projects now always operate on APPLICATION SERVICE objects and no longer fall back to plain SPCS SERVICE objects. snow app open --settings always uses the app-service Snowsight URL segment, and snow app teardown always drops and verifies the app via APPLICATION SERVICE. Apps still deployed as legacy SPCS services are no longer supported by these commands.--validation-profile to snow spcs service remote-build (e.g. ML_JOB, NOTEBOOK). The value is forwarded as validation_profile on POST /api/v2/remote-build/execute so the image builder can select a pre-baked validation ruleset. When omitted, no image validation is requested. Ignored for --build-type app.snow spcs service remote-build, remote-build-status, and remote-build-history commands that submit and track SPCS image/app builds via the remote build REST API. These commands are hidden by default and gated by the enable_spcs_remote_build CLI feature flag.snow dcm plan now supports the --delta flag for incremental deployments. This option enables processing only statements that have changed since the last deploy, plus statements potentially impacted by those changes.snow dcm commands 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 the enable_snowflake_projects feature flag.snow dcm deploy, snow dcm plan, snow dcm preview, and snow dcm raw-analyze now support environment variables and secrets declared in a project manifest's templating.env_vars/templating.env_secrets sections. Declared values are collected from the shell environment, or from a .env file passed via --env-file/-e (the shell always wins for a name declared in both), and forwarded to the server; raw-analyze previously had no support for this at all.snow helpers check-version, which reports the installed Snowflake CLI version alongside the latest published version and whether an upgrade is available. Use --refresh to 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 when ignore_new_version_warning is set.snow dbt copy, which copies files between a local directory and a stage (or between stages) for a dbt project. It is an alias of snow stage copy and supports the same paths and options (--recursive, --overwrite, --parallel, --auto-compress, --refresh).snow app events now surfaces app health telemetry for Snowflake App Runtime projects. --type log|metric|lifecycle selects the stream (default log); --since / --until accept relative shorthand (e.g. 30m, 6h, 2d) or absolute UTC timestamps and switch logs to the historical event table, while metric and lifecycle are always historical and default to the last hour. --metric cpu|memory|network narrows metric output and --raw emits unconverted values (bytes, cores). The bare snow app events live log tail is unchanged.snow dcm deploy, snow dcm purge, snow dcm plan, snow dcm preview, snow dcm refresh, and snow dcm test now show live, per-step progress as an interactive checklist instead of a single generic spinner.snow dcm commands now summarize the files being uploaded as a tree beneath the upload step, instead of listing every file on its own line.snow stage copy --recursive, snow dcm deploy/plan/analyze, 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 the SNOWFLAKE_CLI_STAGE_UPLOAD_WORKERS setting (config key cli.stage_upload_workers, default 16; set to 1 to restore the previous serial behavior). For snow stage copy this budget is shared with --parallel rather than multiplied by it, so existing invocations do not spawn more threads than before.snow dcm plan, deploy, and purge now 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.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 app commands (validate, open, events, deploy, teardown) now resolve their database and schema from the active connection like other CLI commands, so a bare USER$ database configured in snowflake.yml is expanded to the caller's personal database.snow app setup now 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, and snow app deploy also falls back to a stage if a workspace cannot be used.GitPython from 3.1.50 to 3.1.57.snow dcm commands run with --save-output now write artifacts directly into the out/ directory, with each command's response in out/<command>_result.json, instead of nesting them under a per-command subdirectory. The out/ directory is recreated empty at the start of every such run.snow spcs service events is now generally available. This command returns service-level and service-instance-level platform events in addition to cont
snow spcs service events is now generally available. This command returns service-level and service-instance-level platform events in addition to container-level events.snow app open now accepts a --watch flag 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 --help is now context-aware: when the current project's snowflake.yml unambiguously 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 in snow app <TAB> completion for such a project (they still run when invoked explicitly).snow app deploy now drops the code stage before recreating it only when the stage already exists. A first deploy has nothing to clear, so it no longer issues DROP STAGE unnecessarily, letting a role with only CREATE STAGE (and not OWNERSHIP) deploy successfully.snowflake-connector-python from 4.6.0 to 4.7.1.snowflake-snowpark-python from 1.41.0 to 1.53.0.snow streamlit deploy : fix re-deploy incorrectly attempting to UNSET schema-inherited governance tags the deploying role has no APPLY privilege on. O
snow streamlit deploy: fix re-deploy incorrectly attempting to UNSET schema-inherited governance tags the deploying role has no APPLY privilege on. Omitting the tags: property from snowflake.yml now leaves directly-set tags untouched; use tags: [] to explicitly clear all directly-set tags.Added tags field to Streamlit entity so that tags can be set with snow streamlit deploy .
tags field to Streamlit entity so that tags can be set with snow streamlit deploy.config.toml and connections.toml files with 0644 permissions (readable by group or others) now emit a warning instead of a hard error when SF_SKIP_TOKEN_FILE_PERMISSIONS_VERIFICATION=true or SKIP_TOKEN_FILE_PERMISSIONS_VERIFICATION=true is set, aligning with snowflake-connector-python behaviour. Files writable by group or others remain a hard error regardless of the env var.snow app setup now correctly preserves case-sensitive (double-quoted) identifiers in the generated snowflake.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 setup no longer writes build_compute_pool / service_compute_pool to the generated snowflake.yml, and no longer reads the DEFAULT_SNOWFLAKE_APPS_BUILD_COMPUTE_POOL / DEFAULT_SNOWFLAKE_APPS_SERVICE_COMPUTE_POOL account parameters. Snowflake App Runtime services now always run on server-managed compute pools. Existing projects that set these fields in snowflake.yml continue to be honored by snow app deploy.snow app setup --dry-run now exits with code 0 while still printing the same setup validation errors that a non-dry-run invocation surfaces.snow app deploy now supports a separate service_eai field on snowflake-app entities for newly created application services. When service_eai is not set, deploy continues to fall back to build_eai for backward compatibility.snow dbt deploy now preserves the customer's original key order in profiles.yml instead of silently reordering keys alphabetically.snow app setup and snow app deploy resolve their Snowflake App Runtime defaults via the SYSTEM$GET_APPLICATION_SERVICE_DEFAULTS() system function, and automatically fall back to the previous SHOW PARAMETERS based 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.snow app events and snow app setup --dry-run crashing on Windows with an uncaught UnicodeEncodeError when their output contained non-ASCII characters (e.g. emoji, box-drawing, or accented text in application logs or the dry-run plan preview). The snow app commands now render output as UTF-8 instead of the platform default code page (cp1252/cp932 on Windows).Added cli.encoding config section (and matching SNOWFLAKE_CLI_ENCODING_* env vars) to control text encoding in three areas: file_io for reading and wr
cli.encoding config section (and matching SNOWFLAKE_CLI_ENCODING_* env vars) to control text encoding in three areas: file_io for reading and writing project files (e.g. SQL files, snowflake.yml), subprocess for decoding output of external processes (e.g. Docker, pip), and stdout for encoding CLI output written to stdout. Setting all three to utf-8 ensures correct Unicode handling on Windows systems where the platform default encoding is not UTF-8.--no-prompt-exit-repl option and configuration setting to skip the exit confirmation prompt in the SQL REPL.--server-session-keep-alive global connection flag (plus matching SNOWFLAKE_SERVER_SESSION_KEEP_ALIVE env var and server_session_keep_alive config key) that prevents Snowflake from closing idle sessions. Useful for long-running operations or connections held open between multiple operations.snow object create) crashing with ModuleNotFoundError: 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.snow app setup --compute-pool option and the build_compute_pool / service_compute_pool fields of a snowflake-app entity are now hidden and undocumented (omitted from --help and the generated project-definition JSON schema). They remain fully functional: snow app setup and snow app deploy still honor the DEFAULT_SNOWFLAKE_APPS_BUILD_COMPUTE_POOL / DEFAULT_SNOWFLAKE_APPS_SERVICE_COMPUTE_POOL account parameters and any compute pools configured in snowflake.yml. The ENABLE_APPLICATION_SERVICE_MANAGED_COMPUTE_POOL and ENABLE_APPLICATION_SERVICE_MANAGED_COMPUTE_POOL_FALLBACK parameter checks (and the related deploy-time warning) have been removed.snow app setup incorrectly treating system-default parameter values as admin-configured values. After running ALTER ACCOUNT UNSET on DEFAULT_SNOWFLAKE_APPS_BUILD_COMPUTE_POOL or DEFAULT_SNOWFLAKE_APPS_SERVICE_COMPUTE_POOL, those fields no longer appear in the generated snowflake.yml or --dry-run output.pip from 26.1.1 to 26.1.2.snow app setup and snow app deploy now 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 configured code_stage is still honored, with a warning when the destination is a personal database.snow app deploy failing on Windows when uploading app code to a workspace (connector error 253006, ER_FILE_NOT_EXISTS) due to a malformed local file URI.snow app deploy failing with connector error 253006 when 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 expands PUT sources 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 to PUT. This affected the workspace upload path used for personal-database destinations.snow app deploy now uploads app code to a stage one file at a time (preserving the directory structure) instead of via a recursive PUT <dir>/*, and no longer deletes the local bundle during upload. The per-file form also avoids the directory-matching glob behind connector error 253006.build_eai field of a snowflake-app entity can now be specified as a bare string (e.g. build_eai: MY_EAI) in addition to the existing build_eai:\n name: MY_EAI object form.snow app setup now honors the --warehouse, --database, and --schema connection options as explicit overrides for the generated snowflake.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 --database is specified, --schema must also be specified.snow dcm commands now use the system temporary folder to bundle project files before uploading, rather than creating the output project directory and dropping it afterwardsnow dbt no longer rejects valid --dbt-version values (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.snow app commands (e.g. snow app deploy, snow app validate) failing on Windows with a UnicodeDecodeError when snowflake.yml contained non-ASCII characters (e.g. a non-Latin app title or description). The snow app command group now defaults to reading and writing snowflake.yml as UTF-8 instead of falling back to the platform default code page (cp1252/cp932 on Windows). An explicit cli.encoding.file_io setting still takes precedence when configured; UTF-8 is only the default for snow app commands. Other commands continue to honor the cli.encoding.file_io setting / platform default when reading project files.--deploy-only flag of snow app deploy has been renamed to --promote-only. The previous --deploy-only name continues to work as a hidden alias for now, but this backward compatibility is temporary and will be removed soon.snow app deploy now drops and recreates the code stage before uploading (instead of clearing it with REMOVE) 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 deploy now 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.Added a --protocol option (plus matching SNOWFLAKE_PROTOCOL env var and protocol config key) to snow connection add and the global connection override
--protocol option (plus matching SNOWFLAKE_PROTOCOL env var and protocol config key) to snow connection add and the global connection overrides. This allows selecting http or https as the connection protocol without editing config.toml, which is primarily useful for local development against http deployments.snow helpers generate-project-schema command to emit a JSON Schema for the snowflake.yml project 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-version to select the project definition version (1, 1.1, or 2; defaults to 2) and --output-file/-o to write the schema to a file.TooManyFilesError during snow streamlit deploy when main_file is a descendant of a directory listed in artifacts.snowflake-connector-python from 4.5.0 to 4.6.0.snow dcm list-deployments and snow dcm drop-deployment now wrap the project name in IDENTIFIER(...), matching every other DCM subcommand. Fully-qualified and quoted project names are now handled consistently.snow sql table 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() and snow spcs service build-image now raise a clear, user-visible error when CURRENT_ORGANIZATION_NAME() / CURRENT_ACCOUNT_NAME() return no row or a NULL value, instead of a cryptic TypeError: 'NoneType' object is not subscriptable / AttributeError: 'NoneType' object has no attribute 'lower'.snow app setup and snow app deploy now verify the current role can deploy to the account-configured destination (the DEFAULT_SNOWFLAKE_APPS_DESTINATION_DATABASE / DEFAULT_SNOWFLAKE_APPS_DESTINATION_SCHEMA account 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.Added --local-only flag to snow sql. When set, !source and !load directives that reference http:// or https:// URLs are rejected instead of fetched, r
--local-only flag to snow sql. When set, !source and !load directives that reference http:// or https:// 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/!load are unaffected. The flag also applies to the interactive REPL and to files reached transitively via nested !source.Added snow streamlit logs command to stream live logs from a Streamlit-in-Snowflake app running on the SPCSv2 container runtime. Supports --tail for h
snow streamlit logs command to stream live logs from a Streamlit-in-Snowflake app running on the SPCSv2 container runtime. Supports --tail for historical lines, --name to target apps without a project definition, and honors the global --format flag (plain / JSON / CSV) for downstream piping.snowflake-connector-python to version 4.5.0.gitpython to version 3.1.50.Distribution.xml package metadata now declares hostArchitectures="arm64,x86_64", so the installer is recognized as native on Apple Silicon.snow spcs service build-image on Azure accounts to work with stages using SNOWFLAKE_FULL encryption.identifier_to_show_like_pattern and to_string_literal to use Snowflake's standard single-quote doubling ('') instead of backslash escaping, which is not interpreted under the default STANDARD_ESCAPE_SEQUENCES=FALSE session setting. This closes SQL injection vectors through SHOW ... LIKE queries driven by a project-controlled snowflake.yml or manifest.yml.pip to version 26.1.1.snow connection list crashing with AttributeError when config.toml contains a scalar value directly under [connections]. Such entries are now skipped with a warning so valid connections are still listed.FQN.sql_identifier.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".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 via SNOWFLAKE_* or SNOWFLAKE_CONNECTIONS_<name>_* environment variables. Values like false / 0 are now correctly interpreted as False rather than truthy strings.snow spcs service create, execute-job, and upgrade where 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.read_file_content and procedure_from_js_file Jinja filters used during SQL template rendering.nativeapp codegen snowpark).sql_script hooks.CREATE STREAMLIT SQL emitted by snow streamlit deploy and related commands.repr(ConnectionContext) and related debug logs.snow app and snow snowpark.snow git setup, snow connection secret creation, and API integration creation.snow cortex complete and snow cortex translate.--like arguments to snow object show, snow git show, and snow spcs image-repository list-images.Encrypted private key files no longer require PRIVATE_KEY_PASSPHRASE to be set in the environment. The passphrase can now be read from private_key_fil
PRIVATE_KEY_PASSPHRASE to be set in the environment. The passphrase can now be read from private_key_file_pwd (the name used by snowflake-connector-python) or private_key_passphrase in connections.toml / config.toml. The PRIVATE_KEY_PASSPHRASE environment variable continues to take precedence when set. This also fixes a regression in 3.17.0 where commands using key-pair authentication with private_key_passphrase in connections.toml failed with argument 'password': Cannot convert "<class 'str'>" instance to a buffer.…dependency health). Supports an optional --scan-vulnerabilities flag to run Grype vulnerability scanning.
snow app now supports both Snowflake Native Apps (application / application package entities) and Snowflake Apps Deploy (snowflake-app entities). The entity type in snowflake.yml determines which flow is used, so shared subcommands like bundle, deploy, validate, open, events, and teardown automatically pick the correct behavior. The experimental hidden snow __app command group and the ENABLE_SNOWFLAKE_APPS feature flag have been removed.snow app setup command for initializing a snowflake.yml for a Snowflake Apps Deploy project.snow connection generate-workload-identity-token command to generate a workload identity token for the current environment. Supports AWS, GCP, Azure, and OIDC providers via --workload-identity-provider flag or connection configuration.snow custom-image validate command to validate custom Docker images against configured rules (entrypoint, environment variables, Python packages, dependency health). Supports an optional --scan-vulnerabilities flag to run Grype vulnerability scanning.snow dcm purge command to drop all the objects managed by the specified DCM Projectaccount_identifier and project_owner fields.
CLI validates these against the current session and prints a warning on mismatch:
account_identifier is checked for all manifest-based commandsproject_owner is checked for snow dcm create--secondary-roles option (plus matching SNOWFLAKE_SECONDARY_ROLES env var and secondary_roles config key) to snow connection add and the global connection overrides. The value is forwarded to snowflake-connector-python and accepts ALL or NONE, so sessions can be pinned to the primary role without running an extra USE SECONDARY ROLES statement.--force flag to snow spcs service drop to allow dropping services that contain block storage volumes.snow streamlit deploy failing with a collision error when pages/*.py glob in additional_source_files overlaps with the automatically-included pages/ directory. Overlapping glob patterns are now deduplicated during v1-to-v2 definition conversion.snowflake-connector-python to 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.PRIVATE_KEY_PASSPHRASE environment variable is set to an empty string.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).snow connection generate-jwt and snow connection generate-workload-identity-token failing with Connection None is not configured when used with --temporary-connection.LOGIN_HISTORY events (and OVERFLOW_FAILURE_EVENTS_ELIDED) previously emitted when a snow invocation was rejected by an authentication policy.251007: Session and master tokens invalid.DCM commands are now available in preview
--in-account flag 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 --in flag.snow spcs service build-image to 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.--async flag to snow spcs service execute-job command to execute job services asynchronously without waiting for completion.--replicas parameter to snow spcs service execute-job command to specify the number of job replicas to run.--dbt-version flag to snow dbt deploy and snow dbt execute commands. This flag allows to set dbt Core version on dbt project object (deploy command) or execute a dbt command on a specific dbt Core version, without altering the dbt object (execute commands).snow stage copy --recursive dropping 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.snowflake-jwt, username_password_mfa, workload_identity) are now case-insensitive.snow streamlit deploy --prune failing with incorrect stage path format for streamlit entities using versioned deployment. The snow:// prefix is now correctly preserved through all stage path operations.snow dbt deploy where 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.snow dbt deploy. The database and schema from the DBT Project object's fully qualified name take precedence over those from the session.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.Added --if-exists option to snow object drop command and object-specific drop commands (e.g., snow stage drop) to drop objects only if they exist, pre
--if-exists option to snow object drop command and object-specific drop commands (e.g., snow stage drop) to drop objects only if they exist, preventing errors when dropping non-existent objects.@"example-repo"/branches/"feature/branch"/*).externalbrowser auth for headless systems.snowflake-connector-pythonsnow streamlit deploy --experimental flag is deprecated. Versioned deployment is now the default behavior.
snow streamlit deploy --experimental flag is deprecated. Versioned deployment is now the default behavior.snow streamlit deploy now uses versioned stages by default (modern FROM syntax with automatic version management)snow streamlit deploy --legacy flag to use the legacy ROOT_LOCATION deployment for backward compatibilityFixed parsing of --vars provided to snow dbt execute subcommands. This allows to pass variables in the same way as to dbt cli, i.e. --vars '{"key": "v
snow dbt execute subcommands. This allows to pass variables in the same way as to dbt cli, i.e. --vars '{"key": "value"}'Added global option --decimal-precision allowing setting arbitrary precision for Python's Decimal type.
--decimal-precision allowing setting arbitrary precision for Python's Decimal type.auto_suspend_secs parameter in SPCS service commands (deploy, set, unset) to configure automatic service suspension after inactivity period.snow dbt describe and snow dbt drop commandssnow dbt execute ... retry subcommandsnow dbt deploy command:
--default-target to set a default target--unset-default-target to clear default--external-access-integration sets external access integrations (needed to pull external deps on altering dbt project object)--install-local-deps instructs to install dependencies located in the projectsnowflake-connector-python==3.18.0snowflake.yml after deploying StreamlitThe !edit command for external editors was added to REPL
!edit command for external editors was added to REPL--partial flag to snow logs command for partial, case-insensitive object name matching!source with trailing comments! commands no longer require trailing ; for evaluationtyper=0.17.3. Improved displaying help messages.ctx.var in snow sql with Jinja templating.snowflake-connector-python to 3.17.3snow snowpark deploy failing on duplicated packagessnow spcs logs IndexOutOfRange errorAdd snow connection remove command
snow auth oidc read-token - Reads and displays OIDC tokens from CI/CD environmentssnow connection remove commandruntime_environment_version field in notebook entity configuration, allowing specification of runtime environment version for containerized notebooks.snow auth oidc command group for managing workload identity federation authentication:
snow auth oidc read-token - Reads and displays OIDC tokens from CI/CD environmentsFixed DBT deploy command to properly handle fully qualified names
Refactored Streamlit app deployment (using FROM syntax); removed deprecated Streamlit features
--token flag.--format=CSV.--enabled-temaplating flag for snow sql command, configuring which template syntax should be used to resolve variables:
<% ... %>), enabled by default&{ ... }), enabled by default{{ ... }}), disabled by defaultsnow stage copy @src_stage @dst_stage command.deploy, execute and list are now available in preview.Decimal, time and binary.--format=JSON_EXT option to return JSON objects as proper JSON structures rather than strings.FROM <stage> syntax); removed deprecated Streamlit featuresAdded --private-link flag to snow spcs image-registry login command to login using private link URLs.
--private-link flag to snow spcs image-registry login command to login using private link URLs.--private-link flag to snow spcs image-registry login command to login using private link URLs.Added --encryption flag to snow stage create command defining the type of encryption for all files on the stage.
--encryption flag to snow stage create command defining the type of encryption for all files on the stage.use commands error if current database is not set.Added --private-link flag to snow spcs image-registry url command for retrieving private link URLs.
--private-link flag to snow spcs image-registry url command for retrieving private link URLs.--private-link flag to snow spcs image-registry url command for retrieving private link URLs.Fix enable_release_channels property in application package definition to default to None instead of False.
enable_release_channels property in application package definition to default to None instead of False.enable_release_channels property in application package definition to default to None instead of False.Upgrade message is printed to stderr.
snowflake.core import issue on newer Python versions⚠️ This version does not work on Python 3.12 and 3.13. We recommend using v3.8.1 or newer for better experience.
⚠️ This version does not work on Python 3.12 and 3.13. We recommend using v3.8.1 or newer for better experience.
snow sql.;> syntax).!queries, !result and !abort commands from SnowSQL.artifact_repository, artifact_repository_packages and resource_constraint fields to the Snowpark Entity Model to support direct usage of non-anaconda packages.--single-transaction flag to snow sql. Wraps BEGIN/COMMIT around statements to execute them as a single transaction, ensuring all commands complete successfully or no change is applied.!= operator in requirements.txt.use commands.enable_release_channels from global feature flag to project level.snow spcs service metrics command to accept fully qualified service names.Fix error appearing on help messages after click BCR update.
Fix certificate connection issues.
snow spcs image-registry login slow query problem.snow spcs image-registry login slow query problem.Added --prune flag to deploy commands, which removes files that exist in the stage, but not in the local filesystem.
--prune flag to deploy commands, which removes files that exist in the stage,
but not in the local filesystem.snow logs command for retrieving and streaming logs from the server.snow helper check-snowsql-env-vars which reports environment variables from SnowSQL with replacements in CLI.Added support for !source command in SQL. This command allows to execute SQL from a local file.
!source command in SQL. This command allows to execute SQL from a local file.snow spcs compute-pool commands didn't raise error.Extended snowflake.yml support for new entities:
snow compute-pool deploy command using snowflake.yml file.snow spcs service deploy command using snowflake.yml file.snow image-repository deploy command using snowflake.yml file.snow sql command when using JSON for output formatsnow compute-pool deploy command using snowflake.yml file.snow spcs service deploy command using snowflake.yml file.snow image-repository deploy command using snowflake.yml file.snow sql command when using JSON for output formatAdd an optional stage_subdirectory field to application package entity. When specified, application artifacts are uploaded to this subdirectory instea
stage_subdirectory field to application package entity. When specified, application artifacts are uploaded to this subdirectory instead of the root of the application package's stage.snow spcs service events command to retrieve service-specific events:
--since, --until), and pagination (--first, --last).--all to fetch all columns.snow spcs service metrics command to fetch service metrics:
--since, --until).--all to fetch all columns.**) in artifact paths in snowflake.yml for Streamlit.**) in artifact paths in snowflake.yml for Snowpark, requires ENABLE_SNOWPARK_GLOB_SUPPORT feature flag.snow app release-directive add-accounts and snow app release-directive remove-accountssnow app release-channel set-accounts command to set accounts for release channel.--force-replace flag in snow snowpark deploy command to replace entities even if no changes are detected.snow notebook deploy command that allows creating a notebook using local file.snow object commands.Added deprecation message for default Streamlit warehouse.
snow app release-directive listsnow app release-directive setsnow app release-directive unsetsnow app version create now returns version, patch, and label in JSON format.--from-stage flag to snow app version create to allow version creation from the content of the stage without re-syncing to the stage.snow app run --from-release-directive --channel=<channel>.snow app release-channel list command.snow app release-channel add-accounts and snow app release-channel remove-accounts` commands.snow app release-channel add-version and snow app release-channel remove-version commands.snow app publish.snow helpers import-snowsql-connections allowing to import configuration of connections from SnowSQL.Fix "No module named 'pandas'" warning.
Fixed crashes with older x86_64 Intel CPUs.
manifest field of application package entity is now optional. This field does not have any functionality.
manifest field of application package entity is now optional. This field does not have any functionality.--retain-comments option to snow sql command to allow passing comments to Snowflake.--replace and --if-not-exists options to snow object create command.telemetry section of an application entity. Two fields are supported: share_mandatory_events and optional_shared_events.snow stage copy supports --recursive flag to copy local files and subdirectories recursively to stage. Including
glob support.snow helpers v1-to-v2 now converts v1 template references to v2 in Native App artifacts that use the templates processor.--label option to snow app version create command to allow adding labels to versions and patches.snow spcs service logs command 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 add supports --no-interactive flag to skip interactive prompts.snow --info callback returns information about SNOWFLAKE_HOME variable.requirements.txt file for Python code execution via snow git execute command.
Before the fix the file (even empty) was required to make the execution working.connections.toml exists.
Removed incorrect copying of connections from connections.toml to config.toml.snow connection generate-jwt to work with keys with no passphrase.snow app version create if the schema and stage already exist.Added deprecation warning in the description of snow spcs service status and snow spcs image-repository list-tags.
snow spcs service status and snow spcs image-repository list-tags.snow app init as it was replaced with snow init in Snowflake CLI 3.0snow connection generate-jwt command to generate JWT token for Snowflake connection.snow spcs service list-instances, snow spcs service list-containers and snow spcs service list-roles commands, which support fetching information about all instances/containers/service roles in a service.snow spcs service set now supports --eai-name to update external access integrations for a service.deploy_root, bundle_root, and generated_root directories to be created in the current working directory instead of the project root when invoking commands with the --project flag from a different directory.snow stage|git execute. For Python files variables are stripped of leading and trailing quotes.snow spcs image-repository list-images now displays image tag and digest.snow stage list-files for paths with directories.snow --info callback returns information about SNOWFLAKE_HOME variable.requirements.txt file for Python code execution via snow git execute command.
Before the fix the file (even empty) was required to make the execution working.snow app diff to v2-native by @sfc-gh-fcampbell in https://github.com/snowflakedb/snowflake-cli/pull/1671snow app deploy to v2-native by @sfc-gh-fcampbell in https://github.com/snowflakedb/snowflake-cli/pull/1672snow app run to v2-native by @sfc-gh-fcampbell in https://github.com/snowflakedb/snowflake-cli/pull/1684snow app open to v2-native by @sfc-gh-fcampbell in https://github.com/snowflakedb/snowflake-cli/pull/1685snow app validate to v2-native by @sfc-gh-fcampbell in https://github.com/snowflakedb/snowflake-cli/pull/1686snow app events to v2-native by @sfc-gh-fcampbell in https://github.com/snowflakedb/snowflake-cli/pull/1698snow ws version drop using the wrong action by @sfc-gh-fcampbell in https://github.com/snowflakedb/snowflake-cli/pull/1703snow app version commands to v2-native by @sfc-gh-fcampbell in https://github.com/snowflakedb/snowflake-cli/pull/1708snow app teardown only operate on v2 entities by @sfc-gh-fcampbell in https://github.com/snowflakedb/snowflake-cli/pull/1709Full Changelog: https://github.com/snowflakedb/snowflake-cli/compare/v3.0.2...v3.1.0-rc4
Fixed the handling of empty default values for strings by snow snowpark deploy.
snow snowpark deploy.pip command fails.snow snowpark deploy.pip command fails.snow git execute support for Python files.Changing package name from snowflake-cli-labs to snowflake-cli. snowflake-cli-labs points to the corresponding version of snowflake-cli.
snowflake-cli-labs to snowflake-cli. snowflake-cli-labs points to the corresponding version of snowflake-cli.snowflake-cli-labs to snowflake-cli. Snowflake-cli-labs will be pointing to the corresponding version of snowflake-cli.Changing package name from snowflake-cli-labs to snowflake-cli. snowflake-cli-labs points to the corresponding version of snowflake-cli.
snowflake-cli-labs to snowflake-cli. snowflake-cli-labs points to the corresponding version of snowflake-cli.snowflake-cli-labs to snowflake-cli. Snowflake-cli-labs will be pointing to the corresponding version of snowflake-cli.Your coding agent can read these notes before it upgrades. Set up the MCP server →