Skip to content

envoy

v1.40.2
envoyproxy/envoy

Cloud-native high-performance edge/middle/service proxy

Version of envoyproxy/envoy you run

CompareView on GitHub

Supported versions

Source: endoflife.date
LineLatestReleasedSecurity fixes
1.401.40.2Oct 13, 2026Until Oct 13, 2027
1.391.39.6Jul 14, 2026Until Jul 14, 2027
1.381.38.9Apr 23, 2026Until Apr 23, 2027
1.371.37.11Jan 13, 2026Until Jan 13, 2027
1.361.36.13Oct 14, 2025Ended Oct 14, 2026
1.351.35.13Jul 23, 2025Ended Jul 23, 2026
1.341.34.14Apr 15, 2025Ended Apr 15, 2026
1.331.33.14Jan 14, 2025Ended Jan 14, 2026
1.321.32.13Oct 15, 2024Ended Oct 15, 2025
1.311.31.10Jul 19, 2024Ended Jul 19, 2025
1.301.30.11Apr 16, 2024Ended Apr 16, 2025
1.291.29.12Jan 16, 2024Ended Jan 16, 2025

Breaking changes

What to check before upgrading, taken from the notes of the last 30 releases.

  • v1.40.0Oct 13, 2026

    Breaking changes

    • build: Envoy has switched from WORKSPACE to bzlmod. The WORKSPACE file is removed; Envoy, the API and the docs are published as Bazel modules (envoy, envoy_api, envoy-docs). Downstreams must migrate to MODULE.bazel and must add Envoy's custom registry (https://raw.githubusercontent.com/envoyproxy/bazel-registry) alongside the BCR — many of Envoy's dependencies and patched modules are only published there.
    • build: the hermetic LLVM/Clang toolchain is bumped from 18 to 22. --config=clang and clang-local are removed — Clang/libc++ is now the default and needs no flag; GCC remains via --config=gcc. The --@envoy//bazel:libc++/libstdc++ flags and force_libcpp define are gone. Downstreams needing a host LLVM toolchain should follow bazel/tests/codeql.
    • build: the Wasm runtime is now selected with --@proxy-wasm-cpp-host//bazel:engine=; the old --define wasm=/--define engine= flags fail the build.
    • tls: AWS-LC is removed as a selectable SSL library (including --config=aws-lc-fips). ppc64le builds should use --config=openssl.
    • mcp_router: downstream request headers are no longer forwarded to backends by default — notably authorization. Use the new per-backend header_forwarding (forward_all: true restores the old behavior).
    • dynamic modules (Rust SDK): HttpFilter hooks now take &self rather than &mut self; per-stream mutable state must move behind interior mutability. This closes a use-after-free on synchronous filter-chain teardown.

    Deprecations

    • envoy.extensions.config.validators factories keyed by type URL; dynamic-module log and timing-info callbacks; legacy HTTP filter factory base classes; reverse-tunnel auto_close_connections; Wasm plugin-level capability restriction.

    Docker images:

    https://hub.docker.com/r/envoyproxy/envoy/tags?page=1&name=v1.40.0

    Docs:

    https://www.envoyproxy.io/docs/envoy/v1.40.0/

    Release notes:

    https://www.envoyproxy.io/docs/envoy/v1.40.0/version_history/v1.40/v1.40.0

    Full changelog:

    https://github.com/envoyproxy/envoy/compare/v1.39.0...v1.40.0

    Signed-off-by: Jonh Wendell

    Signed-off-by: Ryan Northey

  • v1.39.0Jul 14, 2026

    Breaking changes

    • build: Envoy now uses Bazel 8. Because Envoy still uses WORKSPACE mode, --enable_workspace and --noenable_bzlmod are required and have been added to .bazelrc; external-repository runfiles now appear directly under the runfiles root.
    • build: the Intel DLB connection balancer (envoy.network.connection_balance.dlb) is disabled for all builds due to a broken source archive.
    • TLS: enforce_rsa_key_usage is deprecated and ignored; Envoy now always enforces the certificate keyUsage extension.
    • TLS inspector: client TLS versions are validated and must be between TLS 1.0 and TLS 1.3 (revertible via envoy.reloadable_features.tls_inspector_enforce_client_tls_version).
    • OpenTelemetry tracing: the tracer now honors Envoy's request-entry sampling decision, including overall_sampling, even when propagated trace context or the configured sampler requests sampling. This may reduce exported spans.

    Security

    • HTTP/2 now counts uncompressed cookies toward header-size and header-count limits (CVE-2026-47774), strengthens PRIORITY/WINDOW_UPDATE flood protection, and adds configurable nghttp2 RST_STREAM rate limits.
    • HTTP/3 fixes cover QPACK blocked-decoding denial of service (GHSA-p7c7-7c47-pwch) and inconsistent headers-only content-length handling (CVE-2026-48743).
    • Security fixes were added for ext_authz (CVE-2026-47205), ext_proc (CVE-2026-47207), gRPC stats (CVE-2026-47204), internal redirects (CVE-2026-47221), and OAuth2 lifecycle handling (CVE-2026-48090).
    • OAuth2 adds AES-256-GCM cookie encryption to address CVE-2026-47775. Migration is opt-in: enable oauth2_use_gcm_encryption, monitor oauth_legacy_cbc_decrypt, then disable oauth2_legacy_cbc_decrypt_compat.
    • Additional fixes cover DNS query validation (CVE-2026-48497), JSON nesting limits (CVE-2026-48042), PROXY protocol TLV smuggling (CVE-2026-47692), formatter crashes (CVE-2026-47220), TCP StatsD overflow (CVE-2026-48706), TLS SAN NUL handling (CVE-2026-47778), and Zstd decompression memory exhaustion (CVE-2026-48044).
    • New upstream RBAC and dynamic-forward-proxy resolved-address filtering provide CIDR-based protection against SSRF after DNS resolution and host selection.

    Dynamic modules

    • New extension points: access-log/header formatters, downstream and upstream transport sockets, active health checkers, and stats sinks.
    • Cluster load balancers can read host stats, read and write dynamic metadata and filter state, and publish main-thread state to worker-local slots.
    • Modules can emit metrics from configuration and background contexts; loading and initialization failures now expose server-wide counters tagged by extension instance.
    • Added validation-mode detection, network/listener attribute access, batched header and metadata APIs, effective log-level access, and zero-copy borrowed buffers in the Rust SDK.
    • Fixed listener HTTP-callout crashes, watermark initialization, streaming-response re-entry, independent decode/encode continuation, CatchUnwind re-entry, Struct configuration handling, and HTTP/TCP bridge buffer overflow with more than 64 slices.

    MCP (Model Context Protocol) and AI protocols

    • Added a Wuffs-backed streaming JSON parser for MCP, A2A, OpenAI, Anthropic, and related protocols, with bounded field capture, incremental parsing, no DOM allocation, and duplicate-key detection.
    • MCP filtering now exposes processing status, supports configurable duplicate-key rejection, and improves oversized-body behavior for pass-through and rejection modes.
    • MCP router adds elicitation and server-to-client request routing, plus lazy per-backend initialization.
    • MCP JSON REST Bridge adds per-route tool configuration and locally generated tools/list responses.

Release history

All releases on GitHub
BadgeLatest version of envoyproxy/envoy[![version](/badge/envoyproxy/envoy)](/p/envoyproxy/envoy)

Summary of changes:

release: updated the distroless docker image base to pick up the patched

ca-certificates package (20250419+deb13u1), so it no longer trusts the roots of the

compromised eMudhra intermediate CAs. The distroless image released in 1.40.1 still

shipped the unpatched bundle.

Docker images:

https://hub.docker.com/r/envoyproxy/envoy/tags?page=1&name=v1.40.2

Docs:

https://www.envoyproxy.io/docs/envoy/v1.40.2/

Release notes:

https://www.envoyproxy.io/docs/envoy/v1.40.2/version_history/v1.40/v1.40.2

Full changelog:

https://github.com/envoyproxy/envoy/compare/v1.40.1...v1.40.2

Signed-off-by: Jonh Wendell

Signed-off-by: Ryan Northey

Full release notesCompare with previous