Prefect 3.8.7 was published on September 26, 2026, delivering targeted enhancements for worker execution controls, database state queries, and result persistence. The release introduces configurable container wait timeouts for Docker workers, resolves race conditions and lease revocations in concurrency handling, and updates internal query indexing for flow runs.
The full release notes and downloads are on the GitHub release page.
Worker Container Execution and Deployment Configuration ¶
Prefect 3.8.7 adds container_wait_timeout to DockerWorkerJobConfiguration in #23151. This setting gives operators explicit control over how long a worker process waits for Docker containers to enter a running state before timing out job launch attempts.
Direct Docker deployment submissions now properly deliver the include_files sidecar payload in #22858. For AWS Elastic Container Service infrastructure, the worker implementation in #23132 omits inferred securityGroups when non specified, allowing tasks to fall back cleanly to the default Virtual Private Cloud security group. Additionally, deployment job variables can now be cleared back to empty configurations by passing an empty dictionary payload in #23203.
Task Engine Persistence and Concurrency Protections ¶
Result persistence behavior across both task execution engines was aligned in #23160. Failed task exceptions now respect the user specified persist_result setting, preventing unwanted result writes when task persistence is explicitly disabled.
Storage reading behavior for local filesystems outside default storage locations was corrected in #23188. This fix ensures that persisted results saved to unsaved local storage paths remain readable across execution contexts. In #22936, Prefect fixes a concurrency issue that allowed live filesystem concurrency leases to undergo premature revocation. For Azure object storage integrations, bundle uploads with reused sidecar keys are now idempotent in #23170.
Database Query Indexing and Event Observability ¶
Database performance for flow run queries receives an operational index update in #23128. The schema migration adds a composite index on flow_run(state_type, coalesce(start_time, expected_start_time)), improving query evaluation when filtering runs by state across scheduled and actual start timestamps.
Event publishing diagnostics were improved in #23180. When the event bus refuses an oversized event payload, Prefect now logs the exact byte size of the rejected payload to help platform teams identify high volume telemetry sources. Internal mathematical helper clamped_poisson_interval was also updated in #23208 to return 0.0 for non positive intervals.
Engine runtime execution receives two concurrency fixes. In #23089, a race condition between WatcherThreadCancelScope timeout injection and scope exit was resolved. Subflow execution logic in #23153 now preserves the retry budget for completed subflows when a parent flow retries.
UI Enhancements and Tooling Updates ¶
The React user interface includes frontend updates in this release. Pull request #23143 adds browser local pinned deployments to the React interface, allowing operators to store pinned workflow shortcuts locally.
Other UI fixes include formatting creation and update timestamps in metadata views in #23112, making tag overflow elements focusable in #23116, setting browser tab titles in #23179, and restoring navigation links on ui-v2 flow run cards in #23113. Markdown rendering in ui-v2 adds support for inline data:image/* URIs in #23156. On the build side, UI source maps and nightly source distributions are now omitted in #23120, while documentation in #23085 clarifies when deployment concurrency slots are acquired and released.
Where to Get It ¶
To download Prefect 3.8.7 or inspect the full changelog, use the following links:
- The GitHub release page
- The Prefect repository
- The version tag
3.8.7