Crawl4AI v0.9.2: Maintenance Bug Fixes
July 14, 2026 ยท View on GitHub
July 2026 - 2 min read
I'm releasing Crawl4AI v0.9.2, a small maintenance patch that cleans up a dispatcher resource leak and fixes a handful of Docker and GPU build issues. No new features, no breaking changes.
If you're on v0.9.1, upgrade freely.
What's new at a glance
- Dispatcher cleanup:
MemoryAdaptiveDispatcherno longer leaves crawl tasks and browser pages running after a streaming crawl is closed - Docker Playground: "Advanced Config" no longer returns a 400
- Docker Monitor: the dashboard WebSocket no longer returns a 500 under JWT auth
- Docker image: Playwright headless shell is now included
- GPU builds:
ENABLE_GPU=trueDocker builds no longer fail on the CUDA toolkit
Bug fixes
Dispatcher (1 fix)
- Streaming cleanup leak: When the async generator from
MemoryAdaptiveDispatcher.run_urls_stream()was closed or cancelled mid-stream, its per-URL crawl tasks kept running in the background. A laterarun_many()on the same crawler could then overlap the old tasks while they still held the same browser, contexts, and pages โ leaking pages and emitting stray PlaywrightTargetClosedErrors. Closing the stream now cancels and awaits every in-flight task and drains any queued-but-unstarted URLs before returning. (#2071, thanks @reallav0)
Docker (3 fixes)
- Playground "Advanced Config" 400:
/config/dumprequires atype, but the playground'spyConfigToJsononly sentcode. The request now includes the config type, aligns the stream fallback with the dump shape, and teachesshouldUseStreamboth nestings. (#2059, thanks @Pitchfork-and-Torch) - Monitor WebSocket 500: the monitor dashboard's
/monitor/wsendpoint 500'd because a router-leveltoken_depis HTTP-request-only and can't inject into WebSocket scopes. Auth is now enforced solely byAuthGateMiddleware; admin routes keeprequire_admin. (#2060, thanks @Pitchfork-and-Torch) - Headless shell packaging: the Playwright headless shell is now installed in the Docker image. (#2067, thanks @reallav0)
GPU / Build (1 fix)
- CUDA toolkit on Bookworm:
ENABLE_GPU=truebuilds failed with "Package has no installation candidate" becausenvidia-cuda-toolkitlives in Debian Bookworm'snon-freecomponent, which thepython:3.12-slim-bookwormbase image omits. The Dockerfile now adds thenon-free(and contrib) apt sources before the GPU install block. (#2020, thanks @harshmathurx)
Tests
- Regression test added for the dispatcher stream-close cleanup, asserting in-flight tasks are cancelled, the queue is drained, and session count returns to zero.
- Updated the monitor auth test for the WebSocket-safe router config, and corrected a regex group name and the Playwright cache-copy target in the Docker tests.
Breaking changes
None.
Upgrade
pip install -U crawl4ai
crawl4ai-doctor # verify installation
Docker users: pull the latest image once the Docker release workflow finishes.
Verification
python docs/releases_review/demo_v0.9.2.py
Acknowledgments
Thanks to the community contributors who made this release possible: @reallav0 (#2071, #2067), @Pitchfork-and-Torch (#2059, #2060), @harshmathurx (#2020).