3.6.12 - Itβs not a feature, itβs a bug!
Released on January 20, 2026 Enhancements ββ- Add httpx.ConnectError to client retry exceptions by @joshuastagner in #20276
- Add build=False documentation to flow.deploy guide by @devin-ai-integration[bot] in #20269
- fix: display error details nicely in
work-pool createcommand by @devin-ai-integration[bot] in #20277 - fix: remove CANCELLED from EnforceCancellingToCancelledTransition to allow retrying cancelled flows by @zzstoatzz in #20275
- Add retry logic to
PrefectEventSubscriber.__aenter__()for initial connections by @devin-ai-integration[bot] in #20295 - fix: convert dynamic_key to str in sync clientβs create_task_run by @zzstoatzz in #20302
- Fix wait() timeout not being respected when using WatcherThreadCancelScope by @devin-ai-integration[bot] in #20257
- migrate RemoteFileSystem and SMB from @sync_compatible to @async_dispatch by @zzstoatzz in #20230
- Migrate notification blocks from @sync_compatible to @async_dispatch by @zzstoatzz in #20258
- Fix Devin flaky tests workflow API integration by @desertaxle in #20272
- Add GitHub Actions workflow to trigger Devin.ai on test failures by @desertaxle in #20255
- Add release notes for integration packages by @desertaxle in #20266
3.6.11 - Itβs my generation, baby
Released on January 15, 2026 This release introducesprefect sdk generate a new CLI command that generates fully-typed, custom Python SDKs from the deployments in your workspace or self-hosted server, making it easy to trigger your deployments from other workflows with confidence.
To see how it works, check out the Prefect docs. This functionality is currently in beta, so try it out and open a GitHub issue if you have feedback!
New Features π
- Add
prefect sdk generateCLI command for generating custom deployment SDKs from existing deployments by @desertaxle in #20150, #20158, #20167, #20172, #20173
- Add JSON output to
prefect variable lsCLI command by @xeniumcode in #20192 - Add JSON output to
prefect global-concurrency-limit lsCLI command by @xeniumcode in #20194 - Add JSON output to
prefect artifactCLI commands by @xeniumcode in #20193 - Add JSON output to
prefect block lsCLI command by @xeniumcode in #20195 - Add JSON output to
prefect block type lsCLI command by @xeniumcode in #20196 - Add JSON output to
prefect deployment scheduleCLI commands by @xeniumcode in #20197 - Add JSON output to
prefect deploymentCLI commands by @xeniumcode in #20198 - Migrate
pause,suspend,resume, andrun_inputfrom@sync_compatibleto@async_dispatchby @devin-ai-integration[bot] in #20178 - Add
forceparameter toChangeFlowRunStateandflow_run_idJinja filter by @zzstoatzz in #20112 - Link
automation.action.*events toautomation.triggeredevent by @chrisguidry in #20227 - Add
DISABLEDto clientDeploymentStatusenum for Cloud compatibility by @chrisguidry in #20244
- Fix flow run cancellation handling bugs by @joshuastagner in #20143
- Fix race condition in filesystem lease storage with atomic writes by @devin-ai-integration[bot] in #20153
- Add task keys to docket calls in API handlers to prevent duplicate execution by @desertaxle in #20210
- Support ISO 8601 duration strings for interval schedules in
prefect.yamlby @zzstoatzz in #20238 - Disable Docket result storage to prevent memory bloat by @desertaxle in #20253
- Preserve the
updatedcolumn value of deployments when marking them as ready by @vkrot-innio in #19936
- Add
arun_deploymentand replace@sync_compatiblewith@async_dispatchby @desertaxle in #20160 - Patch correct method in
test_concurrency_respects_timeoutby @devin-ai-integration[bot] in #20185 - Fix flaky test by reducing
slot_decay_per_secondto prevent race condition by @devin-ai-integration[bot] in #20208 - Remove incorrect docstrings from CLI ls commands by @zzstoatzz in #20206
- Add Claude command frontmatter by @zzstoatzz in #20224
- Enable multi-checker type safety tests with mypy, pyright, and ty by @zzstoatzz in #20159
- Migrate
concurrency/v1from@sync_compatibleto@async_dispatchby @zzstoatzz in #20225 - Migrate
blocks/core.pyfrom@sync_compatibleto@async_dispatchby @devin-ai-integration[bot] in #20226 - Stale item cleanup enhancements by @bdalpe in #20145
- Add plan label to exclude from release notes by @zzstoatzz in #20182
- Auto-label PRs that touch
plans/directory by @zzstoatzz in #20183 - Disable migrations and block registration for multi-worker test by @devin-ai-integration[bot] in #20179
- Fix plan label to only apply when all changed files are in
plans/by @desertaxle in #20207
- Add ECS base job template customization guide by @zzstoatzz in #20249
- Fix MDX parsing error in events CLI documentation by @desertaxle in #20252
- Add documentation for
prefect sdk generateCLI by @desertaxle in #20241
3.6.10 - Five Bugs Walked Into A Bar And None Of Them Left
Released on January 08, 2026 Enhancements ββ- Add
prefect automation updateCLI command by @devin-ai-integration[bot] in #20118 - Add upserting global concurrency limit decay by @cbrown1234 in #20124
- Fix
AttributeErrorinConsumer.cleanup()for non-memory brokers by @devin-ai-integration[bot] in #20089 - Fix
exception_to_crashed_state_syncfailing without async backend by @zzstoatzz in #20139 - Fix
MockValSerserialization error withStateDetailsby @zzstoatzz in #20127 - Resolve race condition in compound trigger evaluation by @desertaxle in #20106
- Fix
AttributeErrorforfunctools.partialhooks inRunnerby @devin-ai-integration[bot] in #20136
- Add
UISettingsmodel for/ui-settingsendpoint by @desertaxle in #20103 - Fix flaky
test_concurrency_respects_timeouttest by @devin-ai-integration[bot] in #20138 - Update
@prefecthq/prefect-ui-libraryto version 3.14.8 by @marvin-robot in #20147 - Run integration tests against PostgreSQL to prevent CI timeouts by @devin-ai-integration[bot] in #20080
- Use correct apt version syntax for git in Dockerfile by @devin-ai-integration[bot] in #20094
- Link to MCP server security FAQ by @zzstoatzz in #20120
- Fix broken ECS worker deployment guide links by @devin-ai-integration[bot] in #20119
- Clarify that base job template variables must be referenced in
job_configurationby @zzstoatzz in #20133
3.6.9 - Auld Lang Sync
Released on December 31, 2025 New Features π- Add worker-side cancellation for pending flow runs by @joshuastagner in #20022
- Add JSON schema for
prefect.yamlfiles by @zzstoatzz in #19996 - Send entrypoint pip install errors to Prefect logs by @jakekaplan in #20058
- Run read and count queries concurrently in paginate endpoints by @zzstoatzz in #20049
- Preserve symlinks in
get_directoryinstead of following them by @majiayu000 in #19993 - Fix
GitRepositoryname parameter preservation in pull step conversion by @devin-ai-integration[bot] in #20004 - Add explicit
ruamel.yaml.clibdependency to fix Docker builds by @zzstoatzz in #20068
- Update
@prefecthq/prefect-ui-libraryto version 3.14.5 by @marvin-robot in #20003 - Add GitHub Actions workflow for UI v2 E2E tests by @devin-ai-integration[bot] in #20042
3.6.8 - On Exception! On Timeout! On Error and Failure! π¦
Released on December 24, 2025 New Features π- Add
prefect flow-run retrycommand by @desertaxle in #19858
- Add
urlproperty to server-sideReceivedEventfor automation templates by @devin-ai-integration[bot] in #19851
- Add timeout to Docket worker shutdown by @desertaxle in #19940
- Prevent dictionary mutation during iteration in
preprocess_schemaby @zzstoatzz in #19946 - Allow string
form_datainCustomWebhookNotificationBlockby @zzstoatzz in #19953 - Bump
pydocketversion and remove background worker shutdown timeout by @desertaxle in #19969 - Fix
TASK_SOURCEcache policy for remote execution withcloudpickleby @desertaxle in #19926
- Run lint, build, and test in parallel for ui-v2 checks by @devin-ai-integration[bot] in #19884
- Fix docker deploy integration test failing due to uv import by @desertaxle in #19899
- Update kickoff-release schedule from Monday to Thursday by @devin-ai-integration[bot] in #19930
- Add security considerations to Prefect MCP server guide by @zzstoatzz in #19875
- Document AWS IAM role assumption by @seanpwlms in #19963
3.6.7 - LoopService #OpenToWork: 3+ Years Experience Looping
Released on December 18, 2025 Enhancements ββ- Add support for AWS IAM authentication for PostgreSQL database by @alaminopu in #19580
- Add generic typing support for
Variable.getmethod by @devin-ai-integration[bot] in #19764 - Convert
late_runsservice to Docket perpetual function by @zzstoatzz in #19722 - Convert
repossessorservice to Docket perpetual function by @zzstoatzz in #19739 - Convert
foremanservice to Docket perpetual function by @zzstoatzz in #19741 - Convert
telemetryservice to Docket perpetual function by @zzstoatzz in #19754 - Convert scheduler and proactive triggers to Docket, remove
LoopServiceby @zzstoatzz in #19756
- Update broken links in creating-automations docs by @devin-ai-integration[bot] in #19759
- Silence retryable SQLite lock errors from
docket.workerlogger by @devin-ai-integration[bot] in #19772 - Exclude unset
grace_period_secondsfrom deploymentconcurrency_optionsby @zzstoatzz in #19784 - Correct
docket_urlsetting path toserver.docket.urlby @zzstoatzz in #19791 - Fix Mattermost bot name issue by @tre-ert in #19780
- Restore netloc-based credential formatting for YAML deployments by @zzstoatzz in #19873
- Add @chrisguidry as a CODEOWNER by @zzstoatzz in #19738
- Add negative matching documentation for automation triggers by @chrisguidry in #19760
3.6.6 - The Eternal Docket of the Spotless Server
Released on December 08, 2025 Enhancements ββ- Add client-side configuration for deployment concurrency grace period by @devin-ai-integration[bot] in #19489
- Add PostgreSQL
search_pathsupport via settings by @devin-ai-integration[bot] in #19620 - Add memory safeguards to event persister service by @desertaxle in #19651
- Add perpetual services infrastructure and convert
cancellation_cleanupto perpetual Docket task by @zzstoatzz in #19715 - Convert
pause_expirationsservice to perpetual Docket task by @zzstoatzz in #19719
- Prevent uvloop from setting global event loop policy in healthcheck by @zzstoatzz in #19660
- Clarify
result_storageusage with@taskand@flowdecorators by @devin-ai-integration[bot] in #19671 - Exclude
DEFAULTcache policy from triggering automaticpersist_resultby @devin-ai-integration[bot] in #19673 - Remove return type annotation from settings serializer to fix OpenAPI schema by @zzstoatzz in #19616
- Use
history_interval_secondsas parameter name in OpenAPI schema by @desertaxle in #19659
- Turn off dependabot for Vue UI package updates by @desertaxle in #19636
- Add weekly release kickoff workflow by @desertaxle in #19661
- Migrate
prefect.input.actionsfromsync_compatibletoasync_dispatchby @zzstoatzz in #19632 - Remove auto-generate docs workflow by @desertaxle in #19665
- Fix incorrect Dockerfile example in βDeploy via Pythonβ guide by @desertaxle in #19653
3.6.5 - Batch Me If You Can
Released on December 04, 2025 Enhancements ββ- Raise if event is too big by @jakekaplan in #19531
- Support
Pathobjects inresult_storageparameter by @zzstoatzz in #19533 - Hide βJoin the Communityβ in air-gapped deployments by @zzstoatzz in #19540
- Parametrize
xreadgroupbatch size in consumer and addEventPersisterservice setting by @saschwartz in #19545 - Parametrize
xautoclaimbatch size by @saschwartz in #19557 - Parametrize
TaskRunRecorderandTriggerservice message read batch size by @saschwartz in #19559 - Add Slack GovCloud (slack-gov.com) webhook support to
SlackWebhookblock by @devin-ai-integration[bot] in #19565 - Support dot-delimited syntax for
job_variablesin workers by @devin-ai-integration[bot] in #19619 - Add client-side caching for concurrency limits by @devin-ai-integration[bot] in #19625
- Support
username:passwordauth for self-hosted BitBucket instances by @zzstoatzz in #19516 - Optimize
/api/task_runs/countendpoint performance by @naaa760 in #19548 - Fix docker compose file in self hosted docs by @rodeyfeld in #19551
- Fix performance issues with sync tasks on Windows by @desertaxle in #19595
- Fix dead thread hang by @zzstoatzz in #19601
- Allow Jinja templates in trigger enabled field during YAML loading by @zzstoatzz in #19610
- Fix compatibility with
fastapi==0.123.7by @desertaxle in #19626 - Allow EC2 task definitions to omit
launchTypefor capacity providers by @zzstoatzz in #19630
- Update sucrase to remove vulnerable glob dependency by @zzstoatzz in #19599
- Add timeout to worker teardown to prevent test flakes by @zzstoatzz in #19465
- Update CODEOWNERS by @desertaxle in #19578
- Pin
pytest-asyncioto fix 3.10 client tests by @desertaxle in #19609 - Fix flakes in
TestReadTaskRunCountsByState::test_returns_all_state_typesby @desertaxle in #19612
- Add per-worker task concurrency example by @zzstoatzz in #19541
- Improve database maintenance documentation and examples by @zzstoatzz in #19604
- Fix YAML key for Bitbucket repository by @desertaxle in #19607
- Add Google Tag Manager integration to docs by @zzstoatzz in #19629
3.6.4 - No Deployment Left Unparametrized
Released on November 21, 2025 Bug Fixes π- fix: preserve event template parameters in deployment triggers by @zzstoatzz in #19504
- Fix truncating log behavior by @jakekaplan in #19496
- Chore: Bump ui library by @znicholasbrown in #19492
- docs: Add migration note about unmapped mutable objects by @zzstoatzz in #19494
3.6.3 - Thatβs JSON Bourne
Released on November 19, 2025 Enhancements ββ- Add
-o jsonoutput option toprefect flow-run lscommand by @devin-ai-integration[bot] in #19484 - fix: allow pause_flow_run() to pause parent flow when called from task by @zzstoatzz in #19457
- Use acquisition service pattern for lease-based concurrency slots by @bunchesofdonald in #19451
- fix: respect subflow attributes (log_prints, result_storage) when running inside task by @zzstoatzz in #19450
- fix: defer forward reference resolution in ValidatedFunction by @zzstoatzz in #19452
- fix: validate deployment triggers after templating so jinja-based booleans work, should close #19348 by @iclectic in #19414
- fix: show detailed validation errors for top-level prefect.yaml fields by @zzstoatzz in #19468
- Clamp denied_slots decay rate to match retry-after calculation by @bunchesofdonald in #19466
- Fix: Enable parameter type checking for @task decorator by @zzstoatzz in #19459
- add βbuild-arg to dev build-image command to allow direct passing ofβ¦ by @conrade-ctc in #19473
- Add database cleanup example with human/AI approval by @zzstoatzz in #19456
3.6.2 - The Missing Link
Released on November 13, 2025 Enhancements β- Add causal link from automation action events to triggering events by @zzstoatzz in #19426
- cap retry-after for concurrency limits to prevent excessive delays by @zzstoatzz in #19428
- accept numeric values for PREFECT_API_SERVICES_LATE_RUNS_AFTER_SECONDS by @zzstoatzz in #19434
- add work_queue_id to DeploymentResponse by @zzstoatzz in #19417
- correct GitHub Actions conditional syntax in integration release workflow by @zzstoatzz in #19439
3.6.1 - Pop, Lock it, Docket
Released on November 10, 2025 Enhancements β- Add logfire sampling configuration and fix boolean env var handling by @zzstoatzz in #19383
- Fix interactive deploy CLI selecting wrong flow when opting out by @zzstoatzz in #19392
- Fix deployment.parameters in nested flows using ContextVars by @zzstoatzz in #19366
- Upgrade pydocket to stable 0.13.0 release by @zzstoatzz in #19401
- Add client methods for querying events via REST API by @zzstoatzz in #19382
3.6.0 - Throw it on the docket and weβll get to it in a jiffy
This release addspydocket, a background task system, to replace FastAPIβs background_tasks. Background tasks now include automatic retries and can optionally use Redis as a backing layer for enhanced durable execution.
Released on November 07, 2025
Enhancements ββ
- Replace FastAPI
background_taskusage withpydocketby @desertaxle in #19377 - Emit events for deployment pull step execution by @zzstoatzz in #19339
- Fix import order dependency and circular import issues by @zzstoatzz in #19344
- Fix
deployment.parametersin subprocess flows by @zzstoatzz in #19331 - Fix misleading
pyrighterror when calling async task with wrong argument types by @zzstoatzz in #19327 - Fix
EventsWorkersingleton leak inprefect_test_harnessby @zzstoatzz in #19343 - Fix
run_deploymentexecution graph display when called from tasks by @desertaxle in #19361 - Fix automation deletion deadlock by enforcing consistent lock ordering by @zzstoatzz in #19369
- Update
prefect-ui-libraryto latest version by @znicholasbrown in #19350
- Remove legacy settings imports from CLI by @desertaxle in #19353
- Clean up root directory by @zzstoatzz in #19355
- Replace Optional with pipe syntax in _trim_traceback function by @devin-ai-integration[bot] in #19358
- Auto-close superseded documentation PRs by @zzstoatzz in #19357
- Add @chrisguidry as a CODEOWNER by @desertaxle in #19368
- Sync UI v2 OpenAPI schema with node v20.19.0 by @zzstoatzz in #19373
- Migrate
RedisStorageContainerfromsync_compatibletoasync_dispatchby @devin-ai-integration[bot] in #19363
- Add Pulumi section to Infrastructure as Code documentation by @bdalpe in #19352
- Fix link in ECS worker docs by @mattiamatrix in #19364