Audit entitlement enforcement + Agent config removal + Dataset ID
Release history
langfuse releases
πͺ’ Open source LLM engineering platform: LLM Observability, metrics, evals, prompt management, playground, datasets. Integrates with OpenTelemetry, Langchain, OpenAI SDK, LiteLLM, and more. YC W23
All releases
44 shown
Flag, AI telemetry, claudeβopusβ4β8, UI notifications
Auth keys, Dashboards, MCP routes, FTS, SES, UI notifications
- Hardened outbound URL validation against SSRF bypasses and rejected DNSβfailing hostnames
- Show experiment metadata in overview UI
- Add secondary OpenTelemetry ingestion queue to worker
- Self-service SSO configuration with DNSβverified domains
Full changelog
What's Changed
Features
- feat(experiments): show metadata in overview by @wochinge in https://github.com/langfuse/langfuse/pull/13456
- feat(worker): add secondary otel ingestion queue by @Steffen911 in https://github.com/langfuse/langfuse/pull/13490
- feat(sso): self-service SSO config with DNS-verified domains by @marksalpeter in https://github.com/langfuse/langfuse/pull/13507
Fixes / Improvements
- fix(evals): do not drop langfuseObject on config on template upgrades by @hassiebp in https://github.com/langfuse/langfuse/pull/13429
- fix(evals): validate evaluator mapping target server-side by @hassiebp in https://github.com/langfuse/langfuse/pull/13430
- fix(batch-actions): compute count subject to searchQuery and searchType by @marliessophie in https://github.com/langfuse/langfuse/pull/13441
- fix(web): Improve toast title for
ClickHouseResourceErrorerrors by @bezbac in https://github.com/langfuse/langfuse/pull/13373 - fix(organizations): add margin to separator when no project is selected by @bezbac in https://github.com/langfuse/langfuse/pull/13445
- fix(widgets): render latency metrics in scaled units in custom dashboard widgets by @marksalpeter in https://github.com/langfuse/langfuse/pull/13242
- fix(web): include today in Prompts table observation count window by @jannikmaierhoefer in https://github.com/langfuse/langfuse/pull/13415
- fix(worker): keep spend alert billing skips healthy by @maxdeichmann in https://github.com/langfuse/langfuse/pull/13467
- fix(docker): remove corepack cache from runtime-base stage by @maxdeichmann in https://github.com/langfuse/langfuse/pull/13470
- fix(evals): add evaluator filter validation and handling by @marliessophie in https://github.com/langfuse/langfuse/pull/13474
- fix(web): Prisma also returns "Unique constraint failed", so check lowercase string by @deejay1 in https://github.com/langfuse/langfuse/pull/13477
- fix(events): stringify batchIO metadata for tRPC by @maxdeichmann in https://github.com/langfuse/langfuse/pull/13457
- fix(trace-ui): prevent image flicker on validateImgUrl false by @seokjin0414 in https://github.com/langfuse/langfuse/pull/13440
- fix(shared): harden outbound URL validation against SSRF bypasses by @wochinge in https://github.com/langfuse/langfuse/pull/13485
- fix(web): Saved views UX improvements by @bezbac in https://github.com/langfuse/langfuse/pull/13454
- fix(scim): write audit log on user creation via SCIM POST by @Steffen911 in https://github.com/langfuse/langfuse/pull/13496
- fix(public-api): rate-limit project apiKeys admin and prompt POST by @Steffen911 in https://github.com/langfuse/langfuse/pull/13498
- fix(traces): Create synthetic traces from events consistently by @bezbac in https://github.com/langfuse/langfuse/pull/13450
- fix(worker): preserve encrypted webhook headers on disable by @wochinge in https://github.com/langfuse/langfuse/pull/13503
- fix(web): validate image URL redirects by @wochinge in https://github.com/langfuse/langfuse/pull/13501
- fix(projects): persist parsed metadata on project create/update by @Steffen911 in https://github.com/langfuse/langfuse/pull/13497
- fix(web): remove Request Chart button from home screen by @marliessophie in https://github.com/langfuse/langfuse/pull/13509
- fix(shared): reject DNS-failing hostnames in outbound URL validation by @wochinge in https://github.com/langfuse/langfuse/pull/13512
Chores
- chore: upgrade bullmq to 5.76.3 by @maxdeichmann in https://github.com/langfuse/langfuse/pull/13442
- chore(deps): upgrade uuid v9 β v14 by @maxdeichmann in https://github.com/langfuse/langfuse/pull/13443
- chore: Increase admin access webhook dedupe window to 24 hours by @maxdeichmann in https://github.com/langfuse/langfuse/pull/13414
- refactor(model-match): remove redis parse span by @maxdeichmann in https://github.com/langfuse/langfuse/pull/13182
- chore(web): Remove unused unified & remark dependencies by @bezbac in https://github.com/langfuse/langfuse/pull/13409
- chore(web): Remove unused
graphqldependency by @bezbac in https://github.com/langfuse/langfuse/pull/13410 - chore(deps): remove redundant @types/uuid devDependency by @maxdeichmann in https://github.com/langfuse/langfuse/pull/13448
- chore: add migration hints for legacy public ClickHouse APIs by @maxdeichmann in https://github.com/langfuse/langfuse/pull/13475
- refactor(web): Create new design system dir & extract
Spinnerby @bezbac in https://github.com/langfuse/langfuse/pull/13428 - chore(deps): web - build migrate binary with Go 1.26 by @vkael in https://github.com/langfuse/langfuse/pull/13486
- chore(deps): bump posthog 5.32 / 1.372 by @nimarb in https://github.com/langfuse/langfuse/pull/13487
- chore: Create eslint plugin package by @bezbac in https://github.com/langfuse/langfuse/pull/13444
- chore(web): Setup in-source testing with Vitest by @bezbac in https://github.com/langfuse/langfuse/pull/13484
- chore(deps): bump ip-addresses to 10.2.0 by @nimarb in https://github.com/langfuse/langfuse/pull/13505
- chore(deps): bump nextjs to 16.2.6 by @nimarb in https://github.com/langfuse/langfuse/pull/13516
- ci: harden prettier check file arguments by @wochinge in https://github.com/langfuse/langfuse/pull/13513
New Contributors
- @vkael made their first contribution in https://github.com/langfuse/langfuse/pull/13486
- @seokjin0414 made their first contribution in https://github.com/langfuse/langfuse/pull/13440
Full Changelog: https://github.com/langfuse/langfuse/compare/v3.172.1...v3.173.0
Minor fixes and improvements.
Full changelog
What's Changed
Fixes
- fix(traces): refresh scores in trace detail by @wochinge in https://github.com/langfuse/langfuse/pull/13427
Chores
- chore(eslint): Disallow use of
overflow-scrollclasses by @bezbac in https://github.com/langfuse/langfuse/pull/13403 - chore(ci): disable test sharding + speed up test suite by @wochinge in https://github.com/langfuse/langfuse/pull/13383
- test: deflake DNS-dependent CI tests by @wochinge in https://github.com/langfuse/langfuse/pull/13412
Full Changelog: https://github.com/langfuse/langfuse/compare/v3.172.0...v3.172.1
- Add none filter mode for tags in sidebar
Full changelog
What's Changed
Features
- feat(traces): Add none filter mode for tags in the sidebar by @bezbac in https://github.com/langfuse/langfuse/pull/13339
Fixes / Improvements
- fix(server): ingest flattened experiment metadata by @hassiebp in https://github.com/langfuse/langfuse/pull/13368
- perf(clickhouse): emit has(metadata_names) conjunct for events filters by @sumerman in https://github.com/langfuse/langfuse/pull/13369
- fix(internal-tracing): remove output parser spans by @hassiebp in https://github.com/langfuse/langfuse/pull/13371
- docs(agents): improve
Agents.mdby @wochinge in https://github.com/langfuse/langfuse/pull/13372 - test: re-enable Vitest parallelism by @wochinge in https://github.com/langfuse/langfuse/pull/13366
- fix(traces): Limit number of categorical score names and values by @bezbac in https://github.com/langfuse/langfuse/pull/13308
- fix(web): Pre-fill email when switching regions by @bezbac in https://github.com/langfuse/langfuse/pull/13370
- fix(events): use release field for trace release in events table adapter by @AlissonRS in https://github.com/langfuse/langfuse/pull/13274
- fix(dashboards): Resolve filter options consistently by @bezbac in https://github.com/langfuse/langfuse/pull/13335
- fix(clickhouse): use alter_sync/mutations_sync on multi-ALTER clustered migrations by @Steffen911 in https://github.com/langfuse/langfuse/pull/13398
- fix(traces): Show correct title prefix in trace detail peek view by @bezbac in https://github.com/langfuse/langfuse/pull/13283
Chores
- chore(agent-dx): add debug-issue-with-datadog skill by @Steffen911 in https://github.com/langfuse/langfuse/pull/13375
- chore(eslint): enable no-deprecated by @wochinge in https://github.com/langfuse/langfuse/pull/13374
- chore(env): add LANGFUSE_ENABLE_EVENTS_TABLE_UI flag for UI events table support by @marliessophie in https://github.com/langfuse/langfuse/pull/13346
- chore(deps): bump prettier to 3.8.3 by @nimarb in https://github.com/langfuse/langfuse/pull/13387
- chore(skills): suggest to run pnpm dedupe by @nimarb in https://github.com/langfuse/langfuse/pull/13401
- chore(deps): bump next to 16.2.4 by @nimarb in https://github.com/langfuse/langfuse/pull/13402
- chore(web): Remove
@mui/materialdependency by @bezbac in https://github.com/langfuse/langfuse/pull/13399 - chore(web): Track error notification clicks by @bezbac in https://github.com/langfuse/langfuse/pull/13386
New Contributors
- @AlissonRS made their first contribution in https://github.com/langfuse/langfuse/pull/13274
Full Changelog: https://github.com/langfuse/langfuse/compare/v3.171.0...v3.172.0
- Allow `source=ANNOTATION` on POST /api/public/scores
- Added GPT-5.5 model pricing
Full changelog
What's Changed
Features
- feat(scores-api): allow
source=ANNOTATIONonPOST /api/public/scoresby @wochinge in https://github.com/langfuse/langfuse/pull/13286 - feat(model-prices): add gpt-5.5) by @hassiebp in https://github.com/langfuse/langfuse/pull/13354
Fixes / Improvements
- fix(worker): cap PostHog export window at next UTC day boundary (LFE-9475) by @Steffen911 in https://github.com/langfuse/langfuse/pull/13326
- fix(shared): cap analytics observations CTE upper bound (LFE-9475) by @Steffen911 in https://github.com/langfuse/langfuse/pull/13329
- fix(dev): fix seed command by @nimarb in https://github.com/langfuse/langfuse/pull/13337
- perf(clickhouse): scores query in events.all scans all partitions by @sumerman in https://github.com/langfuse/langfuse/pull/13336
- fix: add breadcrumb to dataset items page by @marliessophie in https://github.com/langfuse/langfuse/pull/13344
- perf(clickhouse): pre-filter traces in CTE for analytics integration joins by @Steffen911 in https://github.com/langfuse/langfuse/pull/13364
Chores
- chore: add langfuse JP to region picker by @Steffen911 in https://github.com/langfuse/langfuse/pull/13361
- chore: hide eval preview if user has not ingested with otel in the past 7 days by @marliessophie in https://github.com/langfuse/langfuse/pull/13343
- chore(deps): axios 1.15.2 and dedupe by @nimarb in https://github.com/langfuse/langfuse/pull/13365
Full Changelog: https://github.com/langfuse/langfuse/compare/v3.170.0...v3.171.0
- CSS injection prevention in score config names
- Constant-time comparison for admin API key authentication
- Evals triggering and unstable evals API endpoints
- Region selector in user menu
- Metrics emission with shard tags for DataDog aggregation
Full changelog
What's Changed
Features
- feat(web): warn about unencoded special characters in DATABASE_URL on migration failure by @Steffen911 in https://github.com/langfuse/langfuse/pull/13186
- feat: emit .rate and .time metrics with shard tags for DataDog aggregation by @sumerman in https://github.com/langfuse/langfuse/pull/13249
- feat(auth): allow configuration of ID Token signed response alg by @ICZAD769 in https://github.com/langfuse/langfuse/pull/12333
- feat: detect SDK version from langfuse events table by @marliessophie in https://github.com/langfuse/langfuse/pull/13203
- feat(experiments): add support to trigger evals by @marliessophie in https://github.com/langfuse/langfuse/pull/13240
- feat(web): Add region selector to user menu by @bezbac in https://github.com/langfuse/langfuse/pull/13270
- feat(api): add unstable evals public endpoints by @hassiebp in https://github.com/langfuse/langfuse/pull/12829
- feat(api): add DELETE endpoint for LLM connections by @Steffen911 in https://github.com/langfuse/langfuse/pull/13247
- feat(prompts): Add time window filtering to prompt metrics by @bezbac in https://github.com/langfuse/langfuse/pull/13282
- feat(widgets): distinguish between available and called tools in filter by @nimarb in https://github.com/langfuse/langfuse/pull/13281
- feat(ui): decode unicode escapes in PrettyJsonView for trace detail by @toyayuto in https://github.com/langfuse/langfuse/pull/13223
- feat: add 5-minute and 20-minute blob storage export frequency options by @nelsonauner in https://github.com/langfuse/langfuse/pull/13126
- feat(ui): add floating multi-select action bar by @marliessophie in https://github.com/langfuse/langfuse/pull/12851
- feat(experiments): add enabled toggle for remote dataset run trigger (#13221) by @marliessophie in https://github.com/langfuse/langfuse/pull/13289
Fixes
- fix: coerce AUTH_SSO_TIMEOUT to number by @Steffen911 in https://github.com/langfuse/langfuse/pull/13199
- fix: make new queue depth metrics usable in cloud watch by @sumerman in https://github.com/langfuse/langfuse/pull/13241
- fix(security): sanitize score config names to prevent CSS injection by @Steffen911 in https://github.com/langfuse/langfuse/pull/13206
- fix(security): use constant-time comparison for admin API key auth by @Steffen911 in https://github.com/langfuse/langfuse/pull/13208
- fix(model-prices): add match on claude-haiku-4-5 by @hassiebp in https://github.com/langfuse/langfuse/pull/13254
- fix(datasets): fix errors during json schema generation by @wochinge in https://github.com/langfuse/langfuse/pull/13193
- fix(web): Improve skeleton loading state for tables by @bezbac in https://github.com/langfuse/langfuse/pull/13235
- fix(web): Stale search highlights by @bezbac in https://github.com/langfuse/langfuse/pull/13237
- fix(web): Use overflow-auto instead of overflow-scroll for main content by @bezbac in https://github.com/langfuse/langfuse/pull/13267
- fix(dashboards): exclude TEXT and CORRECTION scores from scores-numeric view by @wochinge in https://github.com/langfuse/langfuse/pull/13276
- fix(batch-actions): allow dialog close on status step and fix Go to Dataset 404 by @wochinge in https://github.com/langfuse/langfuse/pull/13277
- fix(audit-logs): capture after-state and normalise resource ids for member role changes by @Steffen911 in https://github.com/langfuse/langfuse/pull/13278
- fix(storage): disable default S3 checksums for GCS multipart uploads by @Steffen911 in https://github.com/langfuse/langfuse/pull/13280
- fix(onboarding): add PH button capture for 'try demo project' by @annabellscha in https://github.com/langfuse/langfuse/pull/13251
- fix(web): prevent DataTable onRowClick when clicking interactive elements by @marliessophie in https://github.com/langfuse/langfuse/pull/12881
- fix(web): migrate unstable eval unit tests to vitest by @hassiebp in https://github.com/langfuse/langfuse/pull/13300
- fix(evals): fix score filtering on evaluator runs page by @wochinge in https://github.com/langfuse/langfuse/pull/13225
- fix(widgets): handle pivot table legacy sorting by @nimarb in https://github.com/langfuse/langfuse/pull/13306
- fix(web): prevent crash on invalid JSONPath in dataset mapping editor by @wochinge in https://github.com/langfuse/langfuse/pull/13253
Chores
- chore: deterministic CloudUsageMeteringQueue init by @sumerman in https://github.com/langfuse/langfuse/pull/13239
- chore(scim): add [SCIM] log prefix and operation confirmations by @Steffen911 in https://github.com/langfuse/langfuse/pull/13245
- chore: prefix batch export logs by @Steffen911 in https://github.com/langfuse/langfuse/pull/13246
- ci: run zizmor on fork PRs by failing on findings by @wochinge in https://github.com/langfuse/langfuse/pull/13263
- ci: pin useblacksmith/setup-docker-builder comment to v1.6.0 by @wochinge in https://github.com/langfuse/langfuse/pull/13266
- refactor(web): Remove unused components and hooks by @bezbac in https://github.com/langfuse/langfuse/pull/13148
- refactor(web): Make
useSidebarFilterStatestate location more explicit by @bezbac in https://github.com/langfuse/langfuse/pull/13150 - refactor(traces): Remove unused
updateTagsmutation from router by @bezbac in https://github.com/langfuse/langfuse/pull/13269 - chore: bump bullmq to 5.73.5 by @sumerman in https://github.com/langfuse/langfuse/pull/13256
- chore(tests): use gemini-2.5-flash-lite for GoogleAIStudio tests by @coffee4tw in https://github.com/langfuse/langfuse/pull/13265
- chore(worker): include fileKey in OTEL ingestion failure logs by @Steffen911 in https://github.com/langfuse/langfuse/pull/13271
- chore(deps): bump dompurify to 3.4.0 by @nimarb in https://github.com/langfuse/langfuse/pull/13272
- chore(web): Remove @headlessui packages by @bezbac in https://github.com/langfuse/langfuse/pull/13275
- refactor(web): Enable
react/no-unused-prop-typeseslint rule by @bezbac in https://github.com/langfuse/langfuse/pull/13209 - chore(experiments): remove outdated peek view code by @marliessophie in https://github.com/langfuse/langfuse/pull/13009
- chore(ci): pin action version comments to immutable patch tags by @wochinge in https://github.com/langfuse/langfuse/pull/13291
- refactor(web): migrate test framework from Jest to Vitest by @wochinge in https://github.com/langfuse/langfuse/pull/13191
- refactor(web): Always allow toggling V4 in dev mode by @bezbac in https://github.com/langfuse/langfuse/pull/13284
- refactor(web): Do not reuse table name for observations and events table by @bezbac in https://github.com/langfuse/langfuse/pull/13204
- chore: add ingestion_size_stats table and MVs to dev-tables by @sumerman in https://github.com/langfuse/langfuse/pull/13307
- chore(observability): upgrade opentelemetry and datadog SDKs by @maxdeichmann in https://github.com/langfuse/langfuse/pull/12737
- chore(worker): harden cloud free tier usage threshold job by @Steffen911 in https://github.com/langfuse/langfuse/pull/13322
New Contributors
- @ICZAD769 made their first contribution in https://github.com/langfuse/langfuse/pull/12333
Full Changelog: https://github.com/langfuse/langfuse/compare/v3.169.0...v3.170.0
- QueueMetricsRunner collects queue metrics on a fixed schedule and aggregates sharded queue metrics
- Updated managed ragas-faithfulness-evaluator with proper scoring and prompt details
- Fixed text overlap when adding prompt references
Full changelog
What's Changed
Features
- feat: QueueMetricsRunner collects queue metrics on a fixed schedule and aggegates sharded queue metrics by @sumerman in https://github.com/langfuse/langfuse/pull/13231
Fixes / Improvments
- fix: update managed ragas-faithfulness-evaluator with proper scoring and prompt details by @marliessophie in https://github.com/langfuse/langfuse/pull/13226
- fix(ci): use exact release tags in action version comments by @wochinge in https://github.com/langfuse/langfuse/pull/13229
- fix(prompts): Prevent text overlap when adding prompt reference by @bezbac in https://github.com/langfuse/langfuse/pull/13236
Chores
- chore(deps): bump protobufjs to 7.5.5 by @nimarb in https://github.com/langfuse/langfuse/pull/13232
- chore(deps): bump follow-redirects 1160 by @nimarb in https://github.com/langfuse/langfuse/pull/13233
- chore(skill): pnpm upgrade skill doesnt change lock file manually by @nimarb in https://github.com/langfuse/langfuse/pull/13234
- chore: Update pull request template to clarify chore and refactor types by @bezbac in https://github.com/langfuse/langfuse/pull/13166
Full Changelog: https://github.com/langfuse/langfuse/compare/v3.168.0...v3.169.0
- Prevent IP validation bypass for image URL validation
- Prevent prototype pollution in OTel attribute key parsing
- AWS Bedrock API Keys (Bearer Token) support
- OCI Object Storage Native SDK integration with IAM auth
- Claude Opus 4.7 model pricing support
Full changelog
What's Changed
Features
- feat(web): add support for AWS Bedrock API Keys (Bearer Tokens) by @wochinge in https://github.com/langfuse/langfuse/pull/13098
- feat(experiments): direct-write prompt experiment root events by @hassiebp in https://github.com/langfuse/langfuse/pull/13044
- feat: add OCI Object Storage Native SDK integration with IAM auth options by @sanjeev260191 in https://github.com/langfuse/langfuse/pull/12379
- feat(ui): remove tier from pylon issue field and change warning message by @jannikmaierhoefer in https://github.com/langfuse/langfuse/pull/13140
- feat(cache): add local l1 cache for model match by @hassiebp in https://github.com/langfuse/langfuse/pull/12977
- feat(slack): show change author in Slack prompt notification by @wochinge in https://github.com/langfuse/langfuse/pull/13149
- feat(model-prices): add claude-opus-4-7 by @hassiebp in https://github.com/langfuse/langfuse/pull/13214
- feat(tracing): tracing setup page with prompt by @annabellscha in https://github.com/langfuse/langfuse/pull/13045
Fixes / Improvements
- fix: count histogram UI switching during widget editing by @sumerman in https://github.com/langfuse/langfuse/pull/13128
- fix: github oauth should check issuer by @sumerman in https://github.com/langfuse/langfuse/pull/13115
- fix: Missing trace tags in v4 table and detail view by @bezbac in https://github.com/langfuse/langfuse/pull/13165
- fix: prevent ip validation bypass for image URL validation by @Steffen911 in https://github.com/langfuse/langfuse/pull/13207
- fix: rename migration from a cleaned up name to avoid repeated reapplication by @sumerman in https://github.com/langfuse/langfuse/pull/13153
- fix(annotation): render session-level screens subject to fast preview mode on/off by @marliessophie in https://github.com/langfuse/langfuse/pull/13178
- fix(ci): handle invalid security-severity in Snyk SARIF output by @wochinge in https://github.com/langfuse/langfuse/pull/13163
- fix(email): add project name to evaluator pause notifications by @hassiebp in https://github.com/langfuse/langfuse/pull/13135
- fix(evals): make evaluation prompt read-only in view-only template mode (#13047) by @marliessophie in https://github.com/langfuse/langfuse/pull/13137
- fix(evals): return full JSONPath slice result and deduplicate eval JSONPath logic by @wochinge in https://github.com/langfuse/langfuse/pull/13200
- fix(experiments): keep referenced prompts single-row in compact density by @marliessophie in https://github.com/langfuse/langfuse/pull/13167
- fix(llm-schemas): allow CUD access for project members by @hassiebp in https://github.com/langfuse/langfuse/pull/13134
- fix(otel): normalize gen ai usage details by @hassiebp in https://github.com/langfuse/langfuse/pull/13110
- fix(otel): prevent prototype pollution in OTel attribute key parsing by @Steffen911 in https://github.com/langfuse/langfuse/pull/13201
- fix(shared): treat end-of-life model errors as non-retryable by @wochinge in https://github.com/langfuse/langfuse/pull/13129
- fix(slack): remove redundant timestamp footer from Slack notifications by @wochinge in https://github.com/langfuse/langfuse/pull/13152
- fix(traces): Use single-line skeletons for table with small row height by @bezbac in https://github.com/langfuse/langfuse/pull/13138
- fix(web): Create new
TableCellWithCopyButtonforApiKeyListby @bezbac in https://github.com/langfuse/langfuse/pull/13057 - fix(web): Hide irrelevant filters in subtables by @bezbac in https://github.com/langfuse/langfuse/pull/13136
- fix(web): Preserve whitespace in message search controller by @bezbac in https://github.com/langfuse/langfuse/pull/13096
- fix(web): Prevent toast error when toggling v4 with selected saved view by @bezbac in https://github.com/langfuse/langfuse/pull/13077
- fix(worker): sync managed evaluator vars on template updates by @marliessophie in https://github.com/langfuse/langfuse/pull/13164
- perf(dual-write): clamp min start time to past day and optimize trace sorting by @Steffen911 in https://github.com/langfuse/langfuse/pull/13172
Chores
- chore: add bloom_filter index on experiment_id to events_core by @sumerman in https://github.com/langfuse/langfuse/pull/13141
- chore: add redis.full_command to redis traces by @sumerman in https://github.com/langfuse/langfuse/pull/13169
- chore: add sampling for sharded queues by @maxdeichmann in https://github.com/langfuse/langfuse/pull/13143
- chore: Initialize local databases during cloud setup and maintenance scripts by @sumerman in https://github.com/langfuse/langfuse/pull/13106
- chore(ci): remove GitHub Actions that rely on Node 20 by @wochinge in https://github.com/langfuse/langfuse/pull/13194
- chore(deps): run pnpm dedupe by @nimarb in https://github.com/langfuse/langfuse/pull/13142
- chore(experiments): release public beta on cloud by @marliessophie in https://github.com/langfuse/langfuse/pull/13131
- chore(experiments): rewrite metrics aggregation for total cost and latency to skip trace-level aggregation by @marliessophie in https://github.com/langfuse/langfuse/pull/13104
- chore(security): fix snyk code scanning by @nimarb in https://github.com/langfuse/langfuse/pull/13158
- chore(trpc): handling of errors with body parse issues by @marliessophie in https://github.com/langfuse/langfuse/pull/13211
- chore(v4): default new orgs to v4 by @nimarb in https://github.com/langfuse/langfuse/pull/13105
- ci: harden + monitor GH actions with zizmor by @wochinge in https://github.com/langfuse/langfuse/pull/13048
- ci: reapply GH Actions hardening with deploy secret fix by @wochinge in https://github.com/langfuse/langfuse/pull/13161
- ci(deps): bump the github-actions group across 1 directory with 16 updates by @dependabot[bot] in https://github.com/langfuse/langfuse/pull/13114
- revert: ci: harden + monitor GH actions with zizmor (#13048) by @wochinge in https://github.com/langfuse/langfuse/pull/13155
New Contributors
- @sanjeev260191 made their first contribution in https://github.com/langfuse/langfuse/pull/12379
Full Changelog: https://github.com/langfuse/langfuse/compare/v3.167.4...v3.168.0
- path-to-regexp dependency vulnerability
Improved ClickHouse configuration, added dependency upgrade skill, enhanced experiment comparison UI styling, and optimized CI Docker builds.
Fixed table padding, Azure blob storage validation, LLM tracing environment handling, and eval queue stalls. Updated multiple dependencies including Next.js, Langchain, Lodash, Axios, and others.
Limits media deletion batch size to avoid PostgreSQL bind parameter errors, adds Bearer token support to scores API POST, validates LLM base URLs, improves Slack integration robustness, and expands signup support to all Unicode letters. Updates Next.js and lodash dependencies.
- Self-hosted deployments: NextAuth and related environment variables must be present in Docker configuration following CI/CD fix.
- Secret key is now required for LLM test base URL changes (fix/web)
- Annotation queue item page now integrates session handling with a beta feature flag for observation fetching.
- Dataset cell in Experiments table now links to the dataset page and shows display name.
- New `fields` parameter added to GetTraceById API endpoint for selective field retrieval
- Decimal64(12) cost values are now clamped before ClickHouse insertion β self-hosters with custom cost pipelines should verify no data truncation occurs
- Prisma bumped to 6.19.3; review migration compatibility if running a managed database setup
- Enforced write permissions on LLM connection test endpoints (fix(llm-connections))
- TEXT (free-form) scores via public API
- 16MB request body warnings for OpenTelemetry ingestion
- A previous Redis command/socket timeout change was reverted; explicit Redis socket timeout and keepalive are now set separately via a new chore commit β verify Redis configuration if you had adjusted timeout settings in prior versions.
- New env var available to exclude specific project IDs from experiment backfill; review if you need to scope backfill behavior.
- New env var for LLM-as-judge concurrency β configure if running experiments with LLM-as-judge at scale.
- Full-text search targeting input/output fields directly in table UI
- Blob storage exports (v3 and v4) now include additional fields
- Session persistence support added for sidebar filter state
- Rename env var LANGFUSE_TRACE_DELETE_SKIP_PROJECT_IDS to LANGFUSE_DELETE_SKIP_PROJECT_IDS in your deployment configuration.
- Internal upgrade to pnpm v10 β relevant if contributing to or self-building from source.
- Upgraded to Next.js 16.2.1 and recharts v3.8.0 β relevant for self-hosted builds.
- Environment variable LANGFUSE_TRACE_DELETE_SKIP_PROJECT_IDS has been renamed to LANGFUSE_DELETE_SKIP_PROJECT_IDS. Operators using the old name must update their configuration. The new variable also covers score deletions, not just trace deletions.
- SSE query progress streaming for dashboards
- Boolean scores for LLM-as-judge evaluators
- LLM-as-judge filtering by tool names and tool call count
- Upgraded to Zod v4 β review any custom Zod schema usage for potential breaking API changes introduced by the major version bump
- Fixed CVE vulnerabilities in web and worker Docker images
- Error level filtering in custom dashboard widgets
- Paginated experiments list
- Gzip compression for blob storage exports
- Database query layer refactored from Kysely to Prisma β self-hosters should verify no regressions in custom query patterns
- Next.js upgraded to 16.2 β self-hosters should review compatibility
- undici major version bump (6.x β 7.x) may affect environments with pinned transitive dependencies
- Upgraded dompurify to resolve known vulnerability
- Upgraded fast-xml-parser to resolve known vulnerability
- Upgraded @slack/web-api to resolve Dependabot security alert
- Direct insertion into events_full table
- GPT-5.4-mini and GPT-5.4-nano model support
- Genkit spans support in OTel pipeline
- AI features have been disabled in this release ('chore: disable ai feat'). Users depending on AI functionality should be aware this may affect their workflows until re-enabled.
- OTEL pydantic gen ai.system instructions mapping added
- Project admins now receive email notifications on blob storage export failures
- Gemini Live 2.5 Flash Native Audio model pricing added
- Tailwind upgraded to v4 β review frontend styles for compatibility if extending or customizing Langfuse UI.
- Self-hosted deployments: v2 API endpoints now return 404 (not 501) for unsupported routes β update any error-handling logic that expected 501 responses.
- SDK upgrade note added to v4 beta popup β check SDK compatibility if running v4 beta.
- Replay ingestion events v2
- Blob storage sync status badge and error alert in settings UI
- Prompt label 'Select all N / Clear' links with search and create input
- The v4 beta toggle has been renamed to 'preview' in the UI; references to v4BetaEnabled are updated accordingly
- Evals config blocking
- Media and blob batch cleaner for project deletion
- Member permissions to edit LLM tools
- REDIS_KEY_PREFIX handling for BullMQ has been fixed (Issue 11586) β operators using BullMQ with a custom REDIS_KEY_PREFIX should verify queue behavior after upgrading.
- Public API legacy endpoints have been moved to a separate namespace β API consumers using legacy endpoints should confirm their integration paths remain valid.
- Added gpt-5.4 model support
- LLM-as-a-judge filter environments are now hidden by default
- Saved views now slide in from the left
- Fern SDK majors: review generated SDK changelogs if consuming Langfuse SDKs directly
- react-resizable-panels v4: review breaking changes in that library if overriding panel components in a self-hosted deployment
- Docker: Redis now uses a named volume; verify volume configuration when upgrading self-hosted deployments
- Fern SDK major version upgrade may introduce breaking changes for SDK consumers (chore: upgrade fern for SDK majors)
- react-resizable-panels upgraded to v4 (major version bump) β may affect self-hosted UI customizations
- ObservationsV2Response data field is now typed instead of a generic map β API consumers relying on the previous shape should verify compatibility
- ClickHouse Cloud auth provider support
- Thinking-parts handling in playground and evals
- SSO: tokenEndpointAuthMethod now configurable in multi-tenant SSO configs
- Prisma migration for pending_deletions index is now schema-agnostic; verify migration applies cleanly in multi-schema setups
- Trace data propagation time window is now limited to 7 days
- Optimized v2 traces queries with uniq(trace_id) on observations view
- v2 metrics version passed to custom dashboard widgets
- New experiments pages with routing and admin flag checks
- Event propagation replica sync has been removed and delay increased to 30 minutes β operators relying on tighter sync timing should review this change.
- Dashboard queries now enforce row_limit on previously unbounded queries; results may be truncated compared to prior behavior.
- Position and level filters added to trace/events table
- Bloom filter indexes on user_id and session_id for faster lookups
- Historical and batched single observation evals
## What's Changed * fix(trace-table): update table when metrics loaded
- Remove any use of parseIoAsJson on observations-v2 API calls before upgrading to avoid 400 errors
- Langchain upgraded to v1 (#11818) β review Langchain integration for breaking changes introduced in that major version bump
- Tremor chart dependency removed; verify no custom UI code depends on Tremor components
- observations-v2: parseIoAsJson option is retired; passing it now returns HTTP 400
- Tremor-based charts and dependency removed β any customizations or integrations relying on Tremor chart components will break
- Single span evaluations released in open beta
- Delete entire prompt folders
- Set table defaults for entire projects
- Local storage key for dataset metrics now includes datasetId β previously saved dataset metric preferences will be reset.
- Tremor charting library replaced with Recharts in home dashboards; custom styling targeting Tremor components will no longer apply.
- LLM-as-a-judge evaluation now supported at the observation level, including in prompt experiments
- Eval default filter active status is now configurable
- opus-4-6 added to model pricing
- Server-side ingestion masking for OTEL traces β allows sensitive data in OpenTelemetry traces to be masked before storage
- BullMQ repeatable jobs have been replaced by reinstated RedisLock β verify job queue configuration after upgrading.
- New nullable column 'job_input_dataset_item_valid_from' added to job-executions table; migration required.
- New secondary index added for media retention workload estimator and index change for pending_deletions lookup β expect migration steps.
- Dataset versioning support across APIs and schemas, with version resolution for experiment runs.
- Single observation evals for prompt experiments.
- New public API endpoint: prompts filterOptions.
- single observation evals
- LLM-as-judge filters
- lodash bumped to 4.17.23 β verify compatibility if pinning lodash version in downstream dependencies
- Events-based observation/trace table with experiment filters, session ID, and user ID columns
- Preflight checks before delete operations on events, observations, and traces
- Thinking budget configuration for Vertex Gemini models in the playground
- Trace detail now renders thinking/reasoning parts, including on tool-call-only traces
- New org-level audit log viewer
- Batch-oriented periodic jobs as an alternative to retention queue
- BatchProjectCleaner now uses BullMQ; verify BullMQ configuration is in place before upgrading if running self-hosted.
- Event dual-write timestamp buffer has been reduced from 3.5 minutes to 2 minutes, which may affect systems relying on the previous buffer window.
- BatchProjectCleaner optimization using BullMQ, extended to handle dataset run items
- JSON validation toggle for corrections
- Global toggle for showing corrections in session and IOPreview components
- New CLICKHOUSE_ASYNC_INSERT_BUSY_TIMEOUT_MIN_MS setting for tuning ClickHouse async insert behavior
- High cardinality measures now supported in v2/metrics API when using topN
- Global Bedrock Anthropic models now allowed in LLM connection configuration
- Inline trace comments on fractions of IO data
- Selective metadata expansion on observations-v2 endpoints
- Default org/project membership assignment for SSO users with existing accounts
- PostHog SSRF validation
- Encrypt blob storage secretAccessKey in public API
- Corrections in trace and observation preview
- Refresh button supporting both manual and periodic refresh
- Clear all button for filters