5.0.0 - 2026-11-02
- (acp) [breaking] type request handle IDs by protocol version (#467)
- (acp) [breaking] version-neutral raw JSON-RPC request IDs (#466)
- (acp) [breaking] version-neutral SDK Error with conversions to v1 and v2 schema errors (#465)
- [breaking] breaking cleanups for the next major release (#461)
- (acp) [breaking] rename proxy methods to proxy/initialize and proxy/successor (#460)
- (acp) [breaking] remove JSON-RPC batch support (#454)
- (http) only open session streams for sessions the connection knows (#483)
- (acp) [breaking] tighten the root connection and builder surface for multi-version use (#477)
- [breaking] narrow transport and MCP APIs and fix rmcp integration issues (#476)
- remove redundant license-file metadata (#448)
- (acp) [breaking] reach each protocol version's schema only through v1::schema / v2::schema (#481)
- prepare the 5.0 release (migration guide, stability policy, version pins) (#479)
- (acp) [breaking] v1 and v2 modules with versioned entry points (#469)
3.0.0 - 2026-10-06
- (config) [breaking] make public configuration APIs extensible (#403)
- (http) [breaking] honor custom configuration with safe WebSocket handshakes (#333)
- avoid sensitive transport logs and redact trace URL credentials (#401)
- (http) gracefully finish client transports after builder completion (#396)
- (acp) [breaking] preserve connection lifetimes and graceful drain (#385)
- (acp) [breaking] preserve protocol-neutral raw JSON-RPC errors (#384)
- prepare v3 package metadata and release guidance (#404)
- slim dependency features and CI validation (#399)
- WebSocket URLs passed to
HttpClient::with_clientorwith_endpoint_and_clientnow returnWebSocketRequiresBuilderbefore network I/O. Migrate tobuilder(...).configure_http(...).build()orbuilder_with_endpoint(...)so the transport can enforce connection policies. See the migration guide. - Unconfigured WebSockets now share reqwest's proxy discovery and TLS verification
defaults, replacing direct connections and bundled WebPKI roots. Environment
proxies, enabled system-proxy discovery, and platform certificate verification
can change routing and trust. Use
no_proxy()and explicittls_certs_onlyroots when those defaults are not appropriate.
- Retain
HttpClient::with_clientandwith_endpoint_and_clientas deprecated HTTP/SSE compatibility wrappers with unchanged path handling.from_http_client(exact_endpoint, client)preserves shared reqwest clients for HTTP/SSE; its endpoint is exact and does not append/acp.
- Document the caller constraint against setting reserved WebSocket handshake
headers through
reqwest::Proxy::headers. Plain-WS proxy headers can overwrite SDK request headers after assembly; opaque proxy configuration cannot be inspected or rejected at build time. Cover normal plain-WS proxy headers and fail-closed accept validation after a proxy key override. - Breaking: make
ServerOptionsandCorsOptionsnon-exhaustive. Replace server option literals (including struct update syntax) withServerOptions::default().with_path(...).with_cors(...).with_health_endpoint(...); existing fields remain public. Downstream CORS matches need a wildcard arm. Defaults and runtime policies are unchanged. See the config API migration guide. - Limit Axum to HTTP1/Tokio, WebSockets, and tracing/tower-log observability. Remove unused Axum macros and extractors; JSON extraction is enabled only for tests. Drop unused test-utility and tracing-subscriber dev dependencies and the unused production futures executor feature.
- Adapt
HttpClient'sConnectToconversion to the core SDK's breaking optionalConnectionDriverreturn type. Channels and HTTP framing remain unchanged; no new resource limits are introduced.
- Apply custom headers, TLS, proxies, DNS, and timeouts to WebSocket handshakes. Enforce HTTP/1.1 and disable redirects for WebSockets without changing HTTP/SSE policies. Validate the upgrade response before sending queued ACP data, and reject unsupported subprotocols and extensions.
- Replace HTTP POST, SSE, and WebSocket payload diagnostics with bounded metadata. Do not log peer-controlled IDs, close reasons, or transport error text (which may include credentials or message content).
- Cooperatively finish HTTP client connections created through the public builder: drain accepted ordered POSTs and WebSocket frames before physical cleanup, reject output from escaped transport senders, and report transport failures during shutdown.
- Preserve raw JSON-RPC error codes, omitted versus null data, and error
extension fields across HTTP/SSE and WebSocket transports, using the core
SDK's new
RawJsonRpcResponserepresentation. - Preserve HTTP channel pumps when an agent-factory endpoint has no owned driver; absence is not agent completion while its transport remains open.
- On active agent completion, reject further output from escaped sender clones and drain accepted frames before removing the connection and closing its streams, without waiting for those clones to be dropped.
- Keep router cancellation owned while natural cleanup awaits its drain. Explicit shutdown no longer detaches a taken router task or retains the connection through that orphaned task.
2.2.0 - 2026-09-18
- (deps) bump actions-rust-lang/setup-rust-toolchain from 1.17.0 to 2.0.0 (#356)
2.1.0 - 2026-09-04
- (unstable-v2) Add runnable v2 quickstart examples (#330)
- (http) Preserve outbound messages for slow streams (#292)
2.0.0 - 2026-07-23
- Upgrade to
agent-client-protocol2.x. Transport implementations and the core handlers/types they connect must be migrated together.
See the core 2.0 migration guide for the shared transport changes.
- Preserve incoming JSON-RPC batch frames and grouped responses across HTTP and WebSocket
transports, including session-aware HTTP routing. HTTP clients validate batch messages, track
session and request bookkeeping for valid entries, and open streams returned by grouped
session/newandsession/forkresponses. The HTTP server accepts a mixed initial batch wheninitializeis its first call-shaped entry. (#275, #280, #286) - Establish connection and session SSE streams before posting dependent messages while continuing to deliver callbacks and complete earlier POSTs during setup. Pending setup is cancelled cleanly when the outgoing ACP channel closes. Call-bearing batches remain in peer order, while response-only frames can bypass a pending call to complete an SSE callback. (#280, #286)
- Drain final routed messages to established HTTP SSE and WebSocket streams before closing them when the connected agent exits. (#286)
1.3.0 - 2026-07-20
- (acp) Handle incoming EOF correctly (#261)
1.1.0 - 2026-07-06
- (acp) Make request cancellation stable (#242)
1.0.0 - 2026-06-24
- (deps) bump tower-http from 0.6.11 to 0.7.0 (#220)
0.1.1 - 2026-06-22
- updated the following local packages: agent-client-protocol