NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1445 most downloaded on PyPI
Workflow orchestration and management.
Last release 2 days ago
02 Oct 2026
Ships on a steady schedule
a new release about every 8 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
8 years old
894 releases · first in 2019
Remove causal ordering from task run recorder by @chuqCTC in #21458
Enhancements ➕➕
Bug Fixes 🐞
pydocket to >=0.19.0 and drop the fakeredis pin by @chrisguidry in #21512dict fallback path for git clone by @devin-ai-integration in #21540anyio.NoEventLoopError on older anyio versions by @devin-ai-integration in #21539serve not clearing work pool config on existing deployments by @vyagubov in #21528PydanticInvalidForJsonSchema in parameter schema generation by @devin-ai-integration in #21571Development & Tidiness 🧹
@prefecthq/prefect-design to version 2.16.4 by @marvin-robot in #21514AGENTS.md into per-subpackage intent nodes by @desertaxle in #21579AGENTS.md and docs auto-update workflows by @devin-ai-integration in #21592Documentation 📓
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.26...3.6.27
One column per quarter.
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
PydanticInvalidForJsonSchema in parameter schema generation by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21571Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.27.dev4...3.6.27.dev5
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
prefect-dbt==0.7.21 by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21552Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.27.dev3...3.6.27.dev4
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
dict fallback path for git clone by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21540anyio.NoEventLoopError on older anyio versions by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21539Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.27.dev2...3.6.27.dev3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.27.dev1...3.6.27.dev2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.26...3.6.27.dev1
Add configurable bundle launchers for work pool storage by @desertaxle in #21478
Experimental 🔬
Bug Fixes 🐞
DTSTART on RRule schedules at write time by @zzstoatzz in #21436run_results lookups for weakref-able objects to prevent stale id() collisions by @zzstoatzz in #21443pendulum floor to 3.1.0 to fix pydantic-extra-types 2.11.2 compatibility by @zzstoatzz in #21480fakeredis < 2.35.0 to prevent ImportError in docket memory backend by @devin-ai-integration[bot] in #21506Development & Tidiness 🧹
retry_asserts for observer event propagation by @devin-ai-integration[bot] in #21417SubprocessASGIServer singleton cleanup and SQLite lock retry in tests by @devin-ai-integration[bot] in #21405Documentation 📓
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.25...3.6.26
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.26.dev5...3.6.26.dev6
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
pendulum floor to 3.1.0 to unbreak pydantic-extra-types 2.11.2 by @zzstoatzz in https://github.com/PrefectHQ/prefect/pull/21480Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.26.dev4...3.6.26.dev5
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.26.dev3...3.6.26.dev4
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
prefect-kubernetes==0.7.7 by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21434Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.26.dev2...3.6.26.dev3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.26.dev1...3.6.26.dev2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
prefect-redis==0.2.10 by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21416Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.25...3.6.26.dev1
Separate raise_on_lease_renewal_failure from strict in concurrency() by @zionts in #20951
Enhancements ➕➕
raise_on_lease_renewal_failure from strict in concurrency() by @zionts in #20951Bug Fixes 🐞
examples for list fields in notification blocks to show JSON array format by @devin-ai-integration[bot] in #21340parameters_to_args_kwargs greedily assigning kwargs as positional args by @devin-ai-integration[bot] in #21332PermissionError when UI static directory creation fails by @Br1an67 in #21035subprocess_message_processor_factories in ProcessPoolTaskRunner.duplicate() by @devin-ai-integration[bot] in #21403flow-run execute cancellation hooks by @devin-ai-integration[bot] in #21406filter_files to include parent directories for .prefectignore negation patterns by @devin-ai-integration[bot] in #21352GitRepository pull steps by @devin-ai-integration[bot] in #21384Submitting state proposal in prefect flow-run execute CLI path by @devin-ai-integration[bot] in #21411Development & Tidiness 🧹
apt-get upgrade to all Dockerfile stages to patch CVEs by @devin-ai-integration[bot] in #21370Documentation 📓
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.24...3.6.25
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
flow-run execute cancellation hooks by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21406Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.25.dev6...3.6.25.dev7
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.25.dev5...3.6.25.dev6
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
apt-get upgrade to all Dockerfile stages to patch CVEs by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21370Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.25.dev4...3.6.25.dev5
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
parameters_to_args_kwargs greedily assigning kwargs as positional args by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21332prefect-aws==0.7.7 by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21355filter_files to include parent directories for .prefectignore negation patterns by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21352Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.25.dev3...3.6.25.dev4
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.25.dev2...3.6.25.dev3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.25.dev1...3.6.25.dev2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
examples for list fields in notification blocks to show JSON array format by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21340Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.24...3.6.25.dev1
Note: unwatched flows also never boil
Note: unwatched flows also never boil
New Features 🎉
flow-run watch command to watch any flow run until it reaches a terminal state by @devin-ai-integration[bot] in #21260with_context() for propagating Prefect run context into user-spawned subprocesses by @desertaxle in #21304Enhancements ➕➕
QueueService to prevent OOM during server outages by @zionts in #21033position to block schema properties for UI field ordering by @devin-ai-integration[bot] in #21307python-on-whales by @devin-ai-integration[bot] in #21286suspend_flow_run by @devin-ai-integration[bot] in #21285PREFECT_CLIENT_CUSTOM_HEADERS in standalone version check by @devin-ai-integration[bot] in #21262Bug Fixes 🐞
PrefectFutureList.result() raising AttributeError after flow resolution by @devin-ai-integration[bot] in #21221RunDeployment actions by @devin-ai-integration[bot] in #21231prefect deploy --all to respect default work pool settings by @bdalpe in #21258UnicodeDecodeError when subprocess outputs non-UTF-8 bytes by @Krishnachaitanyakc in #21267ValueError when deploying flows whose source is outside cwd by @devin-ai-integration[bot] in #21281Content-Type to application/json for old client compatibility by @chuqCTC in #21302allow_failure() not working with mapped tasks in wait_for by @devin-ai-integration[bot] in #21305PREFECT_SERVER_ANALYTICS_ENABLED env var in CLI by @devin-ai-integration[bot] in #21315include_secrets by @devin-ai-integration[bot] in #21306dotenv_values when .env is not a regular file by @devin-ai-integration[bot] in #21320EventsWorker class variable mutation and add _on_item_dropped for queue cleanup by @devin-ai-integration[bot] in #21273Development & Tidiness 🧹
CancelledError during sync concurrency slot release by @devin-ai-integration[bot] in #21212except: with explicit Exception/BaseException branches in run_flow() by @devin-ai-integration[bot] in #21228uv lock succeeds by @devin-ai-integration[bot] in #21230default-tag above integration floors by @devin-ai-integration[bot] in #21234Runner usage from bundle execution and CLI paths by @desertaxle in #21252Documentation 📓
quote/opaque annotations by @devin-ai-integration[bot] in #21214prefect-slurm to the integrations catalog by @desertaxle in #21229Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.23...3.6.24
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
allow_failure() now works with mapped tasks in wait_for by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21305_pull_image silently swallowing pull errors by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21310Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.24.dev4...3.6.24.dev5
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
_on_item_dropped for queue cleanup by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21273suspend_flow_run by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21285Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.24.dev3...3.6.24.dev4
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
flow-run watch command by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21260Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.24.dev2...3.6.24.dev3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
except: with explicit Exception/BaseException branches in run_flow() by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21228uv lock succeeds by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21230default-tag above integration floors by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21234Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.24.dev1...3.6.24.dev2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
PrefectFutureList.result() raising AttributeError after flow resolution by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21221prefect-aws==0.7.6 by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21202quote/opaque annotations by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21214Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.23...3.6.24.dev1
Skip no-op SQL filters for empty values to speed up deployment pagination by @devin-ai-integration[bot] in #21115
Enhancements ➕➕
--no-create-pool-if-not-found flag to worker start by @VittoriaLanzo in #21004prefect.yaml deployments by @devin-ai-integration[bot] in #21152stream_progress_to parameter to DockerImage by @zzstoatzz in #21175active_slots field to work pool and work queue API responses by @desertaxle in #21149include_files support to remaining infrastructure decorators by @devin-ai-integration[bot] in #21178Bug Fixes 🐞
ProcessPoolTaskRunner to check upstream task states in wait_for dependencies by @devin-ai-integration[bot] in #21122run_shell_script for pipe and redirect support by @ihabshea in #21130run_shell_script by @devin-ai-integration[bot] in #21163run_shell_script for built-in command support by @devin-ai-integration[bot] in #21167Development & Tidiness 🧹
just unreleased-integrations command by @devin-ai-integration[bot] in #21136Documentation 📓
.submit() and .submit_to_work_pool() for infrastructure-bound flows by @devin-ai-integration[bot] in #21180include_files on infrastructure decorators by @devin-ai-integration[bot] in #21186Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.22...3.6.23
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
run_shell_script for built-in command support by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21167Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.23.dev3...3.6.23.dev4
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
_send_to_dlq with clearer message by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21144Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.23.dev2...3.6.23.dev3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
prefect-redis==0.2.9 by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21137just unreleased-integrations command by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21136Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.23.dev1...3.6.23.dev2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.22...3.6.23.dev1
Add Submitting and InfrastructurePending states and emit from BaseWorker by @desertaxle in #20964
New Features 🎉
Submitting and InfrastructurePending states and emit from BaseWorker by @desertaxle in #20964Enhancements ➕➕
end_time filter support for flow and task runs by @jellyfish0316 in #21013hmac.compare_digest for auth token comparisons by @bunchesofdonald in #21072flow_run_logger to accept a bare flow_run_id UUID by @devin-ai-integration[bot] in #21019None to 180s by @bunchesofdonald in #21058Bug Fixes 🐞
FlowRunCancellingObserver subscriber connection failure gracefully by @devin-ai-integration[bot] in #21039postgres_listener ssl query param causing CantChangeRuntimeParamError by @devin-ai-integration[bot] in #21040CANCEL_NEW strategy not cancelling late runs when limit is full by @devin-ai-integration[bot] in #21086endswith() health check path exemption by @bunchesofdonald in #21063Integrations & Dependencies 🤝
packaging upper bound from <25.1 to <26.1 by @purificant in #21015Development & Tidiness 🧹
test_two_subscriptions_get_all_events by handling None heartbeats by @devin-ai-integration[bot] in #21037test_cache_expiration_expires by using advance_time fixture by @devin-ai-integration[bot] in #21070Documentation 📓
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.21...3.6.22
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.22.dev7...3.6.22.dev8
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
ssl query param causing CantChangeRuntimeParamError by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21040test_cache_expiration_expires by using advance_time fixture by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21070Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.22.dev6...3.6.22.dev7
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
FlowRunCancellingObserver subscriber connection failure gracefully by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21039test_two_subscriptions_get_all_events by handling None heartbeats by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21037flow_run_logger to accept a bare flow_run_id UUID by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/21019Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.22.dev5...3.6.22.dev6
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.22.dev4...3.6.22.dev5
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.22.dev3...3.6.22.dev4
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.22.dev2...3.6.22.dev3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.22.dev1...3.6.22.dev2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
prefect-dbt==0.7.20 by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20994Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.21...3.6.22.dev1
Add --output json support to flow ls command by @Br1an67 in #20907
Enhancements ➕➕
--output json support to flow ls command by @Br1an67 in #20907match_related type hints and add Python examples for DeploymentEventTrigger by @devin-ai-integration[bot] in #20902EventPersister to docket-based db_vacuum service by @tom21100227 in #20811--output json to task-run ls, work-pool ls, and concurrency-limit ls by @zzstoatzz in #20967--output json support to block inspect and block type inspect by @zzstoatzz in #20981--output json support to flow-run logs and task-run logs by @zzstoatzz in #20982--output json support to server services ls by @jellyfish0316 in #20983--output json support to cloud workspace and webhook commands by @zzstoatzz in #20984--output json support to work-queue ls and preview by @zzstoatzz in #20985--output json support to work-pool preview by @zzstoatzz in #20986--output json support to profile ls and config view by @zzstoatzz in #20987task_run(state_type, start_time) by @desertaxle in #20940task command by @zzstoatzz in #20925PREFECT_CLIENT_SERVER_VERSION_CHECK_ENABLED setting by @devin-ai-integration[bot] in #20973ProcessPoolTaskRunner.submit() by @devin-ai-integration[bot] in #20972Bug Fixes 🐞
postgres_listener to preserve Kerberos/GSSAPI and TLS connection params by @devin-ai-integration[bot] in #20890prefect deploy by @ashwanth0110 in #20874work-pool create sample code output by @Br1an67 in #20906PrefectHTTPStatusError message by @devin-ai-integration[bot] in #20938state_id references by @devin-ai-integration[bot] in #20941ResultStore._read/_aread by @devin-ai-integration[bot] in #20988Development & Tidiness 🧹
git_clone in pip_install_reqs test by @devin-ai-integration[bot] in #20949Documentation 📓
pull_with_block YAML example to Bitbucket integration docs by @toroleapinc in #20935PREFECT_API_URL env var in the self-hosted Docker Compose file by @Kiskadee-dev in #20897Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.20...3.6.21
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
EventPersister to docket-based db_vacuum service by @tom21100227 in https://github.com/PrefectHQ/prefect/pull/20811PrefectDbtOrchestrator by @desertaxle in https://github.com/PrefectHQ/prefect/pull/20958dbt deps step to DbtCoreExecutor by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20960plan() dry-run method to PrefectDbtOrchestrator by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20965Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.21.dev4...3.6.21.dev5
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
wait_for_completion by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20739Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.21.dev3...3.6.21.dev4
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
--output json support to flow ls command by @Br1an67 in https://github.com/PrefectHQ/prefect/pull/20907match_related type hints and add Python examples for DeploymentEventTrigger by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20902work-pool create sample code output by @Br1an67 in https://github.com/PrefectHQ/prefect/pull/20906prefect-dbt==0.7.19 by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20924Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.21.dev2...3.6.21.dev3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.21.dev1...3.6.21.dev2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.20...3.6.21.dev1
Migrate CLI from typer to cyclopts, remove toggle and delegation machinery by @zzstoatzz in #20821
Enhancements ➕➕
typer to cyclopts, remove toggle and delegation machinery by @zzstoatzz in #20821ProcessPoolTaskRunner subprocess events and logs through a single parent queue, improving per-task performance by ~28% in log-heavy workloads by @desertaxle in #20864ProcessPoolTaskRunner for custom event/log handling in the parent forwarder by @desertaxle in #20869Bug Fixes 🐞
None asset descriptions in events by @devin-ai-integration[bot] in #20840batch_size from 1000 to 200 to prevent query timeouts on Postgres by @zzstoatzz in #20857ProcessPoolTaskRunner when task completes before async event forwarding by @devin-ai-integration[bot] in #20876Development & Tidiness 🧹
_cyclopts/ to src/prefect/cli/, remove typer dependency by @zzstoatzz in #20838nvm from clobbering setup-node in pre-commit CI by @zzstoatzz in #20854Documentation 📓
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.19...3.6.20
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
ProcessPoolTaskRunner by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20876Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.20.dev4...3.6.20.dev5
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
ProcessPoolTaskRunner subprocess events/logs through parent queue by @desertaxle in https://github.com/PrefectHQ/prefect/pull/20864Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.20.dev3...3.6.20.dev4
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.20.dev2...3.6.20.dev3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
_create_job by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20848None asset descriptions in events by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20840run_build() completes by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20839validate_for_orchestrator to PrefectDbtSettings by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20841_cyclopts/ to src/prefect/cli/, remove typer by @zzstoatzz in https://github.com/PrefectHQ/prefect/pull/20838Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.20.dev1...3.6.20.dev2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.19...3.6.20.dev1
This release introduces an optional database vacuum service that periodically deletes old flow runs and orphaned resources (logs, artifacts, artifact
This release introduces an optional database vacuum service that periodically deletes old flow runs and orphaned resources (logs, artifacts, artifact collections) to keep your database lean. It's disabled by default — enable it with PREFECT_SERVER_SERVICES_DB_VACUUM_ENABLED=true. Once enabled, it runs hourly and removes terminal top-level flow runs older than 90 days. Both the retention period and frequency are configurable via PREFECT_SERVER_SERVICES_DB_VACUUM_RETENTION_PERIOD (in seconds, minimum 1 hour) and PREFECT_SERVER_SERVICES_DB_VACUUM_LOOP_SECONDS.
Enhancements ➕➕
prefect-gcp and prefect-azure by @devin-ai-integration[bot] in #20771Bug Fixes 🐞
CustomWebhookNotificationBlock by @devin-ai-integration[bot] in #20781Development & Tidiness 🧹
Documentation 📓
ImportString section to form-building guide by @zzstoatzz in #20768Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.18...3.6.19
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
prefect-gcp and prefect-azure by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20771Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.19.dev2...3.6.19.dev3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
CustomWebhookNotificationBlock by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20781prefect-dbt==0.7.18 and fix integration API ref generation by @desertaxle in https://github.com/PrefectHQ/prefect/pull/20789Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.19.dev1...3.6.19.dev2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
extra_cli_args passthrough to run_build() by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20770Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.18...3.6.19.dev1
Add opaque annotation to prevent recursive traversal of resolved task inputs by @devin-ai-integration[bot] in #20650
Enhancements ➕➕
opaque annotation to prevent recursive traversal of resolved task inputs by @devin-ai-integration[bot] in #20650PREFECT_WORKER_DEBUG_MODE for worker-only debug logging by @devin-ai-integration[bot] in #20653DateTimeDelta as interval option in IntervalSchedule by @devin-ai-integration[bot] in #20692Bug Fixes 🐞
TaskRunResponse by @vyagubov in #20664replaces handling by @chrisguidry in #20669uq_task_run__flow_run_id_task_key_dynamic_key constraint violation with multiple background workers by @devin-ai-integration[bot] in #20697Integrations & Dependencies 🤝
pydocket minimum version to 0.17.7 by @devin-ai-integration[bot] in #20731Development & Tidiness 🧹
server, worker, shell CLI commands to cyclopts by @zzstoatzz in #20603SessionStart hook to symlink AGENTS.md files to CLAUDE.md files by @desertaxle in #20667flow CLI command to cyclopts by @zzstoatzz in #20672flow-run CLI command to cyclopts by @zzstoatzz in #20673deployment CLI command to cyclopts by @zzstoatzz in #20721dashboard, task, sdk CLI commands to cyclopts by @zzstoatzz in #20723concurrency-limit, events, experimental CLI commands to cyclopts by @zzstoatzz in #20724variable, artifact, task-run, api CLI commands to cyclopts by @zzstoatzz in #20740dev, global-concurrency-limit CLI commands to cyclopts by @zzstoatzz in #20745block CLI command to cyclopts and add command aliases by @zzstoatzz in #20749work-queue CLI command to cyclopts by @zzstoatzz in #20763Documentation 📓
analytics module from API reference docs by @devin-ai-integration[bot] in #20722wait_for_input types generate a value field for programmatic resume by @desertaxle in #20741Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.17...3.6.18
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
wait_for_input types generate a value field for programmatic resume by @desertaxle in https://github.com/PrefectHQ/prefect/pull/20741PREFECT_WORKER_DEBUG_MODE for worker-only debug logging by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20653Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.18.dev5...3.6.18.dev6
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
DateTimeDelta as interval option in IntervalSchedule by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20692prefect-gcp API reference docs via mdxify by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20704analytics module from API reference docs by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20722replaces handling by @chrisguidry in https://github.com/PrefectHQ/prefect/pull/20669uq_task_run__flow_run_id_task_key_dynamic_key constraint violation with multiple background workers by @devin-ai-integration[bot] in https://github.com/PrefectHQ/prefect/pull/20697Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.6.18.dev4...3.6.18.dev5
Your coding agent can read these notes before it upgrades. Set up the MCP server →