NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #46 most downloaded on PyPI
The lightning-fast ASGI server.
Last release 9 days ago
25 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
9 years old
204 releases · first in 2017
📨 Send metadata after the response body
uvicorn 0.54.0 adds response trailers and 103 Early Hints to its experimental HTTP/2 implementation through zttp.
uv add uvicorn==0.54.0 "zttp>=0.0.34"http.response.trailers extension lets applications send metadata, such as checksums, after the response body. Clients must send TE: trailers to receive them. Multiple trailer messages are combined before completing the response.--http zttp --http2. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.103 Early Hints over HTTP/2 (#3137). Applications can use the ASGI http.response.early_hint extension to send resource hints before the final response. Each supplied link becomes a separate Link header.Full changelog: 0.53.0...0.54.0
HTTP/2 support remains experimental. Install zttp>=0.0.34 and enable it with --http zttp --http2 .
Add HTTP/2 response trailers through the ASGI http.response.trailers extension. Clients must send TE: trailers to receive them ( #3146 )
Add HTTP/2 103 Early Hints through the ASGI http.response.early_hint extension ( #3137 )
One column per quarter.
uvicorn 0.53.0 adds experimental HTTP/2 through zttp , alongside a new zuvloop integration and connection-handling improvements.
uvicorn 0.53.0 adds experimental HTTP/2 through zttp, alongside a new zuvloop integration and connection-handling improvements.
uv add uvicorn==0.53.0zttp (#2982, #3101). Install zttp, then enable HTTP/2 with --http zttp --http2. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.zuvloop (#3104). Install zuvloop separately and select it explicitly with --loop zuvloop on CPython 3.14 or newer.Connection: close token lists (#3103). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.FORWARDED_ALLOW_IPS value now includes ::1.Full changelog: 0.52.4...0.53.0
This release adds experimental HTTP/2 support through zttp . Enable it with --http zttp --http2 . Upgrade-based h2c and WebSockets over HTTP/2 are not supported.
Add experimental HTTP/2 support through zttp ( #2982 , #3101 )
Add support for zuvloop ( #3104 )
Handle comma-separated, case-insensitive Connection: close tokens across HTTP implementations ( #3103 )
Trust IPv6 loopback in the default FORWARDED_ALLOW_IPS value ( #3119 )
Cancel the HTTP keep-alive timer when upgrading to WebSocket ( #3107 )
Remove duplicate Date headers from accepted WebSocket handshakes with websockets-sansio
Date headers from accepted WebSocket handshakes with websockets-sansio (#3078)Full Changelog: 0.52.3...0.52.4
Update zttp to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance
zttp to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (#3067)Full Changelog: https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3
zttp to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (#3067)Full Changelog: 0.52.2...0.52.3
Update zttp to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance
zttp to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (#3063)Full Changelog: https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2
zttp to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (#3063)Full Changelog: 0.52.1...0.52.2
Complete the closing handshake on server-initiated WebSocket closes in the websockets-sansio and wsproto implementations, waiting for the client's clo
websockets-sansio and wsproto implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (#3053)websockets-sansio implementation, preventing data truncation on server-initiated closes with large in-flight payloads (#3048)Content-Type and Content-Length headers from WebSocket denial responses on the websockets-sansio implementation, and deliver non-UTF-8 denial bodies intact (#3041)Full Changelog: https://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1
This release adds an experimental HTTP/1.1 implementation backed by zttp, a sans-IO HTTP parser I've been developing on the side: a core written in Zi
This release adds an experimental HTTP/1.1 implementation backed by zttp, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.
It is still experimental, so don't put it in front of production traffic yet. Try it with --http zttp, and please send any feedback to the issue tracker.
zttp HTTP/1.1 implementation, selectable with --http zttp (#2979)Full Changelog: https://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0
Restart workers with overlap on SIGHUP for near-zero-downtime reloads by @Kludex in https://github.com/Kludex/uvicorn/pull/3025
Full Changelog: https://github.com/Kludex/uvicorn/compare/0.50.2...0.51.0
Full Changelog: 0.50.2...0.51.0
Require websockets>=13.0 for the default sansio implementation by @Kludex in #3021
Full Changelog: 0.50.1...0.50.2
Full Changelog: https://github.com/Kludex/uvicorn/compare/0.50.1...0.50.2
Split comma-separated Sec-WebSocket-Protocol values in the websockets-sansio implementation by @Aayush7352 in #3019
Sec-WebSocket-Protocol values in the websockets-sansio implementation by @Aayush7352 in #3019Full Changelog: 0.50.0...0.50.1
Sec-WebSocket-Protocol values in the websockets-sansio implementation by @Aayush7352 in https://github.com/Kludex/uvicorn/pull/3019Full Changelog: https://github.com/Kludex/uvicorn/compare/0.50.0...0.50.1
Deprecate the legacy websockets implementation and default auto to websockets-sansio by @Kludex in #2985
asgi scope sub-dict per connection by @Kludex in #2976asgi scope dict per request by @Kludex in #2977auto to websockets-sansio by @Kludex in #2985Full Changelog: 0.49.0...0.50.0
asgi scope sub-dict per connection by @Kludex in https://github.com/Kludex/uvicorn/pull/2976asgi scope dict per request by @Kludex in https://github.com/Kludex/uvicorn/pull/2977auto to websockets-sansio by @Kludex in https://github.com/Kludex/uvicorn/pull/2985Full Changelog: https://github.com/Kludex/uvicorn/compare/0.49.0...0.50.0
If you use WebSockets, note that --ws auto now picks the websockets-sansio implementation. You shouldn't need it, but you can pin --ws websockets to get the deprecated legacy one back.
Exit with the dedicated code 3 on any startup failure: app loading, socket bind and lifespan startup errors previously exited with a mix of 0, 1 and 3 (#3001)
Stop the multiprocess supervisor when a worker exits with code 3 instead of restarting it forever (#3001)
Default --ws auto to websockets-sansio when websockets is installed (#2985)
Skip the eager app import in the parent process with --reload or --workers , fixing a memory regression introduced in 0.47.0 (#3012)
Build a fresh asgi scope dict per request (#2977)
Cache the asgi scope sub-dict per connection (#2976)
Avoid copying single-frame WebSocket payloads in websockets-sansio (#2983)
Memoize trusted host checks in ProxyHeadersMiddleware (#2970)
Replace click.style with an internal ANSI style helper (#2981)
Bump httptools minimum version to 0.8.0 by @Kludex in #2962
Full Changelog: 0.48.0...0.49.0
Full Changelog: https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0
Bump httptools minimum version to 0.8.0 (#2962)
Consume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) (#2971)
Default ssl_ciphers to None and use OpenSSL defaults by @Kludex in https://github.com/Kludex/uvicorn/pull/2940
ssl_ciphers to None and use OpenSSL defaults by @Kludex in https://github.com/Kludex/uvicorn/pull/2940ProxyHeadersMiddleware by @Kludex in https://github.com/Kludex/uvicorn/pull/2944Full Changelog: https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0
Eagerly import the ASGI app in the parent process by @Kludex in https://github.com/Kludex/uvicorn/pull/2919
ssl_context_factory for custom SSLContext configuration by @Kludex in https://github.com/Kludex/uvicorn/pull/2920fd=0 as a valid file descriptor with reload/workers by @eltoder in https://github.com/Kludex/uvicorn/pull/2927Full Changelog: https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0
Support ws_max_size in wsproto implementation by @Kludex in https://github.com/Kludex/uvicorn/pull/2915
ws_max_size in wsproto implementation by @Kludex in https://github.com/Kludex/uvicorn/pull/2915ws_ping_interval and ws_ping_timeout in wsproto implementation by @Kludex in https://github.com/Kludex/uvicorn/pull/2916bytearray for incoming WebSocket message buffer in websockets-sansio by @Kludex in https://github.com/Kludex/uvicorn/pull/2917Full Changelog: https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0
Support ws_max_size in wsproto implementation (#2915)
Support ws_ping_interval and ws_ping_timeout in wsproto implementation (#2916)
Preserve forwarded client ports in proxy headers middleware by @Kludex in https://github.com/Kludex/uvicorn/pull/2903
os.PathLike for log_config by @Kludex in https://github.com/Kludex/uvicorn/pull/2905log_level strings case-insensitively by @Kludex in https://github.com/Kludex/uvicorn/pull/2907ImportError when PyYAML is missing for YAML log config by @Kludex in https://github.com/Kludex/uvicorn/pull/2906--reset-contextvars flag to isolate ASGI request context by @Kludex in https://github.com/Kludex/uvicorn/pull/2912http.disconnect on server shutdown for streaming responses" (#2829) by @Kludex in https://github.com/Kludex/uvicorn/pull/2913Full Changelog: https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0
Add --reset-contextvars flag to isolate ASGI request context (#2912)
Accept os.PathLike for log_config (#2905)
Accept log_level strings case-insensitively (#2907)
Revert "Emit http.disconnect on server shutdown for streaming responses" (#2913)
Revert "Explicitly start ASGI run with empty context" (#2911)
Preserve forwarded client ports in proxy headers middleware (#2903)
Raise helpful ImportError when PyYAML is missing for YAML log config (#2906)
Implement websocket keepalive pings for websockets-sansio by @Kludex in https://github.com/Kludex/uvicorn/pull/2888
Full Changelog: https://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0
Emit http.disconnect ASGI receive() event on server shutting down for streaming responses
http.disconnect ASGI receive() event on server shutting down for streaming responses (#2829)context parameter for create_task on Python 3.11+ (#2859)Full Changelog: https://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0
You can quit Uvicorn now. We heard you, @pamelafox - all 47 of your Ctrl+C's (thanks for flagging it, and thanks to @tiangolo for the fix 🙏). See the tweet .
Emit http.disconnect ASGI receive() event on server shutting down for streaming responses (#2829)
Use native context parameter for create_task on Python 3.11+ (#2859)
Drop cast in ASGI types (#2875)
Use bytearray for request body accumulation to avoid O(n^2) allocation on fragmented bodies
bytearray for request body accumulation to avoid O(n^2) allocation on fragmented bodies (#2845)HEADER_RE regex (#2824)Full Changelog: https://github.com/Kludex/uvicorn/compare/0.41.0...0.42.0
Add --limit-max-requests-jitter to stagger worker restarts
--limit-max-requests-jitter to stagger worker restarts (#2707)scope["server"] (#2561)LifespanOn.error_occured to error_occurred (#2776)should_exit is set during startup (#2812)Full Changelog: https://github.com/Kludex/uvicorn/compare/0.40.0...0.41.0
Drop Python 3.9 by @Kludex in https://github.com/Kludex/uvicorn/pull/2772
Full Changelog: https://github.com/Kludex/uvicorn/compare/0.39.0...0.40.0
explicitly start ASGI run with empty context by @pmeier in https://github.com/Kludex/uvicorn/pull/2742
Full Changelog: https://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0
Send close frame on ASGI return for WebSockets (#2769)
Explicitly start ASGI run with empty context (#2742)
Support Python 3.14 by @Kludex in https://github.com/Kludex/uvicorn/pull/2723
Full Changelog: https://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0
Add --timeout-worker-healthcheck setting by @Kludex in https://github.com/Kludex/uvicorn/pull/2711
--timeout-worker-healthcheck setting by @Kludex in https://github.com/Kludex/uvicorn/pull/2711os.PathLike[str] type to ssl_ca_certs by @rnv812 in https://github.com/Kludex/uvicorn/pull/2676Full Changelog: https://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0
Add --timeout-worker-healthcheck option (#2711)
Add os.PathLike[str] type to ssl_ca_certs (#2676)
Raise an exception when calling removed Config.setup_event_loop() by @Kludex in https://github.com/Kludex/uvicorn/pull/2709
Config.setup_event_loop() by @Kludex in https://github.com/Kludex/uvicorn/pull/2709Full Changelog: https://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1
Support custom IOLOOPs by @gnir-work in https://github.com/Kludex/uvicorn/pull/2435
--http, --ws and --loop by @Kludex in https://github.com/Kludex/uvicorn/pull/2658Full Changelog: https://github.com/Kludex/uvicorn/compare/0.35.0...0.36.0
Support custom IOLOOPs (#2435)
Allow to provide importable string in --http , --ws and --loop (#2658)
Add WebSocketsSansIOProtocol by @Kludex in https://github.com/encode/uvicorn/pull/2540
WebSocketsSansIOProtocol by @Kludex in https://github.com/encode/uvicorn/pull/2540--proxy-headers by @zhangyoufu in https://github.com/encode/uvicorn/pull/2653Full Changelog: https://github.com/encode/uvicorn/compare/0.34.3...0.35.0
Don't include cwd() when non-empty --reload-dirs is passed by @stinovlas in https://github.com/encode/uvicorn/pull/2598
cwd() when non-empty --reload-dirs is passed by @stinovlas in https://github.com/encode/uvicorn/pull/2598get_client_addr formatting to WebSocket logging by @Harry-Lees in https://github.com/encode/uvicorn/pull/2636Full Changelog: https://github.com/encode/uvicorn/compare/0.34.2...0.34.3
Don't include cwd() when non-empty --reload-dirs is passed (#2598)
Apply get_client_addr formatting to WebSocket logging (#2636)
Flush the stdout buffer on Windows to trigger reload by @jamesh1999 in https://github.com/encode/uvicorn/pull/2604
Full Changelog: https://github.com/encode/uvicorn/compare/0.34.1...0.34.2
Deprecate ServerState in the main module by @Kludex in https://github.com/encode/uvicorn/pull/2581
ServerState in the main module by @Kludex in https://github.com/encode/uvicorn/pull/2581Full Changelog: https://github.com/encode/uvicorn/compare/0.34.0...0.34.1
Add content-length to 500 response in wsproto by @Kludex in https://github.com/encode/uvicorn/pull/2542
content-length to 500 response in wsproto by @Kludex in https://github.com/encode/uvicorn/pull/2542Full Changelog: https://github.com/encode/uvicorn/compare/0.33.0...0.34.0
Remove WatchGod by @Kludex in https://github.com/encode/uvicorn/pull/2536
Full Changelog: https://github.com/encode/uvicorn/compare/0.32.1...0.33.0
Enable httptools lenient data by @vvanglro in https://github.com/encode/uvicorn/pull/2488
Full Changelog: https://github.com/encode/uvicorn/compare/0.32.0...0.32.1
Drop ASGI spec version to 2.3 on HTTP scope (#2513)
Enable httptools lenient data on httptools >= 0.6.3 (#2488)
Warn when max_request_limit is exceeded
max_request_limit is exceeded (#2430)Full Changelog: https://github.com/encode/uvicorn/compare/0.31.1...0.32.0
Support WebSockets 0.13.1 #2471
Improve ProxyHeadersMiddleware (#2468) and (#2231):
Improve ProxyHeadersMiddleware (#2468) and (#2231):
Full Changelog: https://github.com/encode/uvicorn/compare/0.30.6...0.31.0
Don't warn when upgrade is not WebSocket and depedencies are installed
Full Changelog: https://github.com/encode/uvicorn/compare/0.30.5...0.30.6
Don't close connection before receiving body on H11
Full Changelog: https://github.com/encode/uvicorn/compare/0.30.4...0.30.5
Close connection when h11 sets client state to MUST_CLOSE #2375
h11 sets client state to MUST_CLOSE #2375Full Changelog: https://github.com/encode/uvicorn/compare/0.30.3...0.30.4
Suppress KeyboardInterrupt from CLI and programmatic usage
KeyboardInterrupt from CLI and programmatic usage (#2384)ClientDisconnect inherits from OSError instead of IOError (#2393)Full Changelog: https://github.com/encode/uvicorn/compare/0.30.2...0.30.3
Add reason support to `websocket.disconnect` event
reason support to websocket.disconnect event (#2324)Full Changelog: https://github.com/encode/uvicorn/compare/0.30.1...0.30.2
Allow horizontal tabs \t in response header values
\t in response header values (#2345)Full Changelog: https://github.com/encode/uvicorn/compare/0.30.0...0.30.1
Deprecate the uvicorn.workers module
ConfigParser or a io.IO[Any] on log_config (#1976)content-length header on 5xx (#2304)uvicorn.workers module (#2302)Full Changelog: https://github.com/encode/uvicorn/compare/0.29.0...0.30.0
Cooperative signal handling by @maxfischer2781 in https://github.com/encode/uvicorn/pull/1600
Full Changelog: https://github.com/encode/uvicorn/compare/0.28.1...0.29.0
Revert raise ClientDisconnected on HTTP
ClientDisconnected on HTTP (#2276)Full Changelog: https://github.com/encode/uvicorn/compare/0.28.0...0.28.1
Raise ClientDisconnected on send() when client disconnected (#2220) 12/02/24
ClientDisconnected on send() when client disconnected (#2220) 12/02/24AttributeError on sys.stdin.fileno() for Windows IIS10 (#1947) 29/02/24X-Forwarded-Proto for WebSockets scheme when the proxy provides it (#2258) 01/03/24Full Changelog: https://github.com/encode/uvicorn/compare/0.27.1...0.28.0
Except AttributeError on sys.stdin.fileno() for Windows IIS10 (#1947)
Use X-Forwarded-Proto for WebSockets scheme when the proxy provides it (#2258)
Fix spurious h11.LocalProtocolError errors when processing pipelined requests (#2243) 10/02/24
h11.LocalProtocolError errors when processing pipelined requests (#2243) 10/02/24Full Changelog: https://github.com/encode/uvicorn/compare/0.27.0.post1...0.27.1
Fix nav overrides for newer version of Mkdocs Material (#2233) 26/01/24
Full Changelog: https://github.com/encode/uvicorn/compare/0.27.0...0.27.0.post1
Raise ClientDisconnect(IOError) on send() when client disconnected (#2218) 19/01/24
ClientDisconnect(IOError) on send() when client disconnected (#2218) 19/01/24Full Changelog: https://github.com/encode/uvicorn/compare/0.26.0...0.27.0
Raise ClientDisconnect(IOError) on send() when client disconnected (#2218)
Bump ASGI WebSocket spec version to 2.4 (#2221)
Update --root-path to include the root path prefix in the full ASGI path as per the ASGI spec (#2213) 16/01/24
--root-path to include the root path prefix in the full ASGI path as per the ASGI spec (#2213) 16/01/24__future__.annotations on some internal modules (#2199) 16/01/24Full Changelog: https://github.com/encode/uvicorn/compare/0.25.0...0.26.0
Support the WebSocket Denial Response ASGI extension (#1916) 17/12/23
--reload-include (#2176) 08/12/23uvicorn.run() (#2158) 22/11/23Full Changelog: https://github.com/encode/uvicorn/compare/0.24.0...0.25.0
Allow explicit hidden file paths on --reload-include (#2176)
Properly annotate uvicorn.run() (#2158)
Revert mkdocs-material from 9.1.21 to 9.2.6 (#2148) 05/11/23
Support Python 3.12 (#2145) 04/11/23
app via environment variable UVICORN_APP (#2106)Full Changelog: https://github.com/encode/uvicorn/compare/0.23.2...0.24.0
Support Python 3.12 (#2145)
Allow setting app via environment variable UVICORN_APP (#2106)
Maintain the same behavior of websockets from 10.4 on 11.0 (#2061) 30/07/23
websockets from 10.4 on 11.0 (#2061) 30/07/23Full Changelog: https://github.com/encode/uvicorn/compare/0.23.1...0.23.2
Add typing_extensions for Python 3.10 and lower (#2053) 18/07/23
typing_extensions for Python 3.10 and lower (#2053) 18/07/23Full Changelog: https://github.com/encode/uvicorn/compare/0.23.0...0.23.1
Add --ws-max-queue parameter WebSockets (#2033) 10/07/23
--ws-max-queue parameter WebSockets (#2033) 10/07/23asgiref as typing dependency (#1999) 08/06/23scope["scheme"] to ws or wss instead of http or https on ProxyHeadersMiddleware for WebSockets (#2043) 12/07/23ImportError on circular import (#2040) 09/07/23logger.getEffectiveLevel() instead of logger.level to check if log level is TRACE (#1966) 01/06/23Full Changelog: https://github.com/encode/uvicorn/compare/0.22.0...0.23.0
Drop support for Python 3.7 (#1996)
Remove asgiref as typing dependency (#1999)
Raise ImportError on circular import (#2040)
Use logger.getEffectiveLevel() instead of logger.level to check if log level is TRACE (#1966)
Add --timeout-graceful-shutdown parameter
--timeout-graceful-shutdown parameter (#1950)SIGBREAK on Windows (#1909)--reload-delay is effectively used on the watchfiles reloader (#1930)Full Changelog: https://github.com/encode/uvicorn/compare/0.21.1...0.22.0
Reset lifespan state on each request (#1903) 16/03/23
Introduce lifespan state (#1818) 05/03/23
h11 and pyyaml when not needed to improve import time (#1846) 07/02/23WSGIMiddleware implementation by a2wsgi (#1825) 16/01/23--app-dir from "." (dot) to "" (empty string) (#1835) 06/01/23surrogateescape to encode headers on websockets implementation (#1005) 12/12/22Full Changelog: https://github.com/encode/uvicorn/compare/0.20.0...0.21.0
Introduce lifespan state (#1818)
Allow headers to be sent as iterables on H11 implementation (#1782)
Improve discoverability when --port=0 is used (#1890)
Avoid importing h11 and pyyaml when not needed to improve import time (#1846)
Replace current native WSGIMiddleware implementation by a2wsgi (#1825)
Change default --app-dir from "." (dot) to "" (empty string) (#1835)
Send code 1012 on shutdown for WebSockets (#1816)
Use surrogateescape to encode headers on websockets implementation (#1005)
Fix warning message on reload failure (#1784)
Check if handshake is completed before sending frame on wsproto shutdown
wsproto shutdown (#1737)reload and workers flag are used together (#1731) 31/10/22WebSocket error codes on close (#1753) 20/11/22wsproto (#996) 29/10/22SIGQUIT handler to UvicornWorker (#1710) 01/11/22CONFIG_KWARGS in UvicornWorker class (#1746) 31/10/22RemoteProtocolError.event_hint on wsproto (#1486) 31/10/22handle_no_connect on wsproto implementation (#1759) 17/11/22Check if handshake is completed before sending frame on wsproto shutdown (#1737)
Add default headers to WebSockets implementations (#1606 & #1747)
Warn user when reload and workers flag are used together (#1731)
Use correct WebSocket error codes on close (#1753)
Send disconnect event on connection lost for wsproto (#996)
Add SIGQUIT handler to UvicornWorker (#1710)
Fix crash on exist with "--uds" if socket doesn't exist (#1725)
Annotate CONFIG_KWARGS in UvicornWorker class (#1746)
Remove conditional on RemoteProtocolError.event_hint on wsproto (#1486)
Remove unused handle_no_connect on wsproto implementation (#1759)
Your coding agent can read these notes before it upgrades. Set up the MCP server →