Langfuse published v4.25.0 on 31 August at 10:42:43 UTC. It introduces a retention cap on how far back a query may reach: 30 days on the Cloud Hobby tier and 90 days on Core. The cap is applied across roughly a dozen REST endpoints and six MCP tools. The pull request is classified as a bug fix, non-breaking.

Why that classification is wrong on its face

An API that returned 180 days of traces yesterday and returns 30 today has changed its contract. Nothing about the request is invalid; the response is simply truncated. Any dashboard, scheduled report or evaluation job that computes a quarter-over-quarter number keeps running, keeps returning 200, and starts producing a different answer. A change that alters results without altering status codes is the most expensive kind to classify as non-breaking, because nothing downstream can detect it.

The signal that was computed and discarded

The implementation knows when it has truncated a query — it computes a flag indicating the range was clamped. That flag is not surfaced. It does not become a response header, it does not become a field in the payload, and it does not become a warning. The server therefore has the exact information a client needs to know its data is incomplete, and drops it before replying. Adding one header would have converted a silent truncation into a detectable one, at approximately no cost.

What the common framing gets wrong

Retention caps on free tiers are ordinary and defensible; a hosted service is entitled to bound what it stores and serves. The story is not that Langfuse introduced a limit. It is how the limit is delivered: as an unannounced silent clamp, labelled non-breaking, on endpoints whose consumers are automated. Read as "free tier gets 30-day retention," it is a pricing footnote. Read as "a dozen endpoints quietly began returning less data," it is an observability failure in an observability product.

What to check

Any Langfuse-backed metric spanning more than 30 days on Hobby or 90 on Core should be re-derived after upgrading. It will not error. It will just be smaller, and the difference will look like a drop in traffic rather than a drop in visibility.