dbt-core v1.10.23 - Deprecated Version Warning


dbt-core v1.10.23 was published on 12 August 2026. The changelog lists one feature, a warning when the installed dbt version is deprecated. The new check in deprecated_version.py treats any (major, minor) pair below (1, 11) as deprecated, so a 1.10 install including this patch matches.

The full release notes and downloads are on the GitHub release page. The notes cite issue 15964.

is_deprecated_version() reads the installed version through get_installed_version(). If major or minor is missing it returns false and stays quiet. Otherwise it compares the pair against LAST_SUPPORTED_MINOR_VERSION, which is hard coded to 11. Anything below 1.11 is deprecated.

That includes 1.10.23. Functional tests on this tag comment that 1.10.x is already an end of life line and filter the new Note out of unrelated assertions. The patch does not restore support. It makes the end of regular patches visible on the branch that already lost them.

The warning text says the install no longer receives regular patches, including for known bugs, and tells the operator to move to a newer supported release. v1.10.23 is itself such a patch, shipped so the notice exists on the 1.10 branch.

check_deprecated_version(is_warn=True) runs from two user facing entry points.

dbt --version goes through _version_callback in core/dbt/cli/params.py. That path is an eager Click option. It prints version info, fires the notice at EventLevel.WARN, then exits.

dbt init calls the same function with is_warn=True at the start of InitTask.run in core/dbt/task/init.py.

Every other command goes through preflight in core/dbt/cli/requires.py. That wrapper skips the check when flags.WHICH is init so the init path is not doubled, then calls check_deprecated_version() with the default is_warn=False. dbt run, dbt parse, dbt test, and the rest of the task CLI therefore emit INFO_MSG at info level, not a warning.

CI that fails on any WARNING in dbt --version output will start failing after this upgrade. Jobs that only scrape dbt run logs for WARNING will not see this notice unless the log config promotes info events.

The event type is Note, not the structured deprecation event family used for YAML and Jinja deprecations. Do not assume --warn-error or --warn-error-options treat it like Deprecations. The code fires a tagged Note and returns.

Tests in tests/functional/cli/test_deprecated_version.py mock the installed version as 1.9.5 and assert that split: dbt --version and dbt init produce one warn Note and no info Note; dbt run produces one info Note and no warn Note.

When the version is deprecated, check_deprecated_version() also calls track_deprecated_version_invocation() in core/dbt/tracking.py. The tracker returns immediately when active_user is None. When tracking is on, it sends category dbt and action deprecated_version_invocation with the iglu:com.dbt/deprecated_version_invocation/jsonschema/1-0-0 context and the current invocation id as the label.

That is a count of deprecated installs that still run, not a dump of the graph or the warehouse. If a platform has tracking disabled, nothing extra leaves the box. If tracking is on, every matching invocation after this upgrade produces that event.

The GitHub release page does not list a breaking schema or adapter change. Pinning v1.10.23 is still a 1.10 pin. Models, tests, and adapters keep the 1.10 contract.

Expect new log lines on every invocation of this build. init and --version use warning_tag around WARN_MSG. Other commands use INFO_MSG. Existing functional tests were updated to ignore Notes whose message contains is deprecated and no longer so older assertions keep working.

If the job is to stay on 1.10 for adapter or Python constraints, this patch is the version that tells the runtime that choice is unsupported. If the job is to leave the deprecated line, move to a 1.11 or newer release rather than treating v1.10.23 as a support extension.

This tag is not a prerelease. It is a stable patch.