The Azure SDK team is pleased to announce our August 2026 client library releases.

4 packages released this month.

Beta Packages (2)

  • Cosmos DB

  • Cosmos DB Client Driver

Release highlights

Cosmos DB 0.37.0 Changelog

Bugs Fixed

  • http:// (non-HTTPS) account endpoints are now rejected unless the host is a known Cosmos DB emulator host, failing fast during client construction with an “invalid account endpoint” error instead of attempting an insecure connection to a production account. This validation also covers configured backup endpoints. (#4757)
  • Fixed hierarchical-partition-key (HPK) queries. A FeedScope::partition scope with only a prefix of the key hierarchy (e.g. ("USA", "CA") on a /country/state/city container) now filters to that prefix instead of returning every item in the physical partition (issue #4680), and cross-partition queries over an HPK container no longer fail with 400 Bad Request (issue #4681). (#4729)
  • Fixed the AZURE_COSMOS_PPCB_* environment variables (including AZURE_COSMOS_PPCB_ENABLED and the AZURE_COSMOS_PPCB_ENABLED_OVERRIDE kill switch) being ignored when a CosmosClient was built without calling CosmosClientBuilder::with_partition_failover_options. The per-partition circuit breaker (PPCB) stayed enabled even with AZURE_COSMOS_PPCB_ENABLED=false. The client’s driver now resolves these options from the environment when they are not supplied explicitly. (#4655)

Features Added

  • Added runtime diagnostics output configuration via CosmosRuntimeBuilder::with_diagnostics_options, including the env-backed AZURE_COSMOS_DIAGNOSTICS_DEFAULT_VERBOSITY option. The built-in default is now summary diagnostics JSON. (#4733)
  • Gateway 2.0 transport (a regional proxy forwarding RNTBD-over-HTTP/2) is selected automatically when the account advertises thin-client endpoints, the connectivity probe confirms them, and the runtime has not opted out. (#4319, #4803)
  • Added the re-exported ConnectionPoolOptions::gateway_v2_disabled and ConnectionPoolOptionsBuilder::with_gateway_v2_disabled, with AZURE_COSMOS_CONNECTION_POOL_GATEWAY_V2_DISABLED configuration and an environment-only _OVERRIDE incident switch. (#4763)
  • HTTP 449 (RetryWith) responses are now retried transparently in-region with exponential backoff, so callers no longer see spurious 449 errors from concurrent writes. (#4319)
  • ReadConsistencyStrategy is now honored across Gateway V1 and V2 reads. Adds the LatestCommitted variant (a quorum read independent of the account default); GlobalStrong is rejected with BadRequest unless the account default is Strong. Per-request strategy overrides the client default. (#4319)
  • Added preview distributed transaction SDK builders, patch operations, diagnostics, and response accessors behind the disabled-by-default preview_dtx feature. (#4702)
  • Added change feed pull support via ContainerClient::query_change_feed(), which takes a required ChangeFeedStartFrom start position (Beginning, Now, PointInTime) and returns a ChangeFeedPageIterator<T> that streams FeedPage<T> results. New feed types ChangeFeedPageIterator, FeedScope, and ContinuationToken, plus options types ChangeFeedOptions and ChangeFeedMode (currently LatestVersion); supports single-partition, per-partition-key, and full-container (cross-partition fan-out) reads with continuation-token resumption that persists the original start position so never-polled partitions don’t replay history on resume. (#4621)
  • Change feed items are now surfaced as an envelope. ContainerClient::query_change_feed::<YourDoc>() yields ChangeFeedItem<YourDoc>, binding the envelope into the return type so the post-change document is read via ChangeFeedItem::current() and cannot be silently deserialized away. The envelope also exposes the pre-change document (previous()) and per-change metadata() (populated by full-fidelity reads; absent for LatestVersion). A full-fidelity delete returns an empty current object, which maps to None so callers with strict document types still deserialize the delete; the deleted item’s identity is available via ChangeFeedMetadata::id() and ChangeFeedMetadata::partition_key(). ChangeFeedOperationType includes an Unknown catch-all so a future operation type cannot fail a page and stall the feed. A backend that does not envelope change feed items (such as the Cosmos emulator) returns the bare document, which is mapped onto current() so no data is lost. Added the models types ChangeFeedItem<T>, ChangeFeedMetadata, ChangeFeedOperationType, and LogicalSequenceNumber. (#4723)
  • Added TlsBackend (re-exported) and a tls_backend option on ConnectionPoolOptions (ConnectionPoolOptionsBuilder::with_tls_backend), defaulting to TlsBackend::Rustls, available under the rustls feature, to pin the TLS backend used by the transport. This is additive and changes no behavior for the default (rustls) build; it only has an effect in builds that compile in multiple reqwest TLS backends, where reqwest would otherwise default to native-tls and the driver now pins rustls instead. (#4649)

Cosmos DB 0.37.1 Changelog

Bugs Fixed

  • Fixed ContainerClient::read_feed_ranges failing on containers with large partition counts by fully draining routing metadata and retrying missing cache results with a forced refresh. (#4845)

Cosmos DB Client Driver 0.6.0 Changelog

Bugs Fixed

  • Fixed a version-less PartitionKeyDefinition deserializing to partition key version V2 instead of V1. The Cosmos service omits the version field on the wire only for legacy V1 (Hash) containers, so an absent version now correctly defaults to V1, matching the .NET/Java convention. This fixes Gateway 2.0 (thin-client) point-op routing for V1 containers, where the client-computed effective partition key previously used the wrong (V2) algorithm and stalled until timeout. The create path (PartitionKeyDefinition::new) is unchanged and still defaults to V2. (#4739)
  • http:// (non-HTTPS) account endpoints are now rejected unless the host is a known Cosmos DB emulator host (as determined by the existing emulator-host detection). The check runs in CosmosDriver::new (reached via CosmosDriverRuntime::create_driver), so an invalid endpoint fails fast with a CLIENT_INVALID_ACCOUNT_ENDPOINT_URL error before any network I/O. Both the primary endpoint and any backup endpoints are validated. (#4757)
  • Fixed DiagnosticsContext debug rendering to emit valid diagnostics JSON instead of Rust struct dumps that leaked internal timers, caches, and CPU monitor state. Debug rendering now uses the configured default diagnostics verbosity, which defaults to summary. (#4733)
  • Fixed a panic and incorrect results on cross-partition queries with a partition-key equality or IN predicate (e.g. WHERE c.id IN (@a, @b)). The gateway query plan returns a closed point range [X, X] per value; the planner now normalizes each point to the half-open effective-partition-key window [X, successor(X)) (right-padding to full partition-key width before incrementing, matching .NET) and routes it via partitionkeyrangeid + start/end-epk with x-ms-read-key-type: EffectivePartitionKeyRange, instead of collapsing min == max to an empty intersection. (#4638)
  • Fixed hierarchical-partition-key (HPK / MultiHash) queries emitting the wrong x-ms-read-key-type for effective-partition-key range-scoped requests. The driver sent the point value EffectivePartitionKey alongside x-ms-start-epk/x-ms-end-epk, which the gateway rejects with 400 "One of the input values is invalid"; it now sends EffectivePartitionKeyRange. This enables filtered partition-key prefix queries (issue #4680) and fixes cross-partition queries over HPK containers failing with 400 Bad Request (issue #4681). (#4729)
  • Fixed session-token parsing rejecting the -1 region-progress sentinel that multi-region accounts emit for regions with no local progress. Region LSNs in the version vector are now parsed as signed values, with -1 (and any negative value) modeled as “no progress” instead of failing the whole token as malformed. This applies to all Session-consistency traffic (not just distributed transactions) and prevents otherwise-valid multi-region session tokens from being discarded. (#4702)
  • Fixed AZURE_COSMOS_PPCB_* environment variables (including the AZURE_COSMOS_PPCB_ENABLED master switch and the AZURE_COSMOS_PPCB_ENABLED_OVERRIDE kill switch) being silently ignored when a caller built DriverOptions without calling DriverOptionsBuilder::with_partition_failover_options. The environment is read only by PartitionFailoverOptionsBuilder::build, but the omitted-options path used a bare PartitionFailoverOptions::default() (which hard-codes PPCB enabled and reads no environment), so PPCB stayed on even with AZURE_COSMOS_PPCB_ENABLED=false. DriverOptionsBuilder::build now resolves the partition-failover options from the environment when the caller does not supply them (falling back to defaults, fail-soft, if an environment value is out of bounds). An explicitly supplied PartitionFailoverOptions continues to take precedence. (#4655)

Features Added

  • Added runtime diagnostics output configuration via CosmosDriverRuntimeBuilder::with_diagnostics_options, including the env-backed AZURE_COSMOS_DIAGNOSTICS_DEFAULT_VERBOSITY option. The built-in default is now summary diagnostics JSON. (#4733)
  • Added Gateway 2.0 transport (a regional proxy forwarding RNTBD-over-HTTP/2). Gateway 2.0 is used automatically when the account advertises thin-client endpoints, the connectivity probe confirms them, and the runtime has not opted out. (#4319, #4803)
  • Added ConnectionPoolOptions::gateway_v2_disabled and ConnectionPoolOptionsBuilder::with_gateway_v2_disabled, with AZURE_COSMOS_CONNECTION_POOL_GATEWAY_V2_DISABLED configuration and an environment-only _OVERRIDE incident switch. (#4763)
  • Added a retry policy for HTTP 449 (RetryWith): the driver retries in-region with exponential backoff (bounded by a ~30s budget) instead of failing over. Adds CosmosStatus::is_retry_with() and FaultInjectionErrorType::RetryWith. (#4319)
  • Added per-partition hub region caching for read operations on PPAF-enabled single-master accounts. When the x-ms-cosmos-hub-region-processing-only latch is set on a retry and a partition key range ID has been resolved, the driver now consults the per-partition failover cache (PartitionEndpointState::failover_overrides — the same map already used by per-partition automatic failover for writes) and routes directly to the cached hub endpoint, skipping the 403/3 (WriteForbidden) discovery chain on subsequent operations for the same partition. (#4555)
  • Added preview distributed transaction driver models, request serialization, response parsing/reordering, strict session-token merge, DTX retry handling, diagnostics, and a baseline in-memory emulator /operations/dtc path behind the disabled-by-default preview_dtx feature. (#4702)
  • Added change feed support in the dataflow pipeline: a new UnorderedMerge node fans a change feed read out across physical partitions and round-robins their pages, and CosmosOperation::change_feed builds incremental-feed operations with the appropriate wire headers. A new public ChangeFeedStartFrom enum (Beginning, Now, PointInTime) records the feed’s original start position and is persisted in the continuation token so partitions never polled before a checkpoint re-apply it on resume instead of replaying history; set it via CosmosOperation::with_change_feed_start. (#4621)
  • Added TlsBackend (currently TlsBackend::Rustls, the default) and a tls_backend option on ConnectionPoolOptions (ConnectionPoolOptionsBuilder::with_tls_backend / ConnectionPoolOptions::tls_backend), available under the rustls feature. The driver asserts the selected backend on the reqwest transport, giving a supported way to pin the TLS backend without direct transport access. This is additive and changes no behavior for the default (rustls-only) build, where reqwest already negotiates rustls; it only has an effect in builds that compile in multiple reqwest TLS backends (e.g. rustls plus native_tls, absent reqwest’s http3 feature), where reqwest would otherwise default to native-tls and the driver now pins rustls instead. (#4649)

Cosmos DB Client Driver 0.6.1 Changelog

Bugs Fixed

  • Fixed partition-range discovery for containers whose routing metadata spans more than ten pages, added full-refresh recovery for invalid incremental maps, and prevented empty routing maps from remaining cached. (#4845)

Latest Releases

View all the latest versions of Rust crates here.

Installation Instructions

To install any of our crates, copy and paste the following commands into a terminal:

$> cargo add azure_data_cosmos@0.37.0
$> cargo add azure_data_cosmos@0.37.1
$> cargo add azure_data_cosmos_driver@0.6.0
$> cargo add azure_data_cosmos_driver@0.6.1

Feedback

If you have a bug or feature request for one of the libraries, please post an issue to GitHub.