dbt-core 2.0.0 - ClickHouse Driver, Metric Views, Docs Image


dbt-core 2.0.0 was published on 14 September 2026. The tag is v2.0.0, and the GitHub release name is dbt v2.0.0, titled Benjamin Franklin in the notes. On a warehouse, the change to test first is the ClickHouse path on adbc_clickhouse: profile custom_settings, v1-parity synchronous-operation defaults, the profile schema as the default database, a literal ? in SQL, and an HTTP user agent of dbt/<version>.

The full release notes and downloads are on the GitHub release page. The note for this major tag is short.

ClickHouse support is #14585. Connections use the adbc_clickhouse driver. Connection level settings are profile custom_settings plus the v1-parity synchronous-operation defaults. The note names that category and leaves the ClickHouse setting keys unnamed. Compare a scratch target with a v1 run before you promote the profile.

The default database is the profile schema. A target that left the database empty, and used the server default, now opens the schema name. A target that set a database different from the schema still needs a comparison run. Check the database of one model before the bump and after it.

A literal ? stays in the SQL text. ClickHouse accepts ? inside some function arguments, and this driver forwards the character. A model that escaped question marks so an older driver would preserve them now sends that escape as SQL. Diff a compiled model that contains ? against the text in system.query_log.

The HTTP user agent is dbt/<version>. ClickHouse stores it on system.query_log.http_user_agent, which separates dbt traffic from other clients on the same cluster. custom_settings is connection scope, so the values also cover catalog queries on that connection. Parse, compile, and build once on a disposable target, then read query_log, before the profile is copied to production.

#15616 adds a native Databricks metric view materialization. A metric view is a warehouse object that holds the metric definition. The adapter creates and replaces it beside tables and ordinary views.

The note is one line. The materialization string, the config block, and any move off an existing relation are left out. Confirm the string in the adapter shipped with v2.0.0 before a project selects it. An allow list of materialization names has to include that string.

A catalog that records only tables and views misses the object. Build one metric model in a scratch catalog and inspect the object type.

#14556 copies agent skills when packages are installed. A skill is an AgentSkills directory with a SKILL.md. Sources are installed packages and the paths in project skill-paths. The copy is gated on the new ai_provider flag. With the flag on, package install writes a second tree into the workspace, and a clean CI checkout shows those files after install. A package can put agent instructions in SKILL.md. This tag copies the files onto disk and leaves execution to the agent. Review skill-paths and the skill text from each pinned package, and leave ai_provider off until that review is done.

#15856 rebuilds the dbt-docs-server image. docker build downloads a released dbt binary from the dbt-core GitHub Releases and verifies it against that release SHA256SUMS file. The build follows the newest release that ships a Linux binary. The previous image pinned a stale version. Lock a version with --build-arg DBT_VERSION=.

The documented docker build command works from the repo root and from the crate directory. A .dockerignore file keeps the build context empty, so files next to the command stay out of the image. The build has more than one stage, more than one architecture, a health check, and an unprivileged user.

Set DBT_VERSION when the image is promoted by digest and the upstream binary must stay fixed across rebuilds. A SHA256SUMS mismatch fails the build.

#14538 keeps compiled SQL for inline compile commands when quiet mode is on. A wrapper that reads stdout from an inline compile receives the SQL again. A wrapper that treated empty stdout as success with nothing to store now has to keep or drop that text.

User visible v2 CLI text drops the Fusion name and the dbt-core name. The proprietary build identifies itself as dbt. The open source build identifies itself as dbt-oss. --version, --help, and several warning and error messages change with that rename. Sample --version, --help, and one error from the binary you ship, then update log filters that still match Fusion or a dbt-core banner.

Test the four surfaces that changed behavior.

For ClickHouse, review custom_settings, confirm the profile schema is the database you want, run a model that contains ?, and find dbt/<version> in system.query_log.http_user_agent.

Build the docs image with --build-arg DBT_VERSION= set to the tag you run, and confirm SHA256SUMS. A proxy that blocks or rewrites the sums file fails the build.

Capture --version and --help from dbt and from dbt-oss when both binaries ship.

Leave ai_provider off unless package install should copy SKILL.md files. Leave Databricks metric views unused until the adapter in v2.0.0 shows the materialization name. GitHub marks this tag as a stable release.