v2.0.0

Major
Published on September 7, 2026

Changelog

🔀 Merge

  • 996466e Merge pull request #15242 from kestra-io/kestra_v2, closes #15242
  • c04ef96 Merge branch 'develop' into kestra_wip
  • a5f1e75 Merge branch 'develop' into kestra_wip
  • cb9eee1 Merge branch 'develop' into kestra_wip

📢 Breaking Changes

core

  • dd71be7 🚨 adopt RFC 9457 problem details as the single API error format (#17912) - *error responses no longer carry message, _links or _embedded.errors[], and are served as application/problem+json rather than application/json. Bulk endpoints report per-item failures in errors[] instead of invalids[]. Clients must branch on type and read detail.

chore(core): localize to languages other than english

Refs https://github.com/kestra-io/kestra-ee/issues/9671*, closes #17912

flows

  • d85dbcc 🚨 remove forced flag from flow-level pluginDefaults (#15812), closes #15812

🚀 Features

UI

  • 72818bb add query filter options to IAM UI components (#14956), closes #14956

ai

  • 49922f1 note when the AI model is switched mid-conversation (#18538), closes #18538
  • a2f6c3d support custom HTTP headers on every copilot model provider (#17992), closes #17992
  • afd1ecc expand copilot page context and note context changes in the chat (#17728), closes #17728
  • 4938d09 animate the Kestra mark in the copilot working indicator (#17666), closes #17666
  • 48e95e3 revamp ai copilot style (#16545), closes #16545
  • 3e89076 add AI Copilot to No-Code editor (#15209), closes #15209

apps

  • b933bfc generate the JS/TS SDK in-repo (OSS) (#17541), closes #17541
  • cdbec44 redesign Settings page and align design system with Figma 2.0 (#16310), closes #1 #2 #43 #631 #9869 #15081 #15967 #16310 #16324 #16467 #23252 #111115 #424256

assets

  • a895dc7 add a layered DAG view and freshness to asset dependencies (#18567), closes #18567 #18569
  • 1e2699e asset editable type (#18352), closes #18352

async

  • 7a7ceae blocking single-action + async batch for executions and triggers

blueprint

  • cabfff9 migrate community blueprint API to QueryFilter format (#16117), closes #16117

build

  • f8a4875 migrate Docker plugin install to kestractl CI download

cases

  • 975ebb9 QueryFilter/JDBC support + UI foundation for Cases (EE) (#17504), closes #17504

charts

  • 92b0d7f allow setting progressDeadlineSeconds on Deployments (#17782), closes #17782

ci

  • 55c10e1 replace GH_PERSONAL_TOKEN with GitHub App installation tokens (#16012), closes #16012

cli

  • cf0816c print UI URL as the last line once the server is fully ready
  • 68e52f4 add configuration-schema command for JSON Schema generation (#15753), closes #15753

copilot

  • 2ed2f14 add ownAndInheritedSecrets and use it in expression context
  • 3227852 add ExpressionContextService with typed context, RunVariables introspection, and test coverage

core

  • 307ef7b add a @DurationMin constraint beside @DurationMax (#19001), closes #18676 #19001
  • 6ca00ee reject an external log store outside Enterprise Edition (#18982), closes #18982
  • 6346960 add url to the default SDK authentication (#18605), closes #18605
  • bd9d3b0 use 3D artwork on empty states (#18629), closes #18629
  • 65270d0 add Flow/Custom tabs to the embedded blueprints panel (#18295), closes #18295
  • 6d3d920 add ForbiddenException mapped to HTTP 403
  • add80ea introduce no data page for custom blueprints (#18202), closes #18202
  • d35b5cc parse kotlp OTLP telemetry in TaskLogLineMatcher (#17873), closes #17873
  • 31a9d7c implement search filter in outputs tab (#17511), closes #5448 #17511
  • b341e66 introduce select all option to the select component in design system (#17713), closes #17639 #17713
  • b859109 add assetFailureBehavior property to AssetsDeclaration (#9467), closes #9467
  • 501f0b1 add locked query filter field for assets (#9466), closes #9466
  • 78d4b6a add ProtectedZipInputStream to guard against ZIP-bomb attacks
  • 92bc9a3 amend the format of the new flow IDs (#17626), closes #17626
  • cd26c65 normalize PostHog event names to surface.object.action (#17573), closes #17573
  • 87e9c81 add onWebhookMatched hook after webhook key matching
  • ca6cd11 OSS enablers for EE Policies
  • 3b0d2da generate docs for charts, data filters, apps and app blocks (#17030), closes #17030
  • b259dc6 census input types by name in the anonymous usage report (#17258), closes #17258
  • 8264ea0 REUSABLE_INPUTS input type, validation, and editor seam (#17042), closes #17042
  • 5c5c4f4 show an icon inside asset dependency nodes (#17207), closes #17207
  • bbdc940 disable blueprints that need plugins which are not installed (#17121), closes #17121
  • b8922d7 add metric constants for maintenance enter/exit (#16597), closes #16597
  • d0a7fe0 attach logs to dynamically-generated taskruns and nest them in the UI
  • c0e0016 let task runners emit detail on the failure path
  • 050a539 add full arg to the secret() pebble function
  • 26fbee1 add CTRL + Shift + L shortcut to cycle themes (#16940), closes #16940
  • eaf57ea autocomplete subflow() namespace and id arguments (#16882), closes #16882
  • 20fc773 add config flag to disable the UI and run the webserver API-only (#16748), closes #16747 #16748
  • 4d6fedc add subflow() Pebble function
  • c05e508 make external tooltip follow the cursor and only over bars/slices (#16836), closes #16836
  • 2fc1229 redesigned Gantt. (#16680), closes #16680
  • 7a9ed14 fallback SDK auth to OSS basic auth
  • 4a285a4 redesign flow blueprints list (#16457), closes #16457
  • 248b30f match strategy on WorkerSelector + Disposition on WorkerQueueRouting
  • e0703ea add maintenance status endpoint (#16181), closes #14455 #16181
  • b37908b add CSRF token protection for cookie-authenticated requests (#16317), closes #16317
  • bbee04d show version badge with commit info and refactor and unify admin section (#16285), closes #16285
  • 66f239b switch ION serialization to binary format (#16144), closes #3155 #16144
  • d8f2413 add isLastWorkingDay() Pebble function
  • b869c0f automate all migration scripts (#15601), closes #15601
  • 27aff90 monitor queue subscriber pause/resume and fix subscribers gauge (#15750), closes #15750
  • 6949451 add translation keys related to enterprise copilot (#15707), closes #15707
  • 9f63dd4 extract reusable copilot component for onboarding pages (#15533), closes #15533
  • d289f9b regexp filter (#15351), closes #15332 #15351
  • 4bcacf5 add kestra.ai.enabled property to disable AI copilot entirely (#15476), closes #15474 #15476
  • ed9db4f open no-code trigger creation form from flow triggers tab (#15463), closes #15463
  • c231395 make sidebar logo destination configurable via prop (#15462), closes #15462
  • 7bb7272 respect timeWindow.default for filter time range (#15461), closes #15461
  • 8851014 redirect logo click to welcome page (#15404), closes #15376 #15404
  • 5e781f7 add secret property type to No-Code editor
  • 97da227 add @PluginProperty(secret = true) with validation for it
  • ab1125a add PebbleUtil and replace hardcoded Pebble delimiters
  • 55240cc Add support for ServiceInstance (#15173), closes #15173
  • 8f4b28a introduce new welcome page with revamped onboarding (#15046), closes #15046
  • bc7d993 introduce dependency view filtering (#14972), closes #14972
  • 57eea63 add separate purge options for execution and trigger logs in PurgeLogs (#14922), closes #14922
  • 782a6d6 implement SecurityIntegration ENABLED filter. (#14839), closes #14839
  • 53db598 allow exporting dependency graphs as jpeg or png images (#14941), closes #14941
  • 325e186 implement BINDING TYPE and NAMESPACE filters (#14829), closes #14829
  • d594be3 implement GROUP.NAME filter. (#14812), closes #14812
  • de39702 implement INVITATION: NAME, EXPIRED_AT, EMAIL filters. (#14810), closes #14810
  • f0e1051 implement Role.NAME filter. (#14808), closes #14808
  • f2ed88d implement User.group EQUALS and IN filter (#14782), closes #14782
  • a208201 Expose service instance metrics via API and add new pending worker messages metric. (#14495), closes #14495
  • dfae1c8 remove deprecated runner property in favor or taskRunner
  • cf1cfd6 remove Property deprecated methdso and constructors

dashboard

  • cd56ec0 open a preview drawer on chart drill-down instead of a full-page redirect (#17194), closes #17194

dashboards

  • 5512794 recycle offscreen dashboard charts and cap their canvas pixel ratio (#18588), closes #14234 #18199 #18588
  • a1f6a8e load charts as they scroll into view and limit concurrent chart requests (#18199), closes #14234 #18199
  • b9d8932 custom dashboard to enterprise only (#17942), closes #17942
  • 04d0a6d broaden chart export to all data charts, add CSV/ION format, default dashboard sentinel (#17260), closes #157 #17260
  • 22e2b24 expandable Top-N + Others Executions per-namespace chart (#17009), closes #17008 #17009
  • bd68963 replace "Executions In Progress" with filterable "Executions" widget (#16616), closes #16616
  • 27ec04b allow setting a default dashboard

design-system

  • 1336b23 let KsSegmented options carry an icon (#18587), closes #18587
  • 4874533 consistent clickable namespace and flow references across tables (#17575), closes #17575
  • aaeac87 add square prop to KsButton for icon-only square buttons (#17474), closes #17474
  • 659356c enforce font-size scale across the UI (#16993), closes #16993
  • 9a7963c redesign login page [2.0] (#16605), closes #16605
  • d8e8921 add sass as a dependency and update package-lock (#16229), closes #16229
  • d81f37b export color palette CSS vars, add missing EP wrappers and fix build exports (#16145), closes #16145

docs

  • 528607a in app docs 2.0 revamp (#17127), closes #17127

ds

  • 1f21950 introduce loader for select

execution

  • 786d23a adapt webhook multipart for EE
  • 870a5a5 update execution progress component and API for average duration
  • f5eb458 add support for allowed and denied list for HTTP tasks
  • 96f9166 replace execution statistics from the Execution repository to the new ExecutionStatistics repository
  • 70d19d4 possible NoSuchElementException on State.getEndDate
  • fcd9cfd Execution stat ...