Changelog
1.13.30 (core) / 0.29.30 (libraries)
New
- Dropped support for Python 3.10. Dagster now requires Python 3.11 or later.
- [ui] The asset catalog and asset graph no longer poll asset health data for assets whose health isn't shown, which reduces load when browsing large workspaces.
- [dagster-cloud-cli] Added a
dagster-cloud deployment copy-materializationscommand, which copies the latest asset materializations from one deployment to another and keeps their original timestamps.
Bugfixes
- [dagster-cloud-cli] Fixed Serverless fast deploys failing with
No module named ...when the project's code is not installed as a package.
Dagster Plus
- Users with the "Edit concurrency limits" permission can now edit concurrency limits from the Concurrency settings page.
- The Dagster+ MCP server now has tools to read schedules, sensors, and their ticks, to start and stop schedules and sensors, and to work with asset partitions, including adding and deleting dynamic partitions.
- Serverless code locations that take more than 3 minutes to load no longer fail to deploy.
- Serverless base images are no longer built for Python 3.10. Existing Python 3.10 PEX code locations keep running on the last Python 3.10 base image.
- Fixed the "Send Sample Alert" button on the alert policy details page not sending Slack alerts.
- Alert emails and Microsoft Teams alerts now escape customer-provided values such as job names and asset keys, so those values can no longer inject HTML.
1.13.29 (core) / 0.29.29 (libraries)
New
- [ui] Run pages now start loading logs sooner.
- [ui] The code location overview, deployment code locations list, and sensor and schedule detail pages now have mobile layouts.
- [ui] Improved global search performance on the home page and catalog.
- [ui] Improved global search responsiveness for deployments with many assets.
- [ui] Improved asset catalog load performance by sharing asset selection filtering across the page.
Bugfixes
- [dg] Fixed
dg --helpshowing no options or commands whentyper0.26 or later was installed. (Thanks, @DRACULA1729!) - [ui] Fixed shift-click selection in run, asset, and automation tables selecting nothing when the range crossed row 10.
- [ui] Selecting a large asset group in the catalog with its group checkbox no longer freezes the page.
- [ui] Fixed asset pages opening in the desktop layout on phones.
- [ui] Fixed the Runs page's bulk actions menu so that actions the user doesn't have permission for cannot be taken, and are shown as disabled.
- [ui] Fixed duplicate and stale rows accumulating in global search results when editing the query.
1.13.28 (core) / 0.29.28 (libraries)
New
- Dagster now supports protobuf 7.
- [ui] Selection input suggestions now update when their values finish loading.
- [ui] Selection inputs now suggest a tag key's values right after
=or an opening quote, and while typing a tag value. - [ui] When no suggestion matches, selection inputs now offer the typed value in quotes if it needs them.
- [ui] The Runs filter now lists tag keys, tag values, backfills, and partitions alphabetically.
- [ui] Background browser tabs no longer poll for updates on job tiles, sync pages, and log views, and finished run groups refresh less often.
- [dagster-cloud] Agents can now retry code locations that fail to start (for example, from an image pull failure or startup timeout) using the new opt-in
code_location_start_retrysetting (Helm:workspace.codeLocationStartRetry). - [dagster-databricks] Added a preview
run_job()method toPipesDatabricksClientandPipesDatabricksServerlessClient, which triggers an existing Databricks job by ID using Dagster Pipes. - [dagster-databricks] Raised the
databricks-sdkupper bound to<0.156.0, so newer Jobs API options likeperformance_targetcan be passed throughsubmit_args. - [dagster-dbt] Added a
dagster-dbt[dbt]extra that installs dbt v2 (the Fusion engine) from PyPI. Installingdbt2.x alongsidedbt-corenow raises a clear error instead of an opaqueImportError. - [dagster-dbt]
DbtProject,DagsterDbtProjectPreparer, and theDbtProjectComponentprojectarguments now acceptinstall_deps=Falseto skip runningdbt depsduring project preparation, for users who install dbt packages themselves. - [dagster-k8s]
dagster-k8snow supports version 37 of thekubernetesclient. - [dagster-snowflake]
dagster-snowflakenow requiressnowflake-snowpark-python>=1.37.0andsnowflake-connector-python>=3.14.0. Older snowpark releases fail to import with setuptools 82 or newer.
Bugfixes
- Fixed an issue where
UPathIOManager.storage_options, used by IO managers such asPolarsDeltaIOManager, raised anAttributeErrorwith universal-pathlib 0.3.0 or newer. (Thanks, @abhishekacharya200!) - [dagster-dbt] Fixed a crash when using
selectorexcludeon a dbt project withon-run-startoron-run-endhooks. - [dagster-dbt] Fixed a
ModuleNotFoundError: No module named 'dateutil'when importingdagster-dbtwithoutdbt-coreinstalled, such as with dbt v2 (Fusion).
Dagster Plus
- The audit log now records organization settings changes, removing users, team and custom role changes, API (SCIM) token creation and revocation, enabling or disabling SCIM, deployment agent type changes, and group and user changes made through SCIM provisioning.
- The "Runs in progress" and "Runs queued" Insights metrics now capture short-lived spikes, such as bursts of very short runs, that were previously missed. Alerts on these metrics may now trigger on short bursts. Requests for these metrics that don't specify an aggregation now use Max.
- The "Run concurrency" Insights metric is deprecated in favor of "Runs in progress".
- The Serverless base and user-code images now ship pip 26.2.2, so
pip installin images built ondagster-cloud-serverless-baseno longer trusts the compromised eMudhra/emSign CA roots. - Fixed
add_historical_run(used by Airlift) failing with a GraphQL error. - [ui] The audit log event details dialog now scales with the window, wraps long lines, and supports folding the JSON.
- [ui] Fixed a false warning that a code location's component repository differs from the repository it deploys from.
1.13.27 (core) / 0.29.27 (libraries)
New
- New Dagster+ organizations no longer start with a
[Dagster Plus] Credit Limit Exceededalert policy. Only the[Dagster Plus] Run Exceeds 24 Hourspolicy is created by default. - [ui] Added a mobile layout for the run details page, showing the run's tags, logs, and steps.
- [dagster-cloud] BigQuery Insights cost queries now bound the
INFORMATION_SCHEMA.JOBSscan to the dbt invocation's time window, instead of scanning up to 180 days of job history. (Thanks, @pathisaivarun!) - [dagster-sling] Snowflake connections defined with
connection_stringnow identify Dagster as the partner application, unlessapplicationis already set.
Bugfixes
- [ui] Fixed an issue where run action menus stayed open after selecting an item, so clicking "Re-execute" more than once while a launch was in progress created duplicate runs.
- [ui] Fixed a crash when selecting an asset from the asset graph's "Jump to…" search with the keyboard.
- [ui] Fixed an issue where pages could fail to load, or emit repeated errors, when the browser's IndexedDB storage was unavailable or over quota. Cached data now falls back to memory.
- [ui] Selection inputs no longer drop values containing characters such as
@,-, or., so values like email addresses and dbt model names are kept whole when committing and in autocomplete suggestions. - [ui] Selection inputs, including the Runs search, now suggest and apply queries correctly when the query starts with whitespace.
- [ui] Fixed an issue where selection inputs containing emoji, or spaces around commas, could commit a corrupted query.
- [ui] Failing backfills now appear when filtering the Runs page by Failed, and are included in the Failed count.
- [ui] The delete run dialog no longer offers "Terminate instead" to users without permission to terminate the run.
Documentation
- Added a guide for deploying the Dagster+ Hybrid agent on Azure Container Apps.
1.13.26 (core) / 0.29.26 (libraries)
Breaking Changes
- [dagster-dbt]
dagster-dbtno longer installsdbt-core. It is now available as thedagster-dbt[dbt-core]extra. Do not installdbt-coreinto an environment that also has dbt Fusion'sdbtPyPI package: both claim thedbtimport namespace and overwrite each other's files, and pip reports no error.
New
- Sensor ticks that request a run larger than the instance's run size limit now fail with an explicit error naming the offending run requests, instead of storing those requests in tick history.
- The
SF_PARTNER_IDenvironment variable is now set by default, to allow for partner attribution on Snowflake connections made through third-party libraries. - Run monitoring now includes the run worker's debug info (for example, a Kubernetes
OOMKilledtermination reason) when it fails a started run because the run worker failed. (Thanks, @hosaka2!) - [dg]
dg list envs,dg plus create env, anddg plus pull envnow accept a--deploymentoption (or theDAGSTER_CLOUD_DEPLOYMENTenvironment variable) to target a deployment other than the configured default. - [dagster-cloud] The published
dagster-cloud-agentimage now includes the Azure Container Apps launcher. - [dagster-dbt] A dbt Fusion binary on
PATHis now used as-is, instead of being shadowed by thedbtentry point thatdbt-coreinstalls into the virtualenv. - [dagster-dbt]
fetch_column_metadata()andfetch_row_counts()no longer fail the step when running on the dbt Fusion engine, or when dbt adapter initialization fails. They now log a warning and emit events without the metadata. - [dagster-dbt]
dagster-dbt'ssqlglotdependency no longer pins an upper bound. Column lineage generation now works on sqlglot 28.1 and later, including the performance improvements in 30.x for wide models. - [dagster-dbt] Asset materializations from dbt runs now carry the node's dbt status as metadata.
Bugfixes
- GraphQL event-log, tick, and run-record queries no longer fail when the requested limit exceeds the server-side default. The limit is clamped to the default, and the remaining rows are available by paginating.
- Fixed a bug where a run's asset list could be under-reported in the UI for runs with a large number of materializations, and where an asset could be reported as failed even though it was materialized by a different step than the one that planned it.
- Fixed an issue where the UI could keep displaying a code location's previous container image after a rolling update, until browser storage was cleared. (Thanks, @HynekBlaha!)
- [ui] Run filters now keep tag values that contain
=, such as partition keys likeregion=west. - [ui] Selection inputs no longer collapse repeated spaces inside quoted values, and now have an accessible name.
- [ui] On cursor-paginated lists such as Runs, "Newer" now returns to the previous page after you switch tabs and press browser Back, instead of jumping to the first page.
- [dagster-dbt] Fixed a bug where dbt models that finished with a no-op, reused, or warn status emitted no materialization, so the asset silently stopped updating and downstream freshness checks and automation conditions never fired.
partial successandskippedare still treated as failures, since dbt marks a partial-success node's dependents as errored, and dbt Fusion reports both a genuine no-op and an upstream-failure skip asskipped. - [dagster-dbt] Fixed an issue where dbt Fusion models with no
ref()orsource()calls were still left out of asset selection in environments withoutdbt-coreinstalled, which the fix in 1.13.25 did not cover. Selections other than the defaultselectare still affected. - [dagster-dbt] Fixed a bug where, when running on dbt Fusion without
dbt-coreinstalled, every passing dbt test was reported as a failed asset check. - [dagster-dbt] Fixed a bug where a dbt Cloud run containing seeds executed under dbt Fusion failed event translation with
KeyError: 'materialized', dropping materializations for every asset after the first seed in the run. - [dagster-dbt] Fixed a failure reloading a dagster-dbt project on Windows, where the local defs state snapshot could not be rebuilt if it contained read-only files such as a git checkout's object files.
Documentation
- Corrected the Dagster+ credit usage documentation: credits are counted per step execution plus per asset materialization event, and the page now covers retries, failures, and how Insights attributes credits across assets materialized in one step.
1.13.25 (core) / 0.29.25 (libraries)
New
- Improved the performance of declarative automation for partitioned assets with a long materialization history.
- [ui] The UI now has a mobile layout for phones, with a new navigation menu and mobile versions of the Home, Jobs, Automation, Timeline, Asset Catalog, and Asset Overview pages. Pages without a mobile version show a banner with an option to always use the desktop site, which can also be set in user settings.
- [ui] When launching a time-partitioned asset, the partition selector now shows the most recent 90 days by default, with an option to show all partitions.
- [dagster-aws] The ECS run launcher now supports resuming run workers, so run monitoring's
max_resume_run_attemptscan be set above 0 on ECS deployments. - [dagster-prefect] The Prefect Pipes clients now read messages through Prefect's logs API by default, so a shared filesystem or bucket is no longer needed. Prefect deployments work without changes to the flow. Flows and tasks that open a Pipes session must pass
message_writer=PipesPrefectLogsMessageWriter().
Bugfixes
- [dg] Fixed
AttributeError: module 'dbt' has no attribute 'contracts'when passing a file nameddbt.pytodg plus integrations dbt manage-manifestanddagster-cloud ci manage-state. - [dagster-dbt] Fixed an issue where dbt Fusion models with no
ref()orsource()calls were silently left out of asset selection, including inDbtProjectComponent. - [ui] Fixed an issue where pressing Newer on paginated lists such as Runs jumped to the first page after using the browser Back button or reloading the page.
Documentation
- Added a dbt Fusion page to the dbt integration docs.
1.13.24 (core) / 0.29.24 (libraries)
New
- Loading a project whose root module is not importable now raises an error explaining that the project package is likely not installed, instead of a bare
ModuleNotFoundError. - [dagster-cloud] The ECS agent now supports cross-account service discovery. When the Cloud Map namespace lives in a different AWS account from the agent, the agent registers code server tasks in Cloud Map directly and reconciles them on an interval, configurable with the new
service_discovery_reconcile_intervaloption (default 300 seconds). Same-account deployments are unchanged. - [dagster-dbt]
fetch_column_metadata()now emits column lineage for dbt snapshots on dbt 1.12 and later, and no longer logs a warning and traceback for them on earlier versions.
Bugfixes
- Fixed a bug where a job that included a
@multi_assetwithcan_subset=Trueand specs using different partitions definitions failed to resolve withDagsterInvalidDefinitionErrorwhen one of its unselected dependencies was converted to an external asset. (Thanks, @Terroface!) - Fixed
--use-sslbeing silently ignored when connecting to a gRPC code server via--grpc-portor--grpc-socket, which caused an insecure channel to be used. Also fixeddagster dev --use-legacy-code-server-behaviorsilently dropping--package-nameand--autoload-defs-module-namewhen launching the webserver and daemon. - Fixed a bug where a callable object with a custom
__signature__had its type hints read from__call__instead, causing resource parameters to be misinterpreted as asset inputs or dropped from a sensor's required resources. - [ui] Fixed an issue where asset health and other live data could remain stale after a failed refresh until the page was reloaded.
- [dagster-airflow] Fixed a bug where every Airflow task log line was written twice to the compute logs on Airflow 2.9 and later.
- [dagster-dbt] Fixed an
AttributeErrorraised when aDbtProject'sproject_dirwas a string rather than aPath, which could happen after the project was round-tripped through Dagster metadata. - [dagster-dbt] Fixed the type annotation of
build_schedule_from_dbt_selectionso that non-stringtagsvalues, which already worked at runtime, no longer fail type checking, matchingdefine_asset_job. - [dagster-k8s] Fixed a bug where a Dagster Pipes Kubernetes run whose pod had a failing init container would hang until the wait timed out (a day by default) instead of failing with the init container's error.
Documentation
- Added a guide on code-backed and UI-managed alert policies in Dagster+.
- Added documentation for owner-scoped RBAC in Dagster+.
- Added a page on asset groups and nested groups, and corrected the asset selection syntax reference to note that wildcard matching is not limited to the
keyfilter.
1.13.23 (core) / 0.29.23 (libraries)
New
- In Dagster+, alert policies can now target deployment capacity metrics — queued runs and in-progress runs — evaluated over a rolling window with aggregations such as max.
- In Dagster+ Serverless, fast deploys now build a Docker image instead of a Python executable when the target environment cannot run one: Serverless on Kubernetes, or a Harbor image registry. Set
DAGSTER_CLOUD_DISABLE_PEX_DOCKER_REDIRECTto opt out. - Component definition files can now use the
.ymlextension in addition to.yaml, as candagster.yamlandworkspace.yaml..yamlstill takes precedence when both are present. - The
dagster-k8s,dagster-celery-k8s, anduser-code-exampleimages are now published as multi-platform images supporting both amd64 and arm64. - [cli]
dagster project from-examplenow produces a components-layout project that installs withuv syncoutside the Dagster repo. - [ui] Updated the Prefect kind tag icon, which now adapts to dark mode.
Bugfixes
- [ui] Fixed an issue where pages that refresh automatically stopped polling after a failed request.
- [ui] Fixed an issue where the Catalog assets folder tree could jump back to the top while scrolling.
- [dagster-dbt] The dbt Cloud client now tolerates a trailing slash in
access_url, treats deleting an already-deleted job as success, and includes dbt Cloud's error response body when logging request failures. - [dagster-prefect] Failure messages now name the Prefect run state consistently across Python versions.
1.13.22 (core) / 0.29.22 (libraries)
New
- Run dequeuing is now significantly faster when concurrency pools are in use and many runs are queued, as pool state is read once per dequeue pass rather than repeatedly.
- In Dagster+, the MCP server's
launch_job_runandlaunch_asset_runtools no longer require a code location and repository name. They are looked up from the job being launched. - [ui] The tick timeline now supports filtering to a time window, paging through history, and a live-updating view.
- [dagster-dbt] Added support for dbt-core 1.12. (Thanks, @jrbasso!)
- [dagster-looker] Now requires
python-liquid>=2.2.1(previously<2). - [dagster-prefect] A new Prefect integration is available in preview. Launch Prefect deployments and background tasks from a Dagster asset with Dagster Pipes, including partition mapping and cancellation forwarding.
Bugfixes
- In Dagster+, querying asset metrics by asset key no longer fails with a server error.
1.13.21 (core) / 0.29.21 (libraries)
New
- Asset backfills whose runs have all finished but which still have partitions with no materialization status now complete as failed instead of remaining in progress indefinitely.
- In Dagster+, wiping and deleting dynamic partitions in a single action now also supports multi-partitioned assets that use the dynamic partitions definition as a dimension.
- In Dagster+, alert policies defined in a YAML file can no longer be edited, disabled, or deleted from the UI. Update the file and sync instead. Muting is still available from the UI, and the in-app YAML editor now shows only UI-managed alert policies.
- In Dagster+, syncing alert policies from a YAML file no longer deletes alert policies created in the UI. Alert policies that existed before this release are never removed by a sync and must be deleted manually from the UI.
- [ui] Automation condition evaluations now explain history-dependent conditions (
since,newly_true,newly_missing) by showing the remembered values that determined them, such as when a latch was set or reset and an operand's value on the current versus previous tick, instead of the operands' current values, which could appear to contradict the parent condition.
Bugfixes
- Fixed an issue where a freshness policy declared for an asset in one code location was ignored when another code location defined the same asset without a policy (for example, a dbt source spec paired with an ingestion-tool materialization). The policy now appears in the asset catalog and is evaluated by the freshness daemon.
- Fixed a bug where a backfill run that materialized some partitions of an asset and failed on others left the failed partitions showing as in progress.
- [dagster-postgres] Fixed a connection leak where checking for the existence of the event log table did not return its connection to the pool, which could exhaust the webserver's connection pool on instances with many asset nodes. (Thanks, @watacoso!)
Documentation
- Updated the list of Dagster+ IP addresses that agents connect to, for use in network allowlists.
1.13.20 (core) / 0.29.20 (libraries)
New
- In Dagster+, dynamic partitions can now be wiped and deleted in a single action, clearing the asset's degraded health status. Multi-partitioned assets are not yet supported.
- Alert policies can now notify on successful code location deploys.
- [ui] Filter inputs now show your recent searches in the autocomplete dropdown before you start typing.
- [ui] Refreshed the Dagster and Dagster+ logos and favicons to the new branding.
- [ui] Updated the Google kind tag icons. (Thanks, @dragos-pop!)
Bugfixes
- [dagster-aws] Fixed an issue where an ECS run launch would fail instead of retrying when ECS reported a transient
AGENTfailure. (Thanks, @yishern!)
1.13.19 (core) / 0.29.19 (libraries)
New
- [ui] Added an expand/collapse all toggle to the automation condition evaluation table.
Bugfixes
- [ui] Fixed an issue where the sensor dry run "Apply requests & commit tick result" action could launch runs even when creating or deleting dynamic partitions failed due to insufficient permissions.
1.13.18 (core) / 0.29.18 (libraries)
New
- Assets whose failed partitions are all awaiting an automatic retry now report a warning health status instead of degraded. The asset health popover and alert notifications indicate that a retry is pending.
- [dagster-snowflake]
SnowflakeDbtProjectComponentnow supports configuringdefs_state, so Dagster+ deployments can opt into versioned state storage.
Bugfixes
- Fixed an issue where a config field typed as a discriminated union with a default value ignored that default.
- [dagster-snowflake] Fixed an issue where the
SnowflakeDbtProjectComponentobservation sensor could report Dagster-triggered dbt runs as externally triggered. - [dagster-snowflake] Fixed an issue where
SnowflakeDbtProjectComponentraised an error when dbt built models outside the selected subset of assets.
1.13.17 (core) / 0.29.17 (libraries)
New
- [ui] The asset graph sidebar's search now matches only assets shown in the sidebar, matches on the full asset key as well as the displayed name, lists results alphabetically, and shows the namespace for results whose name is ambiguous.
- [ui] Added a "Copy asset key" item to the asset node context menu.
- [ui] Added a SLURM kind tag icon. (Thanks, @geoHeil!)
Bugfixes
- [dg] Fixed an issue where a Hybrid deployment running on Kubernetes could be misidentified as Serverless, causing PEX-configured builds to be packaged as Docker images.
- [dg] Relaxed the
tomlkitversion constraint to allow newer releases. (Thanks, @geoHeil!) - [ui] Fixed the asset graph sidebar to sort assets by their displayed name rather than their full asset key.
- [ui] Fixed an issue where text in the search UI was truncated earlier than necessary.
- [dagster-cloud] The Kubernetes agent now degrades gracefully when its service account is not permitted to manage ConfigMaps, launching code servers without fast in-place reload rather than failing to deploy the code location. Granting the agent's Role permissions on
configmaps, which the latest agent Helm chart includes, restores fast reloads. - [dagster-spark] Fixed a command injection issue in
spark_resourceandcreate_spark_op:spark-submitis now invoked directly instead of through a shell, so shell metacharacters inapplication_argumentsare no longer interpreted. Multiple and quoted arguments continue to work. - [dagster-tableau] Fixed an issue where empty workbooks could cause code location loads to fail.
Documentation
- Documented how to connect to the Dagster+ MCP server using OAuth.
- Corrected the Helm repository and chart names in the Kubernetes agent configuration reference.
- Integration pages can now be filtered by tag.
1.13.16 (core) / 0.29.16 (libraries)
New
- Declarative Automation can now automate jobs, available as a preview feature. Pass an
automation_conditiontodefine_asset_job— wrapping an asset-level condition withAutomationCondition.any_job_root_assets_matchorAutomationCondition.all_job_root_assets_match— to launch a single run of the job when the condition becomes true. Evaluation history is viewable in the new Automation tab on job pages. - [ui] The Components tab for a code location now lists all component instances in the location, not just app-managed ones.
Bugfixes
- [dagster-airbyte] Fixed a bug where Airbyte API requests were not retried on transient failures, causing syncs to fail after a single transient error despite the
request_max_retriessetting. (Thanks, @MercureTony!)
Documentation
- Clarified the distinction between definition-time and runtime metadata, and documented how to access asset definition metadata from a custom I/O manager.
- Documented the available configuration options for the Soda integration.
1.13.15 (core) / 0.29.15 (libraries)
New
- [dagster-snowflake] Added the
SnowflakeDbtProjectComponent(Preview) for natively orchestrating dbt projects on Snowflake.
Documentation
- Added documentation for the Dagster MCP server.
1.13.14 (core) / 0.29.14 (libraries)
Bugfixes
- Fixed a 401 error from the serverless I/O manager when materializing assets in an organization with more than one full deployment.
- Fixed a 400 error from the serverless I/O manager when materializing assets whose storage keys contain special characters.
1.13.13 (core) / 0.29.13 (libraries)
New
- [ui] The asset launch dialog now automatically expands the warnings section when alerts are present.
Bugfixes
- Fixed an issue where a fresh installation of
dagstercould resolve an incompatible version ofgrpcio-health-checking, breaking code server imports due to aprotobufversion conflict. - [ui] Fixed an error that occurred when viewing tick details for declarative automation runs.
1.13.12 (core) / 0.29.12 (libraries)
New
- [ui] Improved the performance of the runs feed for runs that target large numbers of assets and asset checks. The feed now fetches a bounded preview of the selection and loads the full lists on demand.
- [dagster-aws] Added a
dashboard_refresh_intervalparameter toPipesEMRServerlessClientand increased its default so that Spark UI URLs are no longer invalidated prematurely during a run. (Thanks, @noy-solvin!)
Bugfixes
- Fixed a bug where a partitioned asset check with its own automation condition could raise a
CheckErrorand halt the entire automation tick when it was requested on a tick that did not materialize the asset it targets. - Fixed a bug where a code location could be left stuck in an error state after a transient gRPC failure during refresh (common during Kubernetes rolling deployments). The gRPC server watcher now periodically retries refresh for locations whose load error is a
DagsterUserCodeUnreachableError. (Thanks, @jmoldow!) - [ui] Fixed an issue where long pool names could overflow their container; they are now truncated, and the run pools dialog wraps and scrolls when there are many pools.
- [dagster-dbt] Fixed a
KeyErroronfailureswhen converting dbt run results to Dagster events for runs that omit that key (such as dbt Fusion).
1.13.11 (core) / 0.29.11 (libraries)
New
- [ui] The asset catalog page now renders as a single virtualized list, so workspaces with many asset groups or code locations no longer freeze the UI when expanding those sections.
- [dagster-dbt] Added a new
"insights"option toDbtProjectComponent'sinclude_metadatafield, enabling Dagster+ Insights tracking from YAML config. - [dagster-graphql] Added an optional
limitargument and newassetSelectionCount/assetCheckSelectionCountfields to theRunGraphQL type, so clients can render a bounded preview of a run's asset/check selection alongside the true totals.
Bugfixes
- Asset check history is now cleared when an asset or its partitions are wiped; stale entries no longer linger in the Execution History and Partitions views.
- [ui] The run detail page header now displays the asset-check count for asset-job runs, and the count is now read from the execution plan rather than by scanning the full run event log.
- [ui] The "View asset lineage" item in the run actions menu now correctly scopes to the assets in that run.
- [dagster-dbt]
.with_insights()now logs a warning instead of raising when called against an unsupported adapter.
Documentation
- Added a new page documenting Dagster+ code-location snapshot size limits, with a script you can run locally to estimate snapshot sizes before deploying.
- Documented the "Run concurrency" Insights metric.
- Fixed an invalid
poolconfig in the "Preventing concurrent dbt snapshots"DbtProjectComponentexample.
1.13.10 (core) / 0.29.10 (libraries)
Bugfixes
- Fixed a bug where
DagsterInstance.get_latest_materialization_event(andget_asset_records) could return a stale pre-wipe materialization for a wiped asset once a new run targeting the asset started or an observation was reported. In Dagster+, fixed the analogous bug where wiping partitions could leave the wiped partition's materialization as the asset's latest materialization. - Fixed an issue where an asset backfill could get stuck — emitting no further runs but never completing — when an asset whose partitions definition includes certain dates depended on an asset whose partitions definition excludes them.
- Fixed a performance issue where assets partitioned by a cron schedule using an explicit minute list (e.g.
0,30 * * * *) computed partition counts much more slowly than the equivalent*/30schedule. - Improved the performance of loading the backfills for a partition set on deployments with a large number of backfills, which previously fetched and deserialized every backfill in the deployment on each request.
- [ui] Fixed a performance regression that caused views with truncated text, such as the asset catalog, to render slowly.
- [dagster-cloud] Fixed an issue where importing
dagster_cloud.serverlesscould fail with a missingboto3dependency on serverless deployments that did not install the[serverless]extra.
1.13.9 (core) / 0.29.9 (libraries)
New
- Asset group names may now contain
/separators to define hierarchical groups (e.g.marketing/ads). Hierarchical groups can be selected with wildcards in asset selections (e.g.group:"marketing/*") and are rendered as nested groups in the asset graph. - Added an
is:filter to the asset selection syntax and search filters to select assets by type (e.g.is:external,is:materializable). - [dg]
DG_PROJECT_PYTHON_EXECUTABLEin a project's.envis now parsed viapython-dotenv, soexport KEY=value, quoted values, and trailing comments are honored. - [ui] When filtering assets in the lineage view with the selection input, a "Save selection" button now allows creating a saved selection directly from the input value.
- [ui] Redesigned the recent updates timeline on asset pages.
- [dagster-cloud] Uploads through S3 presigned URLs (code location snapshots, serverless I/O manager objects, compute logs, and PEX files) now retry on transient HTTP 500 errors from S3.
- [dagster-dlt]
DltLoadCollectionComponentnow supportspartitions_defandbackfill_policy. (Thanks, @Benjamin0313!) - [helm] User code deployments now support running multiple replicas via
replicaCount. All replicas of a deployment share a consistent gRPC server ID, so multi-replica deployments do not trigger spurious code location reloads. (Thanks, @HynekBlaha!)
Bugfixes
- Fixed an issue where date-like strings (e.g.
"2021-10-30") in YAML config files were converted to datetime objects instead of being passed through as strings. - Fixed an issue where run failure sensors did not receive error information when a run failed due to a step failure. The originating step error is now available on the sensor context.
- Fixed an issue where schedules using cron strings constrained to specific hours or days (e.g.
*/15 9-16 * * 1-5) were incorrectly treated as ticking uniformly throughout the day, which could produce overcounted partition counts and oversized backfills. - Fixed a deadlock that could occur when shutting down event log watchers on Postgres or MySQL storage while a watch callback was concurrently unsubscribing.
TemplatedSqlComponentnow generates a unique default op name based on its template, preventing op name collisions when multiple components omit an explicit execution name.- [ui] Fixed an issue where clicking "View runs" in the backfill step status dialog did not open the runs dialog.
- [ui] On the asset partitions page, the focused partition now resets when it falls outside the selected partition range, instead of continuing to display a partition that is no longer in the range.
Documentation
- [dagster-dbt] Added a "Blue/green deployments" section to the dbt patterns and best practices guide, covering the clone-then-swap pattern.
1.13.8 (core) / 0.29.8 (libraries)
New
- Special characters are now allowed in team
ownersfor jobs, schedules, and sensors. (Thanks, @dragos-pop!) - Added
kindstags and icons for Microsoft Fabric and OneLake. (Thanks, @MartyP233!) - The BigQuery, Snowflake, and DuckDB I/O managers now skip the table write when an asset returns an empty DataFrame, logging a warning instead. This prevents incorrect type inference and degenerate tables for empty partitions.
- [ui] The per-code-location "Docs" tab is now "Components", with its content available under a "Library" subtab. Existing
/docslinks continue to work via redirect. - [dagster-aws] The EMR PySpark step launcher now honors a configured S3 job package path.
- [dagster-cloud]
code_server.*metrics now carry aserver_instance_idtag identifying the underlying gRPC server process. For multi-replica code locations, the tag identifies whichever replica answered the most recent metrics ping.
Bugfixes
InstigationLoggernow stringifies log record attributes that are not JSON-serializable instead of failing to emit the log. (Thanks, @jonaslb!)- Fixed a SQL injection vulnerability in
dagster-clickhouse,dagster-clickhouse-pandas, anddagster-clickhouse-polarswhen using dynamic partition keys. ClickHouse partition queries now bind partition key values as driver parameters instead of interpolating them into SQL strings. - Fixed an issue where tag values in component YAML files were not coerced correctly.
- [dg]
dg labs ai dispatchno longer writes aplan.mdartifact into version control. - [dg] Fixed an error that occurred when using
TypedDict-typed fields in component configuration. - [ui] Fixed partition step status labels and squares that rendered incorrectly after the CSS Modules migration.
- [ui] Fixed backfill progress not reaching 100% until all runs had completed.
- [dagster-databricks] Fixed Databricks workspace job list pagination and added retries for rate-limit responses.
- [dagster-dbt] Fixed
DbtProject.prepare()to always rundbt depswhen dependency files are present. - [dagster-dbt] Fixed YAML-based translation in
DbtProjectComponentsubclasses to also translate dependency keys. - [dagster-dbt] Fixed an issue where dbt unit tests could be ignored unexpectedly.
- [dagster-dbt] Fixed incorrect asset key translation when generating column lineage with
DbtProjectComponent. - [dagster-dbt] Fixed unbounded recursive copying of the
.local_defs_state()directory when a dbt project was located at the repository root. - [dagster-cloud-cli] Fixed
dg plus deployfailing withNo module named pipinuv-managed environments. - [dagster-cloud-cli] Removed an overly strict dependency-file check from the Docker deploy path.
Documentation
- Added an integration reference for
dagster-elasticsearch. - Added documentation for the OpenLineage integration.
- Added documentation for
dagster-hf-datasets. - Added an example covering deployment strategies.
1.13.7 (core) / 0.29.7 (libraries)
New
- Added an
ownersparameter tobuild_schedule_from_partitioned_jobto set owners on the resulting schedule. (Thanks, @dragos-pop!) - [dagster-airlift] Added support for Python 3.12, 3.13, and 3.14.
- [dagster-fivetran] The Fivetran component now supports a
fetch_column_metadataoption to fetch column-level metadata for synced tables. - [dagster-k8s] When
includeConfigInLaunchedRuns.enabledis set in the Helm chart, run pods now inheritnodeSelector,tolerations, andpodSecurityContextfrom user deployment configuration.
Bugfixes
- Fixed a SQL injection vulnerability in
dagster-clickhouse,dagster-clickhouse-pandas, anddagster-clickhouse-polarswhen using dynamic partition keys. ClickHouse partition queries now use driver parameter binding instead of interpolating partition key values into SQL strings. - Fixed a race condition where readers polling for a run to reach
FAILUREcould observe the failed status before thedagster/failure_reasontag was written. - Fixed a regression where a blocking asset check that did not emit a result (e.g. a dbt test that dbt declined to run under
indirect_selection: cautiousorbuildable) could silently cause downstream assets to be skipped. Missing blocking check results now allow downstream assets to proceed and log a warning; failed blocking checks continue to fail the step and the run as before. - Improved deduplication in
AutomationCondition.any_downstream_conditions()to prevent recursive blowups in condition size when combined with other automation conditions. - [ui] Fixed extra scrollbars appearing in the asset overview and asset sidebar.
- [dagster-k8s] Fixed an
AttributeErrorwhen usingkubernetesclient v36+, which uses PEP 585 dict syntax (e.g.dict[str, str]) in its OpenAPI type annotations. (Thanks, @vanika02!)
1.13.6 (core) / 0.29.6 (libraries)
New
- Schedule, sensor, and asset daemon ticks now dispatch instigators round-robin across code locations, preventing a single code location with many instigators from delaying launches in other code locations.
- Added
dg api run launchcommand for launching runs from the CLI against the Dagster+ API. - Improved declarative automation performance for assets sharing the same cron schedule.
- [ui] The asset catalog now shows a toggle to hide duplicate connections-defined assets when an SDA and a connection target the same table, and the asset sidebar links to matched assets.
- [dagster-dbt] Added a configurable job pool to
DbtCloudComponentandDbtCloudWorkspaceto work around dbt Cloud's one-concurrent-run-per-job limit.
Bugfixes
- Fixed an issue where asset keys and partitions containing leading "/" characters or ".." characters would sometimes cause IOManagers to read and write outside of the supplied
base_path. - Fixed a regression where a blocking asset check that did not emit a result (e.g. a dbt test skipped under
indirect_selection: cautiousorbuildable) would silently cause downstream assets to be skipped. Missing check results now allow downstream assets to proceed; failed checks still fail the step. - Softened the
job_snapshot_idmismatch invariant in execution plan persistence from a crash to a warning, preventing run launch failures when client and server compute slightly different snapshot IDs. - Pinned
antlr4-python3-runtimeto<4.14to prevent potential breakage from future ANTLR minor version bumps. - [ui] Fixed minor flex alignment issues for tags and metadata buttons on asset catalog detail pages.
- [dagster-k8s] Added support for the PEP 585
dict[str, str]syntax used by thekubernetesclient v36+ when snake-casing model dictionaries, fixing anAttributeError: module 'kubernetes.client.models' has no attribute 'dict[str, str]'raised onkubernetes>=36. (Thanks, @vanika02!)
Documentation
- Added documentation for defining asset dependencies across code locations.
- Added
dg utilsCLI reference documentation. - Added missing
DAGSTER_POSTGRES_HOSTenvironment variable to the Docker deployment documentation. - Expanded Databricks integration documentation with Databricks Connect, serverless compute (Pipes), and UC Volumes patterns.
- [dagster-dbt] Documented the
FROM_ASSET_FAILUREretry strategy for dbt asset jobs.
1.13.5 (core) / 0.29.5 (libraries)
New
- Added kinds tags for Alteryx, Boomi, and SAP.
- Raised the SQLite
busy_timeoutdefault from 5s to 30s onSqliteEventLogStorageandConsolidatedSqliteEventLogStorageto better tolerate slow or network-backed$DAGSTER_HOMEfilesystems. - [ui] Removed the "Scheduled" tab from the runs feed.
- [ui] The sensor tick timeline now shows more ticks on the newest page, matching the list of ticks shown in the table below.
- [dagster-k8s] Added a
delete_pod_on_completionflag toPipesK8sClient.run, allowing callers to opt out of the automatic pod deletion at the end of a Pipes run. - [dagstermill] Dropped support for papermill 1.x.
dagstermillnow requirespapermill>=2.0.0.
Bugfixes
- Job backfills now retry on transient daemon errors such as code-server unreachable, matching the existing behavior for asset backfills. The
DAGSTER_MAX_ASSET_BACKFILL_RETRIESenvironment variable has been renamed toDAGSTER_MAX_BACKFILL_RETRIES, with a fallback to the old name for backwards compatibility. - Fixed a bug where asset checks could be dropped from a
JobDefinitionwhen selected as part of a subset selection. - Fixed a bug where, in a partitioned-asset backfill running multiple partitions concurrently, an inline
AssetCheckResultcould record atarget_materializationpointing to a different partition's materialization. - Fixed a regression introduced in 1.12.10 where
OutputContext.asset_partition_key_rangeandInputContext.asset_partition_key_rangecould raiseCheckError: The instance is not available to load partitionsfor assets using aMultiPartitionsDefinitionthat includes aDynamicPartitionsDefinition. - Improved the error message shown when the instance is not available to load dynamic partitions, recommending the use of
partition_loading_context. - [ui] Fixed an issue where viewing the Lineage tab for an asset could cause the page header to disappear.
- [dagster-dbt] Fixed a bug where, when a dbt asset selection grew large enough to switch from inline
--select/--excludeto a temporaryselectors.yml, runtime--excludearguments were silently dropped. - [dagster-dbt] Fixed runtime selection arguments not being properly applied when used with
@dbt_assetsops. - [dagstermill] Increased the default Jupyter kernel-startup timeout for
dagstermillnotebook ops from 60s to 120s.
1.13.4 (core) / 0.29.4 (libraries)
New
typing.Mappingandtyping.Sequenceannotations are now supported on op and asset inputs.- Added a
path_prefixparameter toDagsterGraphQLClientto support connecting to webserver deployments behind a non-root path prefix. - Added a
storage_kindfield toTableMetadataSetto denote the storage system that backs a table (e.g.,snowflake,databricks,bigquery). define_asset_jobnow validates owner strings at definition time, producing clearer error messages for invalid owners.- [ui] The
schedule:andsensor:selector syntax now matches assets in jobs targeted by the schedule or sensor, in addition to assets directly in the asset selection. - [dagster-azure] Added a configurable
endpoint_suffixparameter to ADLS2 and Blob Storage utilities, resources, components, and compute log manager (also exposed asendpointSuffixin the Helm chart forAzureBlobComputeLogManager), enabling Azure Government Cloud, Azure China, and other sovereign cloud endpoints. - [dagster-dbt] Added a
translationparameter toDbtCloudComponentfor customizing how dbt models are translated into Dagster assets. - [dagster-soda] Added a new
dagster-sodalibrary (preview) containing theSodaScanComponentfor executing Soda Core data quality checks.
Bugfixes
- Fixed a bug where asset checks could be dropped from a job during subset selection.
- Asset checks can now be defined on assets whose names contain dots.
- [dg] Fixed a bug where
dg plus deploydid not read the local config stored bydg plus login. - [ui] Fixed the "Flatten graphs" toggle in the graph query input on the Launchpad.
- [ui] Restored CommonMark-compliant Markdown line break rendering in Markdown descriptions and docs blocks. (Thanks, @vidiyala99!)
- [dagster-airbyte] Fixed an issue where Airbyte job timestamp parsing could fail with newer Airbyte API versions due to stricter ISO format handling.
- [dagster-aws]
InsufficientFreeAddressesInSubnetand "Task provisioning failed" are now treated as transient ECS stop reasons, so affected runs are retried instead of marked as a permanent failure. - [dagster-dbt] Fixed a bug where path-based dbt selectors did not match assets correctly because absolute paths were not calculated relative to the project root.
- [dagster-dbt] Fixed an issue where conflicting source metadata could spuriously raise an error.
Documentation
- Added documentation for multi-region failover in Dagster+.
- Renamed the DuckDB integration documentation to MotherDuck.
- Rebranded the in-app Compass assistant as Dagster+ AI in documentation.
1.13.3 (core) / 0.29.3 (libraries)
New
- Added an
ownersparameter todefine_asset_job, mirroring the field on regular jobs. - Improved error messages when required config is missing in Dagster jobs, with clearer guidance on which fields are missing and example config to provide.
LOGS_CAPTUREDevent messages no longer say "Started capturing logs", since compute log managers typically upload logs on completion rather than streaming in real time.- [ui] Added client-side validation for the deployment settings YAML editor that warns when unknown keys are detected.
- [ui] Op tags are now shown on the asset details page in a separate "Op tags" row, alongside the asset's own tags.
- [ui] Redesigned the sensor dry run dialog with a stacked cursor layout, copy buttons for cursor values, and an inline run config preview.
- [dagster-clickhouse] Added new
dagster-clickhouse,dagster-clickhouse-pandas, anddagster-clickhouse-polarslibraries with native ClickHouse resources, IO managers, anddgcomponents. - [dagster-cloud] The
EcsUserCodeLaunchernow accepts arepository_credentialsconfig option, allowing ECR credentials to be configured at the agent or deployment level instead of only per code location. - [dagster-postgres] Added workload identity federation (WIF) authentication for PostgreSQL via a new
auth_providerconfig option (azure_wif,gcp_wif, oraws_wif), with optional extrasdagster-postgres[azure],dagster-postgres[gcp], anddagster-postgres[aws]. The Helm chart supports WIF viaglobal.postgresqlAuthWifEnabled. (Thanks, @JohnMav!)
Bugfixes
- Fixed an error when starting a schedule whose name was previously used for a sensor (or vice versa).
- Fixed a race condition in Pipes that could cause dynamically-added log readers to be missed.
- [dg] Fixed bugs in the GitLab hybrid scaffolder used by
dg plus deploy configure. - [ui] Fixed the open/close behavior of the partition selector in the materialization dialog.
- [ui] Fixed false-positive syntax errors in asset selection inputs while the autocomplete dropdown was open.
- [ui] Fixed
key:valueautocompletion in search inputs not advancing into value-suggestion context when accepting a key with the Enter key. - [ui] Fixed the asset catalog "Group by Owner" and "Group by Tags" views not showing assets with empty owner or tag arrays under a "None" section.
- [ui] Fixed asset selection summary tiles with long titles visually overlapping with adjacent UI.
- [ui] Fixed monospace text in several places that had reverted to the default font.
- [dagster-airbyte] Fixed errors parsing timestamps from newer versions of the Airbyte API.
- [dagster-cloud] Fixed an issue where the
--defs-state-infoargument was applied to the multipex server command but not to the gRPC server command in serverless deployments. - [dagster-dbt] Fixed an issue where dbt assets configured with
enable_duplicate_source_asset_keyscould emit duplicate dependency entries and ambiguous source metadata when multiple dbt sources resolved to the same asset key. - [dagster-k8s] Added a workaround for an upstream issue in the Kubernetes Python client where setting the
NO_PROXYorno_proxyenvironment variable did not affect the configuration of Kubernetes API calls. - [dagster-snowflake] Replaced deprecated Pydantic
validatorusage withfield_validatorto eliminate Pydantic deprecation warnings.
Documentation
- Added documentation for writing unit tests for declarative automation conditions.
- Added documentation for branch deployment RBAC.
- Added a dedicated documentation page for branch deployment concurrency settings.
- Documented the new asset-event webhook tokens.
- Clarified asset metric monitor behavior in the alerts documentation.
- Added required API scopes to the Databricks connection documentation.
- Updated the Databricks connection documentation with an OAuth flow for service principals.
- [dg] Documented the
dgCLI configuration option for setting a custom virtual environment path.
1.13.2 (core) / 0.29.2 (libraries)
New
- [ui] Users can now hold Cmd or Ctrl while clicking launch, materialize, re-execute, or retry buttons to open the resulting run in a new browser tab instead of navigating away from the current page.
- [ui] Added an Azure DevOps kind tag icon for assets tagged with the
azuredevopskind. - [dg] The
dg utils integrationssub-command has been removed. - [dagster-databricks]
DatabricksClientResourcenow accepts acredentials_strategyargument, enabling federated and custom authentication flows via the Databricks SDK'sCredentialsStrategyprotocol. (Thanks, @hbellur0526!)
Bugfixes
- Fixed an issue where the asset daemon could fail when encountering foreign sensor cursors in automation condition sensor state.
- Fixed an issue where run retries were sometimes not executed by the event log consumer daemon.
- Fixed an issue where an invalid multi-partition key format could cause errors when computing partition statuses.
- [dg] Fixed an issue where the
--api-tokenflag was ignored when passed todgCLI commands. - [dg] Fixed an issue in
dg api asset-checkswhere the command used a non-existent top-level GraphQL resolver path. - [ui] Fixed incorrect font rendering caused by a CSS variable name mismatch.
- [ui] Fixed an issue where the run config editor dialog displayed at an incorrect height.
- [ui] Fixed an issue where clicking asset selection autocomplete suggestions could cause the input to lose focus.
- [ui] Fixed an issue where the Users table in Org Settings did not support horizontal scrolling.
- [dagster-cloud-cli] Fixed GitHub Enterprise authentication for branch deployment CI/CD workflows.
- [dagster-databricks] Fixed a
TypeErrorwhencredentials_strategywasNone. - [dagster-dbt] Fixed a thread-safety issue in concurrent metadata fetching that could cause intermittent errors.
- [dagster-snowflake-polars] Fixed an issue where dynamic partition keys were not properly escaped.
Dagster Plus
- [ui] Branch deployments now expose run queue settings in the run queue configuration dialog.
1.13.1 (core) / 0.29.1 (libraries)
New
- Added
PipesCompositeMessageReader(preview) to support multiple concurrent message streams in a single Pipes session. - Added
sensor:,schedule:, andjob:attribute support to the asset selection syntax (e.g.,sensor:my_sensor,job:my_job). - Added
automation_type:attribute support to the asset selection syntax, allowing queries likeautomation_type:scheduleorautomation_type:sensor. - State-backed integration components (e.g.,
AirbyteWorkspaceComponent,FivetranWorkspaceComponent) now default toLOCAL_FILESYSTEMstate storage instead oflegacy_code_server_snapshots. - [ui] Improved asset selection autocomplete performance.
- [dagster-dbt]
DagsterDbtTranslatorSettings.enable_source_metadatanow defaults toTrue, enabling upstream asset key remapping based on dbt source table names by default.
Bugfixes
- Fixed a possible SQL injection in a few IO managers when used with dynamic partition.
- Fixed an issue where runs executed via
execute_in_process()would sometimes fail to display the step timeline in the Dagster UI. - Fixed a bug where multi-asset definitions containing virtual assets would produce incorrect execution plans.
- [ui] Fixed the tick result button for sensors using dynamic partitions.
- [dagster-aws]
PickledObjectS3IOManagernow defaults the S3 key prefix to an empty string when none is provided. (Thanks, @aksestok!) - [dagster-databricks]
PipesDatabricksClient.run_multi_taskandPipesDatabricksServerlessClient.run_multi_tasknow give each submitted task its own message destination by default, fixing chunk-file collisions between concurrent tasks. - [dagster-dbt] Fixed the dbt Cloud v2 polling sensor and adhoc job to use stable, ID-based identifiers, preventing naming conflicts.
- [dagster-dbt] Fixed the dbt Cloud v2 polling sensor to correctly filter out runs from adhoc jobs.
Documentation
- Added a guide for virtual assets.
- Added documentation for partitioned asset checks.
- Added documentation for the
free_slots_after_run_end_secondsconcurrency configuration option. - Clarified SCIM provisioning and SSO permission requirements in the authentication documentation.
- Added a guide for migrating Dagster+ from the US to the EU control plane.
1.13.0 (core) / 0.29.0 (libraries)
Major Changes Since 1.12.0
- AI-assisted development: Released dagster-io/skills, a collection of Dagster-focused AI skills for coding agents like Claude Code, OpenAI Codex, and others. Expanded
dg apicommands for programmatic inspection of assets, runs, jobs, schedules, and more. - Partitioned asset checks: Asset checks can now target specific partitions of an upstream asset, aligning data quality logic with how partitioned data is produced and monitored.
- State-backed components enabled by default: Integrations that depend on external metadata (dbt, Fivetran, Airbyte, Tableau, Looker, etc.) now use persisted local state by default, providing a more predictable code location loading experience.
- Virtual assets (preview): New
is_virtualparameter on@assetandAssetSpecfor modeling assets like database views that automatically reflect upstream changes without explicit materialization. - 20+ new components: Added or expanded components for dbt Cloud, Spark, Azure (Blob Storage, ADLS2), GCP (BigQuery, GCS, Dataproc), Databricks, Tableau, Looker, Census, Polytomic, and more. Integrations gained richer observability, metadata, and operational support.
- Deeper integration support: dbt Cloud supports partitioned assets; Databricks gained job-level subsetting and auto-cancel on run termination; Fivetran added polling sensors, retry-on-reschedule, and resync support; BI integrations auto-enrich assets with table metadata for cross-system lineage.
- Dagster+ improvements: Organization-level timezone settings, service users for Pro accounts, more resilient code server redeploy behavior, improved agent failure recovery, and expanded insights and alerting workflows.
Breaking Changes
- Removed deprecated
external_asset_from_specandexternal_assets_from_specs. UseAssetSpecinputs directly toDefinitions(...)orAssetsDefinition(specs=[...])instead. - Removed deprecated single-
AssetKeydepsargument support from asset dependencies. Use a sequence ofAssetDepobjects instead. - Removed deprecated
get_all_asset_specsfromDefinitions. - Removed deprecated
legacy_freshness_policyparameter from@observable_source_asset. - Removed deprecated
auto_observe_interval_minutesparameter from@observable_source_asset. - Removed deprecated
legacy_freshness_policies_by_output_nameparameter fromAssetsDefinition. - Removed deprecated
load_component_at_pathfromComponentLoadContext. Usecontext.load_componentinstead. - Removed deprecated
build_defs_at_pathfromComponentLoadContext. - [dagster-airbyte] Removed deprecated
AirbyteStateenum (useAirbyteJobStatusTypeinstead) and removed deprecatedlegacy_freshness_policyandauto_materialize_policyparameters frombuild_airbyte_assets(). - [dagster-looker] Removed deprecated
DagsterLookerResource.build_defs,get_asset_key,get_dashboard_asset_key,get_explore_asset_key,get_view_asset_keymethods, andType[DagsterLookerApiTranslator]support from API helpers. - [dagster-powerbi] Removed deprecated
PowerBIWorkspace.build_defs(), translator key helpers (useget_asset_spec()instead), andType[DagsterPowerBITranslator]support inload_powerbi_asset_specs()(pass an instance instead). - [dagster-sigma] Removed deprecated
SigmaOrganization.build_defs(),DagsterSigmaTranslator.get_asset_key()(useget_asset_spec(...).keyinstead), andType[DagsterSigmaTranslator]support inload_sigma_asset_specs()(pass an instance instead).
New
- (Preview) Added support for virtual assets. The
@assetdecorator andAssetSpecnow accept anis_virtualparameter for defining assets that represent views or derived tables that don't need to be materialized. Virtual assets are supported in staleness calculations, execution planning, and declarative automation. - Job-level config defaults are now applied when partial config is provided to a run.
- [dagster-dbt] Added
enable_dbt_views_as_virtual_assetssetting toDbtTranslatorSettingsfor automatically treating dbt views as virtual assets.
Bugfixes
- Fixed an issue where a sensor targeting a job with
run_tagsand specifying anasset_selectionin theRunRequestwould not apply the job'srun_tagsto the resulting run. - Fixed a potential error in YAML config snapshot conversion when encountering
Nonefields. - [dg] Fixed
dg plus deploy configuregenerating a GitHub Action that used Docker instead of the PEX build strategy. - [dagster-cloud-cli] PR comments in CI are now scoped by deployment name, preventing overwrites across deployments.
- [ui] Fixed "Missing" partition selection for time-based partitioned assets.
- [ui] Fixed raw log display rendering after
ansi-to-reactlibrary update. - [ui] "Terminate all runs" dialog now handles extremely large sets of runs more reliably.
Documentation
- Added Dagster+ agent configuration page for serverless and hybrid deployments.
- Added data portability documentation page.
- Reorganized run isolation documentation for hybrid and serverless deployments.
- Added ELT pipeline example with dlt and Sling.
Dagster Plus
- Added SCIM Groups filter support for
members.value eqqueries. - Fixed an issue where the Dagster+ Kubernetes agent would emit log noise about
DAGSTER_CLOUD_RAW_GIT_URLandDAGSTER_CLOUD_GIT_URLenvironment variables whenonlyAllowUserDefinedK8sConfigFieldswas set. - Fixed incorrect alert type label for metrics alerts.
1.12.22 (core) / 0.28.22 (libraries)
New
- [dg]
dgprojects can now configureagent_queueandimageinpyproject.tomlunder[tool.dg.project], which are included in the generateddagster_cloud.yamlwhen runningdg plus deploy. - [dg] Added
dg api job listanddg api job getcommands for querying job metadata including schedules, sensors, and tags. - [dg] Added
dg api asset-check list,dg api asset-check get-executions, anddg api asset get-partition-statuscommands. - [ui] The asset overview page now shows a loading spinner for "Latest materialization" while data is loading, instead of a dash.
- [ui] Removed the legacy asset catalog component and the
flagAssetCatalogSidebarfeature flag. The asset catalog sidebar is now always enabled. - [ui] The pipeline snapshot link is no longer shown in the Run Actions Menu for hidden asset group jobs.
- [dagster-aws] The
EcsRunLauncherand Dagster+ ECS agent now supply idempotency tokens when creating ECS services and tasks, improving retry behavior after transient failures. - [dagster-dbt]
DbtCloudComponentnow supports an option to include a polling sensor for monitoring dbt Cloud job runs.
Bugfixes
- Fixed
snap_to_yamlincorrectly removing empty dicts that represent valid config values forPermissive,Map, andNoneableconfig types. - Fixed an issue where resources defined in parent components could incorrectly trigger
DagsterInvalidDefinitionErrorduring nested componentpost_processingresolution. (Thanks, @vidiyala99!) - [dagster-aws] Fixed
PipesECSClientincorrectly treating a task that failed to start as a successful execution. - [dagster-fivetran] Fixed an incorrect connector URL format generated by the Fivetran integration.
- [ui] Fixed a performance issue where canceling a backfill before any runs executed would unnecessarily fetch the entire asset materialization history.
- [dg] Fixed
dg plus deploynot correctly pulling in environment variables when refreshing definitions state for state-backed components. - [ui] Fixed ANSI color rendering in run logs.
- [ui] Fixed a visual rendering issue with the graph depth input field.
Documentation
- Added a migration guide for moving from sensors to declarative automation.
- Added documentation for the ECS executor.
Dagster Plus
- Alert policies can now be muted for a configurable duration. Muted policies do not send notifications and show when they will resume.
- [dagster-dbt] Added
dg plus integrations dbt download-manifestcommand to download dbt manifests from Dagster Plus for local development.
1.12.21 (core) / 0.28.21 (libraries)
New
- Removed the
setuptools<82pin from thedagsterpackage. - Added support for the
partitionsattribute in asset selection syntax to filter assets by partition definition type (e.g.,partitions:"static"). - [dagster-spark] Added Spark Declarative Pipeline support in feature preview.
- [ui] Added a date range picker to the backfill modal for date-formatted partitions.
- [ui] The "Report evaluation" action for asset checks has been moved to a consolidated dropdown menu.
Bugfixes
- [dagster-dbt] Fixed issue that could cause
DbtProjectComponents with custom translation methods to not work with utilities likebuild_schedule_from_dbt_selection. - [ui] Fixed asset catalog sidebar not clearing key prefix filters when navigating back to root.
- [ui] Fixed deployment switcher button text color in Light Mode.
- [ui] Fixed duplicate "Catalog" breadcrumb on asset detail pages.
- [ui] Fixed lineage graph edges disappearing when zoomed out by increasing the maximum visible edge limit.
Documentation
- Added cross-account service discovery documentation for ECS agents, including the
service_discovery_role_arnconfiguration parameter. - Added Snowflake EL ingestion pattern documentation.
1.12.20 (core) / 0.28.20 (libraries)
New
- Execution context classes (
OpExecutionContext,AssetExecutionContext,AssetCheckExecutionContext) now expose amulti_partition_keyproperty that returns aMultiPartitionKeywhen the current run is a multi-partition run. - Added
BrazeandRunpodkind tags. (Thanks, @dragos-pop!) - [dagster-databricks] The Databricks job run URL is now rendered as a clickable link in the Dagster UI.
- [dagster-dbt] Added
DbtCloudComponentfor loading dbt Cloud projects as Dagster assets using the Components API. - [dagster-dbt] The
dbt_cloud_assetsdecorator now supports partitioned assets via thepartitions_defparameter. - [dagster-fivetran] Added a polling sensor for Fivetran observability, which detects externally-triggered syncs and emits materialization events.
- [dagster-fivetran]
FivetranWorkspacenow supports aretry_on_rescheduleoption to automatically retry syncs rescheduled by Fivetran due to quota limits, as well asresyncoperations. - [dagster-fivetran] The Fivetran translator now includes sync schedule and custom report metadata on connector assets.
- [dagster-k8s] The Dagster Helm chart and Dagster+ Kubernetes Agent Helm chart now support
k8sApiCaBundlePathto configure a custom CA certificate path for Kubernetes API communication. - [dagster-k8s] Code location server Kubernetes Services now support a
service_spec_configfield for arbitrary Kubernetes Service spec overrides (for example,clusterIP: Nonefor headless services).
Bugfixes
- Fixed an issue where time window partitions with exclusions would sometimes create more runs than needed when using single-run backfills.
- Fixed a "Cannot access partition_key for a non-partitioned run" error that could occur with multi-asset definitions that included non-partitioned assets or asset checks alongside partitioned ones.
- [dagster-aws] Fixed
s3_pickle_io_managerfailing with dynamic outputs when step keys contain bracket characters in the generated S3 object path. - [dagster-aws] Fixed an issue in
PipesEMRServerlessClientwhere a custom CloudWatch log group name configured inmonitoringConfiguration.cloudWatchLoggingConfiguration.logGroupNamewas ignored, causing log streaming to always use the default/aws/emr-serverlesslog group. (Thanks, @kchainani-figma!) - [ui] Fixed the asset recent updates trend visualization when multiple event types share the same run ID.
- [ui] Fixed text wrapping and spacing in the asset event detail view for long partition names and run titles.
Documentation
- Added a troubleshooting guide for Kubernetes agent network connectivity issues, including TCP keepalive configuration recommendations for Helm chart deployments.
1.12.19 (core) / 0.28.19 (libraries)
New
- Added a "Report Execution" dialog to the asset checks detail view, allowing users to manually record check evaluation results.
- Added database pool configuration options (
--db-pool-recycle,--db-pool-pre-ping, and others) todg devanddagster dev. - Added
dg plus config viewcommand for inspecting the current CLI configuration. - [ui] Updated the Usage dialog and Run timeline to display "Jobless asset materializations" (previously "Ad hoc materializations") with a tooltip describing what is grouped within this category.
- [ui] Planned run events are now excluded from the event count shown in the run log filter.
- [dagster-azure] Added component support for
dagster-azure, includingAzureBlobStorageResourceComponentandADLS2ResourceComponentfor declarative YAML configuration of Azure resources. - [dagster-databricks]
DatabricksAssetBundleComponentis now subsettable at the job level, enabling selective execution of individual Databricks tasks. - [dagster-databricks]
DatabricksAssetBundleComponentnow uses the Databricks CLI to resolve variable references to task and job names in bundle templates. - [dagster-databricks] Databricks jobs are now cancelled when the corresponding Dagster run is terminated in
DatabricksWorkspaceComponent. - [dagster-dbt]
dagster-dbtnow prefersdbt-corefor manifest parsing when it is installed. - [dagster-gcp] Added
BigQueryResourceComponent,GCSResourceComponent,GCSFileManagerResourceComponent, andDataprocResourceComponentfor declarative YAML configuration of GCP resources. - [dagster-gcp]
BigQueryIOManagernow supports a configurablewrite_modeparameter (truncate,replace, orappend).
Bugfixes
- Fixed an issue where auto-run reexecution would attempt to rerun jobs belonging to already-completed or cancelled backfills.
- Fixed an issue where backfill errors that were subsequently retried would remain incorrectly associated with the backfill.
dg plus pull envnow merges pulled secrets into the existing.envfile instead of replacing it, preserving any locally-set variables not present in Dagster Plus.- [ui] Fixed rendering of newlines in markdown blockquotes in the UI.
- [dagster-databricks] Fixed a
KeyErrorforrun_page_urlinDatabricksWorkspaceComponent. - [dagster-databricks] Fixed asset mapping in
DatabricksAssetBundleComponentandDatabricksWorkspaceComponentto use job and task key combinations, preventing conflicts when task keys are not unique across jobs.
Dagster Plus
- The Dagster+ agent now automatically redeploys local code servers that enter a failure state when the control plane expects them to be loaded.
1.12.18 (core) / 0.28.18 (libraries)
New
- Added event type filtering to the asset Recent Updates timeline, allowing users to toggle between Materializations and Observations when both event types are present. Filter preference is persisted to local storage.
psycopg2-binaryhas been removed as a dependency fromdagster-postgres. If you were previously relying on this transitive dependency, you may need to explicitly addpsycopg2-binaryto your project.- [ui] The launchpad UI no longer prefills optional resource defaults in the config editor. To see and edit the defaults, click "Scaffold all default config".
- [ui] For op jobs in code locations that have reloaded, the launchpad now always shows a message indicating that the config may be stale.
- [ui] Asset health status indicators now distinguish between loading, unknown, and no data states for improved debugging.
- [ui] The asset overview timeline now correctly displays the most recent event without cutting it off.
- [dagster-dbt]
DbtProjectandDbtProjectComponentnow exposeprepare_project_cli_argsto allow customizing CLI arguments used to generate the manifest. - [dagster-looker, dagster-omni, dagster-powerbi, dagster-sigma, dagster-tableau] BI integration assets are now automatically enriched with
dagster/table_namemetadata. Additionally,dagster-tableauanddagster-lookerassets now populatedagster/storage_kindbased on the upstream connection type. - [dagster-sling] The
slingpackage import is now deferred to improve import-time performance.
Bugfixes
- Fixed a bug where Dagster incorrectly called
__enter__on nested resource attributes annotated withdagster.ResourceDependencyduring parent resource setup. (Thanks, @danielgafni!) - [ui] Fixed text wrapping and layout for long URIs in asset storage metadata section.
Documentation
- Added documentation for custom metrics in Dagster+ Insights.
- Added and enhanced webhook alerting documentation, including a guide for incident.io integration.
Dagster Plus
- Organization-level timezone settings are now supported, allowing organizations to set a default timezone for users who haven't explicitly set a preference.
- [ui] Asset job run data is now included in Job insights.
- [ui] Code locations with loaded but failed agents now display a warning icon with agent status details in a popover.
- [ui] Added run queue time metric visualization to Job insights.
- [ui] Updated Alert policy list style for improved scannability and legibility.
1.12.17 (core) / 0.28.17 (libraries)
Bugfixes
- Fix bug with inclusion of built webapp in
dagster-webserverthat caused the Dagster UI to fail to load.
1.12.16 (core) / 0.28.16 (libraries) (YANKED)
This version of Dagster inadvertently did not include the webapp code in the published dagster-webserver package.
Bugfixes
- [ui] Fixed redirect to login when the user's session expires.
- [ui] Fixed console error noise during asset lineage navigation.
Dagster Plus
- [ui] Improved loading states and autoscroll behavior in the AI chat UI.
- [ui] Fixed the icon selector in the saved selection creation flow.
1.12.15 (core) / 0.28.15 (libraries)
New
- Pool names can now be any non-whitespace character, instead of requiring alphanumbeic characters, slashes, and underscores.
- [dagster-aws] The
EcsRunLauncherwill now retry a task launch when a RunTask API call fails due to a throttling error in an underlying EC2 API call. - [dagster-tableau] Tableau workbooks and projects can now be filtered using the
workbook_selectorandproject_selectorinTableauComponent.
Bugfixes
- [ui] Fixed issue where saved launchpad config was not used for single-partition asset materializations.
- [ui] Fix console error noise during asset lineage navigation.
- [ui] Fixed an issue where the "Start X Automations" and "Stop X Automations" menu options on the Automations tab were sometimes incorrectly disabled.
- [dagster-dbt] The
DbtProjectconstructor now correctly accepts strings for thetarget_pathparameter.
1.12.14 (core) / 0.28.14 (libraries)
New
@asset_checkandAssetCheckSpecnow support apartitions_defparameter, allowing checks to execute against specific partitions of their upstream asset rather than the entire contents. If set, the partition definition must match the definition of the targeted asset.- [ui] The "Select all" checkbox has been restored to the Automations list.
Bugfixes
- Fixed performance issue where the partition selector would freeze for 30+ seconds when selecting "All" on assets with large (100k+) partition sets. (Thanks, @ljodea!)
- Fixed an issue with cron schedules using step patterns (like
*/10or*/30) in the day-of-month field where invalid days weren't properly skipped. - [ui] Fixed an issue that could cause incorrect partition statuses to be displayed in the UI.
- [ui] Partition percentages now round in a more intuitive way.
- [ui] Row count metadata is now displayed even when set to zero.
- [dagster-databricks] Fixed an issue where op name generation would occasionally lead to collisions.
- [dagster-sigma] When building assets for Sigma workbooks that depend on tables unknown to Dagster, an error is logged instead of throwing an exception.
- [dagster-k8s] Fixed an issue where
PipesK8sClientwould sometimes fail when containers in theignored_containerslist failed. - [dagster-github] Ensured compatibility with
pyjwt>=2.11.0,which introduced breaking changes.
Documentation
- Added an example of censoring PII in run logs.
- Updated branch deployment docs to include single-agent setup.
1.12.13 (core) / 0.28.13 (libraries)
New
- [dagster-polytomic]
PolytomicComponenthas been added and can be used to represent your Polytomic bulk sync schemas as external assets in Dagster - [dagster-fivetran] Added warning log when no Fivetran groups are found to help users troubleshoot permission issues.
1.12.12 (core) / 0.28.12 (libraries)
New
dg plus deploy startnow validates deployment akin todagster-cloud ci check.- [dagster-aws] Added a suite of new components that map to all existing resources in the library.
- [dagster-k8s] Increased the maximum version of kubernetes to 35.x.x.
- [ui] You can now unpin asset groups that no longer contain any assets.
Bugfixes
- Fixed type errors reported by Pyright's strict mode when using
@asset,@multi_asset, and@graph_assetdecorators. - Running
dg launch --partition-rangefor an asset without an explicitly defined single-run-backfill policy now provides a clean error message. - Fixed issue where the celery_executor
config_sourcevalues were ignored. (Thanks, @danielbitzer!) - Fixed issue with
dg plus deploy refresh-defs-stateURL construction for EU regions. - Fixed helm chart validation error when enabling
concurrencyconfig with defaultqueuedRunCoordinatorvalues. dg list defsnow correctly shows labels for automation conditions.- [dagster-dbt] Fixed issue with the
dagster-dbt project prepare-and-packagecommand where user files nameddbt.pycould shadow thedbtmodule. (Thanks, @alexaustin007!) - [dagster-dbt] Fix errors raised when dbt functions are present in dbt manifest. (Thanks, @eso-xyme!)
- [ui] Fixes a bug where creating an alert policy from your Favorites would crash the app.
Dagster Plus
- Fixed an issue while using the 'isolated_agents' configuration parameter in Dagster+ where runs that were terminated due to exceeding a maximum runtime would sometimes fail to terminate the run worker process after the run was marked as failed.
1.12.11 (core) / 0.28.11 (libraries)
New
- The
dagster-cloud ci checkcommand is now marked as deprecated. Usedg plus deploy startinstead, which now validates configuration during deployment initialization. - [dagster-fivetran]
FivetranWorkspacenow supports arequest_backoff_factorparameter for enabling exponential backoff on request failures.
Bugfixes
- [dagster-dbt] Fixed an issue where the
excludeparameter of@dbt_assetscould be ignored if the selection was too large. - [ui] The Asset Partitions page and the launch Materializations modal now correctly handle asset partitions that contain JSON or irregular characters.
- [ui] Fixed an issue where
dagster/row_countmetadata was sometimes not displayed on the Asset Overview page if it was being set by an asset observation rather than a materialization.
Dagster Plus
- The ECS agent now waits for 10 minutes by default before timing out during a code location deploy instead of 5 minutes, to ensure that large images have enough time to be pulled by the agent. See https://docs.dagster.io/deployment/dagster-plus/hybrid/amazon-ecs/configuration-reference#user_code_launcher-properties for more information on changing this default.
- [ui] The Job Insights tab now shows a metric breakdown by job
1.12.10 (core) / 0.28.10 (libraries)
Bugfixes
- [ui] Fixed an issue introduced in 1.12.9 where the "Catalog" tab in the Dagster UI sometimes failed to display any assets.
1.12.9 (core) / 0.28.9 (libraries)
New
- The core
dagsterpackage (and most libraries) are now compatible with Python 3.14. - Added support for using python version 3.13 when running
dg plus deploy. dg plus loginnow supports aregionflag for eu-based users:dg plus login --region eu.- Updated the
bulk_actionstablebodycolumn fromTexttoLongTextfor Mysql storage. To take advantage of this migration rundagster instance migrate. (Thanks, @jenkoian!) - Updated the
asset_keystablecached_status_datacolumn fromTexttoLongTextfor Mysql storage. To take advantage of this migration rundagster instance migrate. (Thanks, @jenkoian!) - Runs now automatically include a
dagster/code_locationtag when created with aremote_job_origin, enabling filtering and concurrency control by code location. (Thanks, @ssup2!) - [ui] the Asset > Partitions page now shows historical "Failed to materialize" events for consistency with the Asset > Events page.
- [helm] Added a
concurrencysetting to the helm chart to configure concurrency pools. - [dagster-azure] The
ADLS2PickleIOManagernow overwrites blob keys when the same asset is materialized twice, instead of deleting then writing the blob. - [dagster-aws] An
ecs/container_overridestag can now be set on jobs (or on runs in the launchpad) to customize container-level overrides (like GPU resource requirements) for runs using theEcsRunLauncher. - [dagster-dbt]
dagster-dbtnow supports dbt-core 1.11. (Thanks, @nicoa!) - [dagster-dlt] update url in README (Thanks, @Miesjell!)
- [dagster-databricks] Introduced
DatabricksWorkspaceComponentto automatically discover Databricks jobs as Dagster assets. - [dagster-looker] Added option PDT asset support to
LookerComponent.
Bugfixes
- Fixed an issue where a transient issue caused a step health check to fail when using the
k8s_job_executor. - Fixed an issue where a health check failure while using the
k8s_job_executorcould result in a step continuing to run after the run failed. - Invalid
TimeWindowPartitionsDefinitionsthat contain multiple time windows that map to the same partition key (for example, an hourly partitions definition with a daily format key) will now raise anExceptionduringdagster definitions validate, instead of being allowed but causing undefined behavior. - [ui] Entering the asset launchpad by right-clicking on the asset graph no longer causes keyboard navigation issues.
- [ui] Fixed an issue where removing an asset prevented rendering status information for backfills involving that asset in the Dagster UI.
- [dagster-dbt] Fixed issue that could cause the
DbtCliEventMessageiterator to error while parsing certain error messages produced bydbt-core.
1.12.8 (core) / 0.28.8 (libraries)
New
dg plus deploycommands now support Python 3.13 and Python 3.14.
Bugfixes
- Fixed an issue where the Dagster Helm chart and Dagster+ agent helm chart could no longer deploy using Helm without adding the
--skip-schema-validationflag to the Helm deploy command. Thanks @kang8!
1.12.7 (core) / 0.28.7 (libraries)
New
- Optimized performance of calculating partition keys for time window partitions with exclusions.
timedeltaanddatetimeare now available via thedatetimecontext when rendering components (Thanks, @stevenayers!)FreshnessPolicyis now available via thedgcontext when rendering components. (Thanks, @stevenayers!)- Assets may now be annotated with up to 10 kinds (limit was previously 3).
- Arbitrary resource parameters may now be hidden in the UI by setting
json_schema_extra={"dagster__is_secret": True}on the correspondingFielddefinition in the resource class. - The
dg docscli group has been removed. Theintegrationssubcommand has been moved todg utils integrations. - Bumped the
gqldependency indagster-graphqlto be inclusive of v4 for broader transitive dependency compatibility - [dagster-omni] Fix issue where retries would terminate while asynchronously gathering metadata.
- [dagster-tableau] The value of resource parameter
TableauWorkspace.connected_app_secret_valueis now hidden in the UI. - [dagster-tableau] Updated extraction logic to handle hidden sheets. The materializable data sources connected to these sheets are now successfully detected and included as materializable data assets. (Thanks, @miriamcastel!)
Bugfixes
- Fix an AttributeError when calling
map_asset_specson assets defined using theinsparameter. (Thanks, @Jongwan93!) - Fix an issue where backfill runs that incorrectly created unpartitioned materializations of a partitioned asset, or partitioned materializations of an unpartitioned asset due to incorrect asset business logic would move the backfill into an invalid state. Now, the backfill will detect this case and fail the backfill.
- Fixed an issue with
dg plus deploy refresh-defs-statewhich could cause errors when refreshing state for components that required CLIs that were only available in the project environment. - [dagster-dbt] Fixed issue that could cause errors when emitting events for a dbt Cloud job run.
Dagster Plus
- Dagster Plus Pro users can now create service users. Service users are accounts that can authenticate API requests but that are not tied to any particular human user.
1.12.6 (core) / 0.28.6 (libraries)
New
- All CLI commands under
dagster projecthave been removed.create-dagstershould be used instead. - [ui] Added a new Partitions facet to the Asset Lineage Graph.
- [ui] More details are now displayed for
SINCEconditions in evaluation tables for automation conditions. - [dagster-dbt] Added dbt cloud logs to stdout after the run completes in dbt cloud.
- [dagster-tableau] Improved resilience when fetching Tableau workspace data. The integration now skips individual workbooks that fail to return data and logs a warning, rather than failing the entire operation. (Thanks, @miriamcastel!)
Bugfixes
- Fixed an issue that would cause errors when attempting to create subclasses of
Resolvedthat had fields usingdefault_factoryarguments. - Fixed an issue with
dg plus deploy refresh-defs-statewhich could cause errors when refreshing state for components that required CLIs that were only available in the project environment. - [ui] Fixed Snowflake connection by changing the private key encoding from PEM to DER format. Snowflake requires unencrypted RSA private keys to be in DER format as bytes.
- [dagster-dbt] Updated
DbtCliResourceto use theproject_dirattribute from theDbtProjectinstance rather than passing the entireDbtProjectobject. - [dagster-tableau][dagster-sigma] Fixed bug that would cause templated env vars to not be resolved when specified in yaml.
1.12.5 (core) / 0.28.5 (libraries)
New
- Increased the version of NextJS used by the Dagster webserver and the
dg docs servecommand to15.5.7. While these applications are unaffected by https://nextjs.org/blog/CVE-2025-66478 due to not using React 19, this upgrade ensures that dagster packages will not be flagged for that CVE by vulnerability scanners.
1.12.4 (core) / 0.28.4 (libraries)
New
- CI workflows for Gitlab projects can now be scaffolded using
dg plus deploy configure. - "/" characters are now allowed in concurrency pool names.
- Pod wait timeout for K8sPipeClient can now be specified (Thanks, @abhinavDhulipala!)
- New
kindtag icon for Zendesk (Thanks, @kporter13!) - [dagster-tableau] Added
enable_embedded_datasource_refreshandenable_published_datsource_refreshoptions to theTableauComponent, which allow creating materializable assets for the associated datasource types.
Bugfixes
- Fixed an issue where passing in JSON serializable enums to JsonMetadataValue would sometimes result in an error.
- Fixed an issue that would cause
SensorDefinitionsubclasses (e.g.AutomationConditionSensorDefinition,RunStatusSensorDefinition) to be converted to having the wrongsensor_typeproperty when produced from aComponent. - Fixed an issue where the
Flowerconfig map was included in the Helm chart even whenFlowerwas disabled (Thanks, @LoHertel!) - [dagster-dbt] Fixed a
FileExistsErroron Windows when reloadingdbtproject definitions by ensuring the local project directory creation handles pre-existing directories (Thanks, @Jongwan93!) - [dagster-tableau] Fixed a KeyError that occurred when using
workbook_selector_fnto filter assets. Now dependencies are only accessed if they exist in the workspace data. (Thanks, @miriamcastel!) - [dagster-tableau] Fixed an issue where
workbook_selector_fnwas only applied to the first 100 workbooks. - [dagster-tableau] The workbook is now part of the asset key prefix to avoid naming collisions.
- [dagster-tableau] Fixed an issue where workbook names with dots
.were improperly handled.
Documentation
- Updated
dagster-icebergdocs to include recently-added features. (Thanks, @zyd14!)
1.12.3 (core) / 0.28.3 (libraries)
New
- Updated the cursoring logic of
AutomationCondition.since()/AutomationCondition.newly_true()to make them retain access to their stored data in a wider range of scenarios where the underlying condition structure is changed. - Added a
--use-active-venvmethod to a variety ofdgcommands. (Thanks, @cmpadden!) - The
build_defs_at_pathandload_component_at_pathmethods on theComponentLoadContextclass have been renamed tobuild_defsandload_componentrespectively. The previous names have been preserved for backcompat. - The template variables available in the default resolution scope for Components have been reorganized / expanded:
{{ automation_condition.on_cron(...) }}->{{ dg.AutomationCondition.on_cron(...) }}- **new: ** All
AutomationConditionstatic constructors may be accessed via thedgcontext, e.g.:{{ dg.AutomationCondition.on_missing() & dg.AutomationCondition.in_latest_time_window() }}
- **new: ** All
PartitionsDefinitionsubclasses are now available via thedgcontext, e.g.: {{ dg.StaticPartitionsDefinition(['a', 'b', 'c']) }}{{ dg.DailyPartitionsDefinition('2025-01-01') }}{{ project_root }}->{{ context.project_root }}{{ build_definitions_at_path(...) }}->{{ context.build_defs(...) }}{{ load_component_at_path(...) }}->{{ context.load_component(...) }}- All previous template vars will continue to work as before for backcompat.
- [ui] Improve browser performance for large asset graphs.
- [dagster-snowflake] Added
create_snowpark_session()which provides a convenient way to create a Snowpark session. (Thanks, @stevenayers!) - [dagster-snowflake] Added
get_databases(),get_schemas(),get_tables(),get_views(),get_pipes()&get_stages()which provide a pythonic interface for Snowflake introspection. (Thanks, @stevenayers!) - [dagster-dbt] You can now override the
op_config_schemaproperty on theDbtProjectComponentto customize how your dbt execution can be configured at runtime.
Bugfixes
- Added the ability to execute refreshes of embedded and published datasources when using the TableauComponent.
- Fixed a bug in asset partitions where the partition range selector would sometimes stop working.
- [dagster-dbt] Fixed a
FileExistsErroron Windows when reloadingdbtproject definitions by ensuring the local project directory creation handles pre-existing directories. (Thanks, @Jongwan93!) - [dagster-dbt] Fixed an issue introduced in version 1.12.2 that caused the
DbtProjectComponentto not produce asset checks for tests on dbt sources. (Thanks, @stevenayers!)
Documentation
- Added documentation for the community dagster-slurm integration. (Thanks, @geoHeil!)
1.12.2 (core) / 0.28.2 (libraries)
New
- Dagster has dropped support for Python 3.9 (due to end of life). The minimum supported Python version is now 3.10. This is a breaking change originally intended for the 1.12.0 release.
- Added
dg api schedule {list,get}command. - Added new
dg plus deploy configureCLI group that generates all the files necessary to get an existing project ready for deployment via Dagster+. - [ui] A new sidebar in the Asset catalog (behind a feature flag) provides a hierarchical view of your asset keys.
- [ui] Improve a few parts of the "Recent updates" timeline section of the Asset overview page.
- [dagster-census] Added
CensusComponentallowing Dagster assets to sync with census connections. - [dagster-airbyte] New AirbyteWorkspace configurations:
poll_previous_running_sync,max_items_per_page,poll_interval,poll_timeout&cancel_on_termination. (Thanks, @stevenayers and @sonianuj287!) - [dagster-dbt] You can now override the
op_config_schemaproperty on theDbtProjectComponentto customize how your dbt execution can be configured at runtime.
Dagster Plus
- [ui] "Edit public catalog views" is now editable in the role permission list.
1.12.1 (core) / 0.28.1 (libraries)
New
- Migrate SqlComponent to Pydantic v2 model_config pattern (Thanks, @LPauzies!)
- Make
dg apicommands visible indg --helpoutput. - Make
dg pluscommands visible in thedg --helpoutput. - Add Dremio kind icon. (Thanks, @maxfirman!)
- The github actions scaffolded by
dg scaffold github-actionsnow include commands to refresh state forStateBackedComponents. - Run worker health check will now tag runs with their associated ENI ids.
- [ui] In asset sidebar, clearly indicate when a freshness policy is a legacy policy.
- [ui] Cost metrics are now shown on the asset catalog insights page.
- [dagster] New AutomationConditions for checking asset freshness -
dg.AutomationCondition.freshness_passed(),dg.AutomationCondition.freshness_warned()anddg.AutomationCondition.freshness_failed(). (Thanks, @stevenayers!)
Bugfixes
- [ui] Fix a sporadic race condition when loading jobs in the Dagster UI.
- [ui] Fixed an issue where deploying multiple serverless code locations simultaneously would sometimes fail with a "the dagster package dependency was expected but not found" error.
- [ui] Fixed a bug that would cause errors when attempting to supply config to a backfill that targeted assets with checks.
- [ui] Fixed an issue introduced in dagster 1.11.16 where repositories using custom RepositoryData subclasses would sometimes raise an error when viewing jobs in the Dagster UI.
- [ui] Fix sensor descriptions in the automation list.
- [dagster-dask] Fixed an issue where Dask parquet filters configured in YAML would fail with
ValueError: too many values to unpack (expected 3)when using Dask version 2022.4.2. (Thanks, @kudryk!) - [dagster-dbt] Fixed an issue where dagster-dbt runs targeting large numbers of models could cause the underlying
dbtCLI invocation to fail from too many arguments.
Dagster Plus
- [ui] The insights view in the Observe UI now allows you to specify a custom date range.
1.12.0 (core) / 0.28.0 (libraries)
Major changes since 1.11.0 (core) / 0.27.0 (libraries)
UI
- Refreshed UI: The UI has been redesigned and streamlined to make it easier to find common utilities quickly. Navigation elements have been moved from a header to a collapsible sidebar to help highlight important workflows and provide more visual space throughout the product.
Components
- Components GA: The Components framework and the
dgCLI are now marked as GA (previously Release Candidate). The APIs are fully supported throughout all parts of the product and remain the recommended defaults for new Dagster projects. - Standardized Integrations: Integration components have been updated to have
execute()andget_asset_spec()methods that can be overridden by subclasses, making it easier and more consistent to customize your components. - New Components:
- State-Backed Components: Added a new
StateBackedComponentabstract base class that enables components to persist and manage state separately from their YAML / Python configuration. This is particularly useful for integration components that need to fetch external data. State can be managed locally, in versioned storage, or via code server snapshots. Many integration components (AirbyteWorkspaceComponent,FivetranAccountComponent,PowerBIWorkspaceComponent,AirflowInstanceComponent, andDbtProjectComponent) now extendStateBackedComponentto provide better control over state management. You can check out the docs here!
Simplified Deployment
dg scaffold build-artifactsscaffolds Docker and configuration files needed to build and deploy your Dagster project to Dagster Cloud, with support for multiple container registries (ECR, DockerHub, GHCR, ACR, GCR).dg scaffold github-actionsgenerates a complete GitHub Actions CI/CD workflow for deploying to Dagster Cloud, with auto-detection of Serverless vs Hybrid agents and guided setup for required secrets.
Core Orchestration
- FreshnessPolicies GA: The new FreshnessPolicy API introduced in 1.10.0 has stabilized and is now marked as GA (previously Preview). These supersede the
LegacyFreshnessPolicyAPI (formerlyFreshnessPolicy, deprecated in 1.10.0), as well as freshness checks.FreshnessPolicyandapply_freshness_policyare now exported from the top-leveldagstermodule (instead ofdagster.preview.freshness).- The
build_.*_freshness_checksmethods have been marked assuperseded. Their functionality will remain unchanged, but we recommend usingFreshnessPolicys for new use cases. - The
FreshnessDaemonnow runs by default, rather than needing to be explicitly enabled viadagster.yamlsettings. To turn it off, set:freshness:
enabled: false
- Configurable Backfills: Run config can now be supplied when launching a backfill, allowing you to specify configuration that will be applied uniformly to all runs.
- Time-based partition exclusions: All subclasses of
TimeWindowPartitionsDefinitionnow support anexclusionsparameter, which allows you to exclude specific dates/times or recurring schedules from your partition set. This is useful for implementing custom calendars that exclude weekends, holidays, or maintenance windows. Exclusions can be specified as cron strings (e.g.,"0 0 * * 6"for Saturdays) or datetime objects for specific dates. - Execution Dependency Options: All
Executors have been updated to accept an optionalstep_dependency_configparameter with arequire_upstream_step_successflag. When set toFalsevia{"step_dependency_config": {"require_upstream_step_success": False}}, downstream steps can start as soon as their required upstream outputs are available, rather than waiting for the entire upstream step to complete successfully. This is particularly useful for large multi-assets where downstream assets only depend on a subset of upstream outputs.
Support & Docs
- We launched a new Support Center with help articles on Dagster+ Hybrid and Serverless troubleshooting, and answers to customer questions previously answered by our support team.
- In our docs:
- We reorganized the Examples section for easier navigation, and added new full pipeline examples on using Dagster with DSpy and PyTorch, as well as targeted mini examples that showcase best practices for:
- We added new guides to help you:
- We added links to Dagster University, our popular Python Primer blog post series, Dagster Deep Dives, customer case studies, Dagster Open Platform, and sales demo example pipelines so you can access all the resources you need to learn about Dagster in one place.
Changes since 1.11.16 (core) / 0.27.16 (libraries)
New
- In the Dagster helm chart, images can now be specified by digest (Thanks, @pmartincalvo!)
- The
MultiprocessExecutor,DockerExecutor, andK8sJobExecutornow retry according to their configured retry policy when the step fails during resource initialization. - [dagster-aws] Added an optional
key_prefixparameter toPipesS3ContextInjector(Thanks, @elipinska!) - [dagster-azure] Added a new
PipesAzureMLClient. - [dagster-pipes] Added support for
AzureBlobStorage. - [dagster-tableau] Added a new
TableauComponent - [dagster-looker] Added a
LookerComponent - [dagster-sigma] Added a new
SigmaComponent. - [dagster-dbt] The
DagsterDbtTranslatorno longer has aget_freshness_policymethod, nor does it automatically parse the legacy / deprecatedLegacyFreshnessPolicyobjects from dbt model configuration. - [dagster-sling] The
DagsterSlingTranslatorno longer has aget_freshness_policymethod, nor does it automatically parse the legacy / deprecatedLegacyFreshnessPolicyobjects from sling configuration.
Bugfixes
- Asset jobs that are unable to resolve their asset selection (for example, due to targeting an empty set of asset keys) will now raise a clearer exception at definition load time explaining which job failed to resolve its asset selection.
- Fixed an issue where automatic run retries of runs that only targeted asset checks would sometimes fail with a
DagsterInvalidConfigError. - [ui] Fixed issue causing sensor descriptions to not be displayed in the automation list.
- [dagster-dbt] Fixed a bug causing
enable_code_referencesto result in errors for dbt assets.
Documentation
- Corrected several typos and inconsistencies in the helm chart documentation (Thanks, @piggybox!)
1.11.16 (core) / 0.27.16 (libraries)
New
- The proxy GRPC server heartbeat TTL can now be configured with the DAGSTER_GRPC_PROXY_HEARTBEAT_TTL_SECONDS env var (default remains 30 seconds).
Bugfixes
- Fixed an issue introduced in dagster 1.11.15 where code locations that previously loaded would sometimes fail to load with a
gRPC Error code: RESOURCE_EXHAUSTEDerror. - Fixed an issue where defining a repository using a dictionary of job definitions with a key that did not match the name of the job would work when running dagster locally but not when using Dagster+.
- [components] Fixed a bug that caused errors when using the
DbtProjectComponent,FivetranAccountComponent, and similar state-based components in k8s deployments due to a missingStateStorageobject in context. - [dagster-omni] Added a dependency on
python-dateutiltodagster-omni. (Thanks, @bollwyvl!)
1.11.15 (core) / 0.27.15 (libraries)
New
- All sequences are now supported in
AssetKey.with_prefix. (Thanks, @aksestok!) - [ui] Introduce new navigation, with main navigation items previously in top navigation now in a collapsible left nav.
- [ui] Improve loading performance of Runs page.
- [dagster-databricks] Add support for
notebook_taskinPipesDatabricksClient. (Thanks, @SoerenStahlmann!)