# Jaeger v2.20.0 — Release v2.20.0 - Product: Jaeger (https://whatsnew.fyi/product/jaeger) - Vendor: CNCF - Date: 2026-07-20 - Version: v2.20.0 - Original notes: https://github.com/jaegertracing/jaeger/releases/tag/v2.20.0 - Permalink: https://whatsnew.fyi/product/jaeger/releases/v2.20.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **removed** — Remove support for Elasticsearch v6 - **changed** — Promote es.* rotation and index-cleaner feature gates to beta - **changed** — Merge jaegermcp extension into jaegerquery extension - **changed** — Add configurable max_trace_duration and improve time-range design for Elasticsearch - **added** — Add --backend flag to esmapping-generator for OpenSearch selection - **added** — Add native trace summaries (summaryreader) for Elasticsearch - **added** — Add synchronous bulk write primitive to the Elasticsearch client - **added** — Gate parentspanid reference-compat write behind a feature gate - **added** — Add genai span attributes and gateway↔sidecar trace propagation - **changed** — Remove expired stable feature gates - **changed** — Migrate template creation to esclient and retire legacy mapping rendering - **fixed** — Reject mutually-exclusive Elasticsearch auth methods in validate() - **changed** — Make "spm not configured" error message more explicit - **changed** — Migrate span writes onto an owned bounded bulk indexer - **fixed** — Synchronize fallback token in tokenproviderwithtime closure - **changed** — Migrate service/operation reads onto owned searcher and query ast - **added** — Add bearer-token and api-key CLI flags to Elasticsearch admin tools - **changed** — Route admin plane through the shared auth stack - **fixed** — Validate decoded trace/span id lengths to prevent panic on corrupted rows in ClickHouse - **fixed** — Apply custom_headers to all Elasticsearch clients and honor host override ###### Backend Changes ###### ⛔ Breaking Changes * Feat(es): promote es.* rotation and index-cleaner feature gates to beta ([@ysh-bot](https://github.com/ysh-bot) in [#9018](https://github.com/jaegertracing/jaeger/pull/9018)) * Feat(es): remove support for elasticsearch v6 ([@yurishkuro](https://github.com/yurishkuro) in [#8948](https://github.com/jaegertracing/jaeger/pull/8948)) * Feat(mcp): merge jaegermcp extension into jaegerquery extension ([@Nabil-Salah](https://github.com/Nabil-Salah) in [#8894](https://github.com/jaegertracing/jaeger/pull/8894)) * Feat(es): add configurable max_trace_duration and improve time-range design ([@yurishkuro](https://github.com/yurishkuro) in [#8840](https://github.com/jaegertracing/jaeger/pull/8840)) ###### ✨ New Features * Feat(es): add --backend flag to esmapping-generator for opensearch selection ([@ysh-bot](https://github.com/ysh-bot) in [#8985](https://github.com/jaegertracing/jaeger/pull/8985)) * Feat(es): native trace summaries (summaryreader) ([@Me-Priyank](https://github.com/Me-Priyank) in [#8812](https://github.com/jaegertracing/jaeger/pull/8812)) ###### 🐞 Bug fixes, Minor Improvements * Feat(es): add synchronous bulk write primitive to the elasticsearch client ([@ysh-bot](https://github.com/ysh-bot) in [#8992](https://github.com/jaegertracing/jaeger/pull/8992)) * Feat(es): gate parentspanid reference-compat write behind a feature gate ([@ysh-bot](https://github.com/ysh-bot) in [#9015](https://github.com/jaegertracing/jaeger/pull/9015)) * Fix(ci): resolve published snapshot shas for oke demo deploy ([@FlamingSaint](https://github.com/FlamingSaint) in [#8999](https://github.com/jaegertracing/jaeger/pull/8999)) * feat(jaegerai): add genai span attributes and gateway↔sidecar trace propagation ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#8942](https://github.com/jaegertracing/jaeger/pull/8942)) * Chore(storage): remove expired stable feature gates ([@Anujkumar9081](https://github.com/Anujkumar9081) in [#8970](https://github.com/jaegertracing/jaeger/pull/8970)) * Chore(es): scrub lingering olivere references from code comments ([@ysh-bot](https://github.com/ysh-bot) in [#8983](https://github.com/jaegertracing/jaeger/pull/8983)) * Feat(es): migrate template creation to esclient and retire legacy mapping rendering ([@Me-Priyank](https://github.com/Me-Priyank) in [#8963](https://github.com/jaegertracing/jaeger/pull/8963)) * Fix(storage): reject mutually-exclusive es auth methods in validate() ([@Anujkumar9081](https://github.com/Anujkumar9081) in [#8946](https://github.com/jaegertracing/jaeger/pull/8946)) * Make "spm not configured" error message more explicit ([@Saithej2k](https://github.com/Saithej2k) in [#8878](https://github.com/jaegertracing/jaeger/pull/8878)) * Feat(es): migrate span writes onto an owned bounded bulk indexer ([@yurishkuro](https://github.com/yurishkuro) in [#8944](https://github.com/jaegertracing/jaeger/pull/8944)) * Fix(auth): synchronize fallback token in tokenproviderwithtime closure ([@yurishkuro](https://github.com/yurishkuro) in [#8952](https://github.com/jaegertracing/jaeger/pull/8952)) * Feat(es): migrate service/operation reads onto owned searcher and query ast ([@yurishkuro](https://github.com/yurishkuro) in [#8943](https://github.com/jaegertracing/jaeger/pull/8943)) * [es] add bearer-token and api-key cli flags to es admin tools (rfc 0006 m3.5c) ([@yurishkuro](https://github.com/yurishkuro) in [#8939](https://github.com/jaegertracing/jaeger/pull/8939)) * [es] route admin plane through the shared auth stack (rfc 0006 m3.5b) ([@yurishkuro](https://github.com/yurishkuro) in [#8937](https://github.com/jaegertracing/jaeger/pull/8937)) * Fix(clickhouse): validate decoded trace/span id lengths to prevent panic on corrupted rows ([@iammdzaidalam](https://github.com/iammdzaidalam) in [#8935](https://github.com/jaegertracing/jaeger/pull/8935)) * Fix(es): apply custom_headers to all elasticsearch clients and honor ho _[Truncated at 4000 characters — full notes: https://github.com/jaegertracing/jaeger/releases/tag/v2.20.0]_