3.22.0 (2026-11-02)
Features
aigateway: serve OpenAI Decisions API on /v1/decisions (#9200) (aa27b1f)
analytics: a group project's charts, LangWatchQL and Sessions read its member projects (#8878) (ec4d539)
analytics: open dashboards from the analytics entry and point back to the old analytics (#9055) (0e9ae7a)
api-key: confirming the legacy key revoke opens the create drawer (#9066) (4a56ffd)
api-key: revoking the legacy project key swaps it for an API key (#9061) (f866c94)
auth: force a password reset for a set of users (#8959) (e408de0)
auth: legacy key scope flag for annotation reads (#9024) (2cd1992)
auth: log which credential and client each API request used (#9003) (c55dc6e)
auth: record each request's credential type and log legacy project key requests beyond ingestion; they are refused only on projects in
legacy_project_key_scope_enforced(#8962) (ec41367)chart: let the operator turn the heap ceiling off (#9127) (6899309)
charts: let the langyagent chart take over existing agent objects (#8965) (fa657fa)
ci: assume AWS roles by OIDC for embeds publish and the gateway matrix (#8961) (d8f12d2)
ci: one nightly suite with a single dashboard (#8877) (ee88567)
ci: publish the langy agent and Lambda images to the artifacts registry (#8967) (1fa0a2b)
coding-agent: copilot CLI and VS Code sessions become rows (#8884) (e5c5e8c)
dashboard: add REST create and delete for Dashboards boards (#8896) (fbc1469)
dashboards: a dashboards section in the project sidebar with add and pin (#9090) (41480c0)
dashboards: a per-dashboard Langy traces setting (#9099) (821b467)
dashboards: per-widget "Langy traces" setting in the query editor (#9137) (5e82c1e)
dashboards: say Pin instead of Star in the UI (#9128) (2eb09a8)
dashboards: widget queries take sources and projects as params (#9171) (af5a9c3)
dashboards: widgets show loading and how to get their data (#9108) (5c39251)
design-system: brand icons for decision model providers and langwatch (#8957) (f142230)
design-system: search other projects from the scope filter (#9116) (a2d681b)
docs-site: 404 mark intro, API reference polish and live-site fixes (#9170) (ac821b6)
docs-site: deploy the /docs build to its bucket from main (#9165) (e5a3e99)
experiment: accept a per-run concurrency on the experiment run API (#9023) (640d0f6)
instant-eval-judge: judge router behind release_instant_evals_judge_router (#9118) (252263a)
instant-eval: let an LLM judge pick its own decision model (#9142) (c1e94f7)
model-provider: instant evals decision model column with own-key decision models (#8935) (9b022a5)
model-providers: add Doubleword provider (strict layout) (#8557) (4304116)
monitor: pause a monitor whose evaluations mostly fail (#9040) (fcbd9ed)
nurturing: send coding-agent session and app-open signals to Customer.io (#8917) (d55d670)
ops: send notices from Cloud to self-hosted installs (#8949) (d831e82)
sdk: one product per dashboards path; dashboards means the new product everywhere (#9089) (552534d)
tooling: pnpm test:changed runs only the tests an edit reaches (#8945) (c4f357b)
workflow,stores: accept web-identity credentials as an alternative to static AWS keys (#8994) (fe9df27)
Bug Fixes
aigateway: keep mid-conversation system messages in place on Bedrock (#9219) (846b5bc)
analytics: accept Langy session keys in LangWatchQL (#9054) (4dcb63d)
analytics: read Postgres-backed LangWatchQL dates at the scale Postgres stores them (#8912) (f5f8086)
analytics: rebuild lwql postgres engine tables when reader credentials rotate (#8875) (d1e13a9)
analytics: refuse FINAL and SAMPLE on PostgreSQL-resident LWQL views and on subqueries (#9015) (f2660c4)
api-key: warn in the replacement drawer that the legacy key no longer works (#9067) (da82f75)
api: log an output-schema mismatch and still answer; declare atom evaluations (#9092) (9f8201d)
api: name the credential census file in the api package layout (#9005) (03ea93a)
auth: show Google and Microsoft marks on Safari sign-in buttons (#9044) (f93b953)
auth: tell a person their identity provider refused them, and stop paging on it (#9180) (3b0992a)
automation: log a customer-fixable settlement refusal once an hour, not per firing (#8977) (9134f67)
browser: a full browser storage no longer breaks the page; read mirror recovers and skips impersonation (#9072) (9325213)
chart: sleep 15s before the app's SIGTERM so the load balancer stops routing first (#9031) (9637bb1)
ci: an image's change set starts at the last published commit, not the previous push (#9167) (d08eff0)
ci: keep Content-Type when a re-tagged app image copies its CDN assets (#9028) (697a4ec)
clickhouse-client: async inserts waiting for a slot share one statement (#9182) (622e043)
clickhouse: split an id index retention raise under the server's 128 KiB field cap (#9178) (c9160f8)
cli: pin cloudflared 2026.10.5, verify it everywhere, drop the npm wrapper (#9086) (0b1bad9)
codeblock: harden code block process isolation (#9050) (01db6c2)
coding-agent: drop hook_execution_start before it becomes a contribution (#9011) (56a9723)
dashboards: refresh moves fixed ranges, hidden stars keep their place, agents read boards by id (#9048) (a5ea0ed)
dashboard: tighten delete confirmation for Reports dashboards (#8918) (5dfa85e)
data-privacy: raise the per-span PII redaction budget to 400,000 characters (#9209) (9b88cb8)
deps: raise authlib, litellm and dnspython for today's advisories (#9120) (828259f)
deps: raise qs to 6.17.0 for CVE-2026-110910 (#9100) (56fa502)
docker: bump cloudflared to 2026.10.5 in the server image (#9119) (e3cd4dc)
docs: inset the compact contents bar so its label clears the edge (#9174) (60d900e)
evaluation: do not retry a langevals call that timed out (#9037) (7d7b8e0)
eventing: a state projection's rebuild accepts the log's copy of a re-sent key (#9181) (df9775c)
governance: centre the overview again and empty its lists with the design system's line (#8932) (685c8e7)
group-queue: reclaim a dead worker's groups when its beacon goes, not its active key (#9139) (dceba19)
group-queue: the worker that handed a job back passes its group over (#9154) (412630f)
helm: bump chart images for CVE fixes (postgres, redis, curl, prometheus, alpine/k8s) (#9208) (ad7c623)
langevals: judges reach a verdict on gpt-6 reasoning models (#9102) (d7b6238)
langy: expanded panel pushes open drawers left instead of covering them (#9159) (beadf5d)
langy: give card-only turns a reply line on the REST surface (#8838) (b7c195d)
langy: never tell the user to sign in when the sandbox CLI fails (#8775) (4f2dc72)
langy: pick an existing test suite before creating a scenario (#9158) (42a13b7)
langy: refresh app lists when a Langy write lands (#9160) (0af13f6)
langy: show an AI gateway spending limit as a budget card, not a failed reply (#9197) (810702b)
model-provider: doubleword ids by alias, and routers out of the price audit (#9034) (d69d3f7)
model-provider: drop the Doubleword models shut down on 30 Oct (#9214) (abfdbbf)
navigation: keep the reader where they are when they switch organization (#9114) (709f485)
nlp-lambda: start the Lambda image from / so the function can boot (#9018) (3e84e6b)
nurturing: send Customer.io date attributes as Unix seconds (#8953) (dc318da)
ops: pause the pending-counter keyspace sweep after it adopts (#9073) (08aef76)
organization: an open tab ignores another tab's remembered scope (#9107) (150e9e7)
presence: keep a project's presence keys on one Redis cluster slot and make leave atomic (#9068) (b8e23ef)
presence: list a project's sessions from a per-project index instead of scanning the keyspace (#9063) (53f2d2a)
project: the legacy key nudge answers per project, not per remembered scope (#9113) (8bcffa2)
redaction: find email addresses in one pass instead of a quadratic regex (#9205) (73079a2)
run ClickHouse image 0.4.0 in the dev and self-host compose so custom_ settings work (#9057) (86a85ee)
security: close 148 of 150 alerts across the python locks (#7634) (c0837d1)
security: close all 52 Go alerts (grpc 1.83.2 in 16 modules, OTel-Go 1.45.0 in the SDK) (#7931) (691f480)
security: close the nine alerts raised on 2026-10-22 (#8982) (7eca2c2)
security: let ALLOWED_PROXY_HOSTS reach on-premise .local hosts (#9088) (3880e8d)
security: raise JS security floors for the root workspace and SDK examples (#6569) (2adf11f)
security: read client address headers only from configured proxies (#8970) (9ae6ca4)
test: isolate the platform-health suites and wait for the measured query_log entry (#9027) (c96cc6a)
trace: a span's own attributes never break its read on a request-param name (#9179) (d8adba2)
trace: bound offloaded-field recall so large traces can't kill the worker (#9115) (fdac9b4)
workflow: never move a studio Lambda to an older image during a rollout (#9030) (6839a6b)
Miscellaneous
deps: bump aiohttp (b51e7cb)
deps: bump aiohttp from 3.14.3 to 3.14.4 in the uv group across 1 directory (#8941) (b51e7cb)
release: undo langwatch 4.0.0 so the platform releases as 3.22.0 (#9225) (637d1c2)
Documentation
agent-testing: add the setup and teardown hooks guide (#8920) (d3e993c)
dashboards: launch-day docs and api reference pages for boards and widgets (#9076) (22e3a67)