# dbt Core v1.13.0b1 — Release & Upgrade Intelligence
- **Product:** dbt Core (https://www.getdbt.com)
- **Version:** v1.13.0b1
- **Released:** Oct 14, 2026
- **Impact Score:** 7/10
- **Breaking Changes:** Source flagged
- **Canonical Analysis:** https://changelogs.us/dbt-core/updates/v1.13.0b1/

## Executive Summary (TL;DR)
dbt Core v1.13.0b1. Source highlight: dbt-core 1.13.0-b1 - October 14, 2026

## Breaking Changes & Deprecations
- Breaking Changes - Flags introduced in 1.9 and 1.10 defaults to true ([#12713](https://github.com/dbt-labs/dbt-core/issues/12713))

## New Features
- Flags introduced in 1.9 and 1.10 defaults to true (#12713)
- Make MAXIMUM_SEED_SIZE_MIB configurable (#7117, #7124)
- Bundle the dbt-state plugin (>=2.18,<3.0) as an install dependency of dbt-core. The plugin is opt-in: PluginManager skips auto-discovery unless the user passes `--manage-state` on the CLI, sets DBT_ENGINE_MANAGE_STATE=true, or sets manage_state to true in the flags block of dbt_project.yml (equivalently in the config block of profiles.yml). Discovery filters disabled modules before importlib.import_module is called, so the default opt-in-off state incurs no import cost. (#13014)
- Add `--use-v2-parser` to delegate parsing to the fusion parser, load its `manifest.json` into a runtime Manifest, and bypass dbt-core's parser. Configurable via `--v2-parser` / `DBT_ENGINE_V2_PARSER` (defaults to `dbt-core-experimental-parser parse`) or the `flags:` section of `dbt_project.yml`. (#13029)
- Add support for user settings with flags reading writing (#13031)
- Add dbt login command (#13032)

## Bug Fixes
- Reconstruct unrendered config kwarg values as readable expressions instead of raw AST repr (#15336)
- Fix partial parsing raising a duplicate-metric CompilationError after a v2 inline model entry (semantic_model: true) is modified. Non-simple metrics (cumulative, derived, ratio, conversion) stored in schema_file.metrics were not cleaned up by _delete_v2_semantic_model_for_model, leaving stale unique_ids that triggered a false duplicate on the next parse. (#13004)
- Fix deferred function references to use alias instead of bare name (#12895)
- Cap the Python recursion limit while resolving the `selector:` method so a circular selector dependency raises a clean DbtRecursionError instead of crashing the process. The previous code relied on Python's default recursion limit (1000) tripping before the OS thread stack overflowed, but on platforms with smaller default stacks (notably Windows, ~1 MB vs ~8 MB on Linux/macOS) the margin can disappear once instrumentation (e.g. coverage) or stack-heavy plugins join the call chain. Lower the limi
- Honor `--manage-state` when DBT_ENGINE_MANAGE_STATE is set to false. The bundled dbt-state plugin reads DBT_ENGINE_MANAGE_STATE directly in its initialize(), so a CLI override of an opt-out env var was previously dropped silently: PluginManager loaded the plugin but the plugin self-disabled on import. PluginManager now normalizes os.environ to the Click-resolved value before importing each bundled plugin, so all three opt-in surfaces (--manage-state CLI, DBT_ENGINE_MANAGE_STATE env var, manage_s
- Strip dbt-core-only DBT_ENGINE_* env vars (e.g. DBT_ENGINE_USE_V2_PARSER, DBT_ENGINE_V2_PARSER) from the v2-parser subprocess env, and expand `~` in --v2-parser paths. Fusion hard-errors on unknown DBT_ENGINE_* vars, so enabling the v2 parser via DBT_ENGINE_USE_V2_PARSER previously broke the handoff. Stripping is keyed off click-bound options, so future core-only DBT_ENGINE_* additions are handled automatically. Non-click vars (DBT_ENGINE_STATE_*, recorder, deps) pass through unchanged. (#13029)
