require-dbt-version
require-dbt-version: version-range | [version-range]
Definition
You can use require-dbt-version to restrict your project to only work with a range of dbt versions.
When you set this configuration:
- If you have installed packages from the dbt Packages hub that specify a
require_dbt_versionthat doesn't match, running dbt commands will result in an error. - It helps package maintainers (such as dbt-utils) ensure that users' dbt version is compatible with the package.
- It signals compatibility with dbt Fusion Engine (
2.0.0and higher). - It might also help your whole team remain synchronized on the same version of dbt for local development, to avoid compatibility issues from changed behavior.
You must pin to a major release. See pin to a range for more details. If this configuration isn't specified, no version check will occur.
Starting in 2024, when you select a release track in dbt to receive ongoing dbt version upgrades, dbt will ignore the require-dbt-version config.
dbt Labs is committed to zero breaking changes for code in dbt projects, with ongoing releases to dbt and new versions of dbt Core. We also recommend these best practices:
YAML quoting
This configuration needs to be interpolated by the YAML parser as a string. As such, you should quote the value of the configuration, taking care to avoid whitespace. For example:
# ✅ These will work
require-dbt-version: ">=1.0.0" # Double quotes are OK
require-dbt-version: '>=1.0.0' # So are single quotes
# ❌ These will not work
require-dbt-version: >=1.0.0 # No quotes? No good
require-dbt-version: ">= 1.0.0" # Don't put whitespace after the equality signs
Avoid unbounded upper limits
We recommend defining both lower and upper bounds, such as ">=1.0.0,<3.0.0", to ensure stability across releases. We don't recommend having an unbounded require-dbt-version (for example, ">=1.0.0"). Without an upper limit, a project may break when dbt releases a new major version.
Fusion compatibility
The require-dbt-version also signals whether a project or package supports the dbt Fusion Engine (2.0.0 and higher).
- If it excludes
2.0.0, Fusion will warn today and error in a future release, matching dbt Core behavior. - You can bypass version checks with
--no-version-check.
Refer to pin to a range for more info on how to define a version range.§
Examples
The following examples showcase how to use the require-dbt-version:
- Specify a minimum dbt version — Use a
>=operator for a minimum boundary. - Pin to a range — Use a comma separated list to specify an upper and lower bound.
- Require a specific dbt version — Restrict your project to run only with an exact version of dbt Core.
Specify a minimum dbt version
Use a >= operator to specify a lower and an upper limit. For example:
require-dbt-version: ">=1.9.0" # project will only work with versions 1.9 and higher.
require-dbt-version: ">=2.0.0" # project will only work with Fusion-compatible versions of dbt/packages.
Remember, having an unbounded upper limit isn't recommended. Instead, check out the pin to a range example to define a range with both a lower and upper limit to ensure stability across releases.
Pin to a range
Use a comma separated list for an upper and lower bound. You can define a version range either as a YAML list (using square brackets) or as a comma-delimited string — both forms are valid and work.
To signal compatibility with the dbt Fusion Engine, include 2.0.0 or higher in your version range. Both of the following formats are valid:
require-dbt-version: [">=1.10.0", "<3.0.0"]
# or
require-dbt-version: ">=1.10.0,<3.0.0"
If your range excludes 2.0.0 (for example, >=1.6.0,<2.0.0), Fusion will show a warning now and error in a future release. You can bypass version checks with --no-version-check.
Require a specific dbt version
Pinning to a specific dbt version is discouraged because it limits project flexibility and can cause compatibility issues, especially with dbt packages. It's recommended to pin to a major release, using a version range (for example, ">=1.0.0", "<2.0.0") for broader compatibility and to benefit from updates.
While you can restrict your project to run only with an exact version of dbt Core, we do not recommend this for dbt Core v1.0.0 and higher.
In the following example, the project will only run with dbt v1.5:
require-dbt-version: "1.5.0"
Invalid dbt versions
If the version of dbt used to invoke a project disagrees with the specified require-dbt-version in the project or any of the included packages, then dbt will fail immediately with the following error:
$ dbt compile
Running with dbt=1.5.0
Encountered an error while reading the project:
Runtime Error
This version of dbt is not supported with the 'my_project' package.
Installed version of dbt: =1.5.0
Required version of dbt for 'my_project': ['>=1.6.0', '<2.0.0']
Check the requirements for the 'my_project' package, or run dbt again with --no-version-check
Disabling version checks
To suppress failures to to incompatible dbt versions, supply the --no-version-check flag to dbt run.
$ dbt run --no-version-check
Running with dbt=1.5.0
Found 13 models, 2 tests, 1 archives, 0 analyses, 204 macros, 2 operations....
See global configs for usage details.
Was this page helpful?
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.