snow dbt deploy¶
Upload local dbt project files and create or update a dbt project object on Snowflake.
Note
Some features described on this page require a dbt project object that uses the mutable live version. To get a live-version object, opt in to the 2026_06 behavior change bundle or ask your Snowflake account representative to enable the separate single live version feature. Then create or replace the object, or migrate an existing versioned object with SYSTEM$MIGRATE_DBT_PROJECT. For details, see dbt Projects on Snowflake: dbt project objects migrate to a single mutable live version.
Syntax¶
Arguments¶
nameIdentifier of the dbt project; for example: my_pipeline.
Options¶
--source TEXTPath to directory containing dbt files to deploy. Defaults to current working directory.
--profiles-dir TEXTPath to a directory containing
dbt_projects_profiles.ymlorprofiles.yml. The CLI looks fordbt_projects_profiles.ymlfirst and usesprofiles.ymlonly ifdbt_projects_profiles.ymlisn’t present. The CLI copies the file into the root of the deployed dbt project object with the same filename, overwriting a file with the same name. If you don’t specify--profiles-dir, the CLI looks in the--sourcedirectory. If you don’t specify either option, the CLI looks in the current working directory.--auto-compile / --no-auto-compileSets whether Snowflake automatically compiles the project during deployment. With
--auto-compile, Snowflake runsdbt compile. If an external access integration is configured, Snowflake first runsdbt deps, thendbt compile. Use--no-auto-compileto skip both commands. The setting persists on the dbt project object and applies to later deployments until you change it. Default: True.--default-writeback / --no-default-writebackSets whether executions write generated target and log files back to the live version by default. The setting persists on the dbt project object and applies to later executions, but an individual execution can override it. Omit the option to leave the existing setting unchanged. Regardless of this setting, Snowflake stores separate per-query result artifacts and an archive for each execution. Default: True.
--git-commit TEXTGit commit identifier to record in the dbt project object’s deployment metadata.
Snowflake CLI captures the commit and branch automatically when
snow dbt deployruns in GitHub Actions. For other CI runners, specify--git-commitand--git-branch.--git-branch TEXTGit branch name to record in the dbt project object’s deployment metadata.
--force / --no-forceRecreates the dbt project object with
CREATE OR REPLACE DBT PROJECT. This replaces the live version and removes run history. Default: False.--default-target TEXTDefault target for the dbt project. Mutually exclusive with
--unset-default-target.--unset-default-targetUnset the default target for the dbt project. Mutually exclusive with
--default-target. Default: False.--external-access-integration TEXTExternal access integration to be used by the dbt object.
--env-file-dir TEXTPath to a directory containing an
env.ymlfile. The CLI pulls this file into the deployed dbt project object, overwriting the object’s rootenv.ymlif one already exists. Requires Snowflake CLI 3.21 or later. For more information, see Using SQL environment variables and private Git packages for dbt Projects on Snowflake.--default-env TEXTSets or changes the default environment (defined in the project’s
env.ymlfile) used for compilation and subsequent executions of the dbt project object. You can override this per run with theENVIRONMENTargument on the EXECUTE DBT PROJECT command. Use the reserved nameNO_ENVto run without any environment by default. Requires Snowflake CLI 3.21 or later.--install-local-depsInstalls local dependencies from project that don’t require external access. Default: False.
--dbt-version TEXTdbt version to use for the project, for example ’1.11.11’. Full list of supported versions can be found at https://docs.snowflake.com/en/user-guide/data-engineering/dbt-projects-on-snowflake-dbt-core-versions.
--git-commit TEXTGit commit hash to record in last_deployed_from metadata when deploying from a plain stage (e.g. SnowCLI temp stage). In GitHub Actions it is auto-detected when not provided.
--git-branch TEXTGit branch name to record in last_deployed_from metadata when deploying from a plain stage (e.g. SnowCLI temp stage). In GitHub Actions it is auto-detected when not provided.
--connection, -c, --environment TEXTName of the connection, as defined in your config.toml file. Default: default.
--host TEXTHost address for the connection. Overrides the value specified for the connection.
--port INTEGERPort for the connection. Overrides the value specified for the connection.
--account, --accountname TEXTName assigned to your Snowflake account. Overrides the value specified for the connection.
--user, --username TEXTUsername to connect to Snowflake. Overrides the value specified for the connection.
--password TEXTSnowflake password. Overrides the value specified for the connection.
--authenticator TEXTSnowflake authenticator. Overrides the value specified for the connection.
--workload-identity-provider TEXTWorkload identity provider (AWS, AZURE, GCP, OIDC). Overrides the value specified for the connection.
--private-key-file, --private-key-path TEXTSnowflake private key file path. Overrides the value specified for the connection.
--token TEXTOAuth token to use when connecting to Snowflake.
--token-file-path TEXTPath to file with an OAuth token to use when connecting to Snowflake.
--database, --dbname TEXTDatabase to use. Overrides the value specified for the connection.
--schema, --schemaname TEXTDatabase schema to use. Overrides the value specified for the connection.
--role, --rolename TEXTRole to use. Overrides the value specified for the connection.
--warehouse TEXTWarehouse to use. Overrides the value specified for the connection.
--temporary-connection, -xUses a connection defined with command-line parameters, instead of one defined in config. Default: False.
--mfa-passcode TEXTToken to use for multi-factor authentication (MFA).
--enable-diagWhether to generate a connection diagnostic report. Default: False.
--diag-log-path TEXTPath for the generated report. Defaults to system temporary directory. Default: <system_temporary_directory>.
--diag-allowlist-path TEXTPath to a JSON file that contains allowlist parameters.
--oauth-client-id TEXTValue of client id provided by the Identity Provider for Snowflake integration.
--oauth-client-secret TEXTValue of the client secret provided by the Identity Provider for Snowflake integration.
--oauth-authorization-url TEXTIdentity Provider endpoint supplying the authorization code to the driver.
--oauth-token-request-url TEXTIdentity Provider endpoint supplying the access tokens to the driver.
--oauth-redirect-uri TEXTURI to use for authorization code redirection.
--oauth-scope TEXTScope requested in the Identity Provider authorization request.
--oauth-disable-pkceDisables Proof Key for Code Exchange (PKCE). Default: False.
--oauth-enable-refresh-tokensEnables a silent re-authentication when the current access token becomes outdated. Default: False.
--oauth-enable-single-use-refresh-tokensWhether to opt-in to single-use refresh token semantics. Default: False.
--client-store-temporary-credentialStore the temporary credential.
--format [TABLE|JSON|JSON_EXT|CSV]Specifies the output format. Default: TABLE.
--verbose, -vDisplays log entries for log levels info and higher. Default: False.
--debugDisplays log entries for log levels debug and higher; debug logs contain additional information. Default: False.
--silentTurns off intermediate output to console. Default: False.
--enhanced-exit-codesDifferentiate exit error codes based on failure type. Default: False.
--decimal-precision INTEGERNumber of decimal places to display for decimal values. Uses Python’s default precision if not specified. [env var: SNOWFLAKE_DECIMAL_PRECISION].
--helpDisplays the help text for this command.
Usage notes¶
The snow dbt deploy command uploads local files to a temporary stage and either creates a new object or replaces the existing object’s live version in a single operation. A valid dbt project object must contain dbt_project.yml and one of the supported profile files:
-
dbt_project.yml: A standard dbt configuration file that specifies the profile to use. -
dbt_projects_profiles.ymlorprofiles.yml: A dbt connection profile definition referenced indbt_project.yml. The selected profile file must define the database, role, schema, and type. If both files are present, Snowflake usesdbt_projects_profiles.ymland ignoresprofiles.ymlduring deployment, compilation, and subsequent commands.- By default, dbt Projects on Snowflake uses your target schema (
target.schema) specified from your dbt environment or profile. When you execute a dbt project object, dbt attempts to create the target schema specified in the profile file if it doesn’t already exist. For more information, see Understand schema generation and customization.
- By default, dbt Projects on Snowflake uses your target schema (
When snow dbt deploy runs in GitHub Actions, Snowflake CLI automatically captures the commit and branch. For other CI runners, explicitly pass --git-commit and --git-branch to preserve this source metadata.
Warning
Don’t use --force unless you intentionally want to recreate the dbt project object. In snow dbt deploy, --force runs CREATE OR REPLACE DBT PROJECT, which may remove run history.
Examples¶
-
Deploy a dbt project named
jaffle_shop: -
Deploy a project with automatic compilation disabled. Useful for optimizing Slim CI workflows:
-
Deploy from a CI runner and record the source commit and branch. Snowflake CLI captures this information automatically when deploying from GitHub Actions:
-
Deploy a project named
jaffle_shopfrom a specified directory, using a profile file from a separate directory: -
Deploy a project named
jaffle_shopfrom a specified directory, supplying a profile file from outside the project, setting a default target, and enabling external access integrations: -
Deploy a project named
jaffle_shopand set a specific dbt runtime version: -
Deploy a project named
jaffle_shop, pull in anenv.ymlfile from a separate directory, and set the default environment for compilation and later executions: