RATATOSKRATATOSK
Sign in

Jaeger

v2.23.0Observability
Nov 5, 2026

CHECK 5OTHER 50

A feature-rich release introduces breaking storage and AI changes alongside new query capabilities and many correctness fixes. A dependency update also requires review of existing configurations.

Check if affected (5)

  • breakingThe clickhouse feature gates, removed

    Applies if you use clickhouse feature gates.

    Unused clickhouse feature gates are removed from storage.

    @albertteohjaeger#9988

  • breakingThe gemini reference sidecar, removed

    Applies if you run the gemini reference sidecar.

    The gemini reference sidecar is removed from the AI sidecar subsystem.

    @alishair7071jaeger#9841

  • breakingExplicit table engine requirement for clickhouse schema creation

    Applies if you use clickhouse when creating the schema.

    Creating a clickhouse schema now requires an explicit table engine.

    @ysh-botjaeger#9813

  • breakingLegacy acp tool routing, removed

    Applies if you use legacy acp tool routing.

    Legacy acp tool routing is removed from the AI subsystem.

    @alishair7071jaeger#9855

  • breakingThe span search _id tie-breaker, disabled by default

    Applies if you use span search.

    The span search _id tie-breaker is now turned off by default.

    @ysh-botjaeger#9783

All 50 other recorded changesfixes 32 · additions 10 · value changes 5 · constraints 3

fixes (32)

  • * Fix(storage): resolve auth extension references deterministically ([@jkowall](https://github.com/jkowall) in [#9772](https://github.com/jaegertracing/jaeger/pull/9772))
  • * Fix(mcp): start the investigation strategy with read_skill ([@lopster568](https://github.com/lopster568) in [#10038](https://github.com/jaegertracing/jaeger/pull/10038))
  • * Fix(otel-demo): add 30-day opensearch index retention ([@jkowall](https://github.com/jkowall) in [#9917](https://github.com/jaegertracing/jaeger/pull/9917))
  • * Fix(es): store non-finite doubles as otlp/json string tags ([@jkowall](https://github.com/jkowall) in [#9912](https://github.com/jaegertracing/jaeger/pull/9912))
  • * Fix(query): recover from panics in query grpc and mcp handlers ([@jkowall](https://github.com/jkowall) in [#9766](https://github.com/jaegertracing/jaeger/pull/9766))
  • * Fix(mcp): guard trace walks against duplicate span ids ([@jkowall](https://github.com/jkowall) in [#9763](https://github.com/jaegertracing/jaeger/pull/9763))
  • * Fix(query): check filter nesting depth before decoding api_v3 parameters ([@jkowall](https://github.com/jkowall) in [#10006](https://github.com/jaegertracing/jaeger/pull/10006))
  • * Fix(query): reject durations that overflow ([@sublimemonk](https://github.com/sublimemonk) in [#9877](https://github.com/jaegertracing/jaeger/pull/9877))
  • * Fix(query): render non-finite float attributes as strings ([@ayush00git](https://github.com/ayush00git) in [#9901](https://github.com/jaegertracing/jaeger/pull/9901))
  • * Fix(clickhouse): bind gettraces time bounds at nanosecond precision ([@NUAAwqy](https://github.com/NUAAwqy) in [#9894](https://github.com/jaegertracing/jaeger/pull/9894))
  • * Fix(clickhouse): bound distributed trace searches ([@zarna1parekh](https://github.com/zarna1parekh) in [#9882](https://github.com/jaegertracing/jaeger/pull/9882))
  • * Fix(jaegerai): start a new text message after each tool call ([@ysh-bot](https://github.com/ysh-bot) in [#9879](https://github.com/jaegertracing/jaeger/pull/9879))
  • * Fix(jaegerai): keep whitespace-only streaming chunks ([@jkowall](https://github.com/jkowall) in [#9878](https://github.com/jaegertracing/jaeger/pull/9878))
  • * Fix(query): reject non-positive lookback, step and rateper in metrics api ([@sublimemonk](https://github.com/sublimemonk) in [#9863](https://github.com/jaegertracing/jaeger/pull/9863))
  • * Fix(tenancy): reject empty tenant values on grpc ([@jkowall](https://github.com/jkowall) in [#9768](https://github.com/jaegertracing/jaeger/pull/9768))
  • * Fix(query): drop resource spans emptied by dedup ([@jayhemnani9910](https://github.com/jayhemnani9910) in [#9836](https://github.com/jaegertracing/jaeger/pull/9836))
  • * Fix(cassandra): stop duration search at depth ([@sublimemonk](https://github.com/sublimemonk) in [#9853](https://github.com/jaegertracing/jaeger/pull/9853))
  • * Fix(remotesampling): wait for serve goroutines in shutdown ([@stanleys12](https://github.com/stanleys12) in [#9824](https://github.com/jaegertracing/jaeger/pull/9824))
  • * Fix(mcptools): set error status on spans for failed tool calls ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9809](https://github.com/jaegertracing/jaeger/pull/9809))
  • * Fix(cache): check ttl in compareandswap ([@RudraDudhat2509](https://github.com/RudraDudhat2509) in [#9736](https://github.com/jaegertracing/jaeger/pull/9736))
  • * Fix(query): reject inverted/zero time range in apiv2 getdependencies ([@pranitaurlam](https://github.com/pranitaurlam) in [#9239](https://github.com/jaegertracing/jaeger/pull/9239))
  • * Fix(clickhouse): reject default_search_depth exceeding max_search_depth and negative dial_timeout ([@padmasri-web](https://github.com/padmasri-web) in [#9725](https://github.com/jaegertracing/jaeger/pull/9725))
  • * Fix(es): reject negative index retention ([@viiccwen](https://github.com/viiccwen) in [#9123](https://github.com/jaegertracing/jaeger/pull/9123))
  • * Fix(badger): remove stale operations entries on service expiry ([@bhavyamsharmaa](https://github.com/bhavyamsharmaa) in [#9021](https://github.com/jaegertracing/jaeger/pull/9021))
  • * Fix(storage): sanitize remote storage exports ([@viiccwen](https://github.com/viiccwen) in [#9062](https://github.com/jaegertracing/jaeger/pull/9062))
  • * Fix(examples): set max_span_age in opensearch demo ([@sahilnyk](https://github.com/sahilnyk) in [#9124](https://github.com/jaegertracing/jaeger/pull/9124))
  • * Fix(docker): run images with a non-root primary group ([@jkowall](https://github.com/jkowall) in [#9771](https://github.com/jaegertracing/jaeger/pull/9771))
  • * Fix(query): treat non-string library attributes as conflicts instead of panicking ([@jkowall](https://github.com/jkowall) in [#9765](https://github.com/jaegertracing/jaeger/pull/9765))
  • * Fix(spm): escape service names in promql matchers ([@jkowall](https://github.com/jkowall) in [#9769](https://github.com/jaegertracing/jaeger/pull/9769))
  • * Fix(es-index-cleaner): escape index names in delete requests ([@jkowall](https://github.com/jkowall) in [#9770](https://github.com/jaegertracing/jaeger/pull/9770))
  • * Fix hardcoded metricstore es extended lookback ([@HESleagacy](https://github.com/HESleagacy) in [#9102](https://github.com/jaegertracing/jaeger/pull/9102))
  • Fix(query): deduplicate shared span ids in linear time

additions (10)

  • * Feat(mcp): accept a sql statement in the search_traces tool ([@ysh-bot](https://github.com/ysh-bot) in [#9925](https://github.com/jaegertracing/jaeger/pull/9925))
  • * Feat(query): add a sql query surface that compiles to rfc 0005 filters ([@ysh-bot](https://github.com/ysh-bot) in [#9922](https://github.com/jaegertracing/jaeger/pull/9922))
  • * Feat(query): serve storage search capabilities over api_v3 http ([@ysh-bot](https://github.com/ysh-bot) in [#9804](https://github.com/jaegertracing/jaeger/pull/9804))
  • * Feat(query): serve storage search capabilities over api_v3 grpc ([@ysh-bot](https://github.com/ysh-bot) in [#9803](https://github.com/jaegertracing/jaeger/pull/9803))
  • * Feat(clickhouse): route structured query filters to sql where (rfc 0005 m3) ([@om7057](https://github.com/om7057) in [#9701](https://github.com/jaegertracing/jaeger/pull/9701))
  • * Feat(query): support prettyprint on the v3 http api ([@sksingh2005](https://github.com/sksingh2005) in [#9990](https://github.com/jaegertracing/jaeger/pull/9990))
  • * Feat(query): add ai.auth to gate the ai endpoints with an authenticator ([@ysh-bot](https://github.com/ysh-bot) in [#9908](https://github.com/jaegertracing/jaeger/pull/9908))
  • * Feat(mcp): add streamable_http transport options to ai.mcp ([@ysh-bot](https://github.com/ysh-bot) in [#9857](https://github.com/jaegertracing/jaeger/pull/9857))
  • * Feat(mcp): add ai.mcp.disable_localhost_protection for proxied deployments ([@ysh-bot](https://github.com/ysh-bot) in [#9849](https://github.com/jaegertracing/jaeger/pull/9849))
  • * Feat(es): record bulk request size metrics for the elasticsearch writer ([@ysh-bot](https://github.com/ysh-bot) in [#9787](https://github.com/jaegertracing/jaeger/pull/9787))

value changes (5)

  • * Build(idl): bump jaeger-idl to v0.14.0 ([@ysh-bot](https://github.com/ysh-bot) in [#9802](https://github.com/jaegertracing/jaeger/pull/9802))
  • * Feat(query): forward captured identity headers onto the acp agent handshake ([@ysh-bot](https://github.com/ysh-bot) in [#10007](https://github.com/jaegertracing/jaeger/pull/10007))
  • * Fix(jaegermcp): expose total_span_count in get_trace_topology ([@alliasgher](https://github.com/alliasgher) in [#8530](https://github.com/jaegertracing/jaeger/pull/8530))
  • * Fix(mcptools): always emit mcp.method.name attribute on mcp tracing spans ([@Aryanbhargava18](https://github.com/Aryanbhargava18) in [#9749](https://github.com/jaegertracing/jaeger/pull/9749))
  • * Fix(deps): update apache thrift to v0.25.0 ([@jkowall](https://github.com/jkowall) in [#9756](https://github.com/jaegertracing/jaeger/pull/9756))

constraints (3)

  • * Feat(storage): honor anchors and case folding in regex filter patterns ([@ysh-bot](https://github.com/ysh-bot) in [#9923](https://github.com/jaegertracing/jaeger/pull/9923))
  • * Feat(memory): evaluate phrase and fulltext operators in memory store ([@rishabhkumar92](https://github.com/rishabhkumar92) in [#9791](https://github.com/jaegertracing/jaeger/pull/9791))
  • * Fix(storage/es): accept non-string index settings in getjaegerindices ([@pujitha24](https://github.com/pujitha24) in [#9252](https://github.com/jaegertracing/jaeger/pull/9252))
Add Jaeger to your stack

A weekly email arrives when a release needs action. Like the breaking changes in this release.

Add to stack →