Legacy feedback formulas deprecated; experiment UI overhaul
RollupObservability and evaluations
Datasets and experiments
-
The legacy feedback formula endpoints (
POST/GET /feedback/formulasandGET/PUT/DELETE /feedback/formulas/{feedback_formula_id}) that back composite scores are deprecated in favor of composite evaluators, which implement a composite score as a code evaluator plus a run rule, and are scheduled for removal on 2026-08-20. Migrate existing feedback formulas to the new composite model. -
Model, prompt, and tool chips in the Experiments table config cells now lay out from real measurements for accurate truncation, and the +N overflow badge is a clickable dropdown whose entries expose the same actions (filter, group by, open in playground, and details) as a chip’s own menu.
-
Expanding the run tree for repetition runs in experiment comparison views now works reliably when a repetition root has a project ID but no session ID.
-
Evaluators linked to Hub prompts now load correctly for flat and playground-shaped prompt commits, fixing crashes when editing existing evaluators.
-
Code evaluator upload now accepts Python entrypoints annotated with PEP 604 union return types (for example
-> dict | None). -
POST /v2/datasets/ /experiment-runs is the supported public API for paginated experiment comparison. Legacy dataset comparison helpers are removed from the public OpenAPI spec and generated SDKs; existing HTTP routes continue to work for LangSmith UI clients.
-
Each example’s dataset splits now render as chips in the dataset Examples table, laid out from real measurements with a clickable +N overflow menu when an example belongs to more splits than fit the column.
-
Adds
langsmith evaluator create-llmto define structured LLM-as-judge evaluator rules from a prompt, schema, and model config file, targeting a project or dataset. -
The experiment comparison view now offers an optional, reorderable “Splits (latest)” column that shows each example’s current dataset split assignments as chips, reflecting live membership rather than the as-of-run snapshot.
-
Evaluator spend charts on project and dataset evaluator tabs keep their desktop layout on narrow screens and scroll horizontally instead of compressing the chart and stat cards.
-
The experiment comparison and group-by views now show each example’s current dataset split rather than the split it had when the experiment ran, so you can tell whether failures already belong to a split without re-running the experiment.
-
Comparison view now loads token and cost stats from SmithDB for root runs, so the stats columns populate again instead of staying blank
-
LangSmith now caps reusable evaluators per workspace to prevent unbounded resource growth. Contact support if your workspace needs a higher limit.
-
Creating dataset examples from source runs now correctly fetches run inputs and outputs backed by SmithDB, and no longer fails the whole request if one of several source runs can’t be found.
-
Select multiple rows in an experiment (or select all matching the current filters) and add, replace, or remove their dataset splits in one action, or copy the selected examples to another dataset — instead of editing rows one at a time.
-
The
/runs/rules/validateendpoint now supports thread evaluators. Passtest_thread_idandsession_idto test a multi-turn evaluator against a real conversation before saving. -
Custom code evaluators that time out or fail on a run now record an error on that run instead of silently leaving it without feedback, so partial evaluation failures are visible on the experiment.
-
The Open source run action on an example page now reads session and start time from dedicated example fields populated at creation, enabling reliable navigation to the source trace on SmithDB.
-
The thread evaluator config preview now shows the thread message formats the evaluator actually maps, instead of listing every available format.
-
Multi-turn evaluators now include a Test action that runs the evaluator against a sample thread before you save the rule.
-
The evaluator config now shows a locked “Trace count ≥ 2” filter for managed thread evaluators, making it clear they only run on threads with multiple turns.
-
Experiment comparison and individual experiment views now load run rows on self-hosted deployments that authenticate the UI via SSO/OAuth session cookies. Previously these views could show ‘No results found’ even though metrics and feedback loaded.
-
Experiment statistics now refresh promptly for recently run experiments while keeping historical experiment scans bounded.
-
The Assertions evaluator added via “Add evaluator” now reads assertions from the reference output like the auto-attached version, so it grades against the real assertions instead of always failing.
-
Evaluator spend chart y-axes now abbreviate amounts of $1,000 or more, making high-spend values easier to scan.
-
Exporting a dataset comparison view as CSV now returns a clear “file is too large to export” error instead of a generic server error when the export exceeds internal size limits.
-
Each split chip in a row’s Splits cell is now interactive in the experiment results and comparison views, with an Edit splits action that opens the single-example split picker so you can reassign splits without leaving the table.
-
Add RUN items to a single annotation queue with POST /annotation-queues/ /items. The server resolves runs via ClickHouse or SmithDB and returns a standards-shaped items envelope; THREAD support follows in a later release.
-
The LangSmith CLI now updates existing code evaluator rules in place when
evaluator upload --replaceis used, avoiding a delete-before-create window if the replacement upload fails. -
Split the read datasets into a new download datasets permission. Enforce this new permission in both the application and in APIs. The download button is disabled for those users without the download permission. Learn more.
-
Public dataset experiment traces open correctly when experiment runs provide their project identifier through the v2 response shape.
-
A run rule with a 0 sampling rate processes no runs, but the scheduler still enumerated it every tick. The scheduler query now skips rules with sampling_rate 0 (parity with the is_enabled check), so they are never dispatched.
-
Dataset and experiment tables now truncate long input and reference-output text and show detected base64 images as small thumbnails with a delayed larger preview, avoiding oversized hidden DOM content.
-
Experiment tables now defer full payload rendering and output diff preparation until those views are requested, improving responsiveness for runs with large agent trajectories.
-
Public dataset share links now resolve the sessions list (with stats) from SmithDB when ClickHouse querying is disabled, so shared dataset pages no longer fail to load on SmithDB-only deployments.
-
Add conversation threads to a single annotation queue with POST /annotation-queues/ /items using item_type THREAD (thread_id + session_id). Mixed RUN and THREAD batches are supported; the server resolves threads via ClickHouse or SmithDB.
-
Code evaluators now get more time to run each batch, so evaluators that import heavy libraries like scikit-learn are less likely to time out.
-
POST /annotation-queues/ /items now accepts at most 200 items per request and returns a clear validation error when the limit is exceeded. Requests at the limit continue to succeed.
-
Applying an evaluator to an existing experiment could fail with “Failed to start evaluation” on large experiments. It now starts reliably even when the run count is temporarily unavailable.
-
Linked runs load correctly from public dataset shares when LangSmith uses the ClickHouse compatibility path.
Tracing
-
The batched-run ingestion log now emits run_verbs as a list of run_id and verbs objects instead of a map keyed by run UUID, preventing structured-log aggregators from exhausting dynamic field limits.
-
LangSmith now enforces user-defined monthly trace limits scoped to individual projects and users. New traces that exceed a configured limit are rejected, while patches and feedback for already-accepted traces continue to flow through.
-
The tracing and evaluation onboarding quickstarts now show the correct LANGSMITH_ENDPOINT for bring-your-own-cloud data plane workspaces instead of the shared multi-tenant endpoint.
-
Sharing, viewing, or unsharing any run in a trace now operates on the trace root, so every run in a shared trace is publicly viewable, and public run links open the selected run within the shared trace.
-
Projects with existing traces no longer incorrectly display the onboarding screen when filtered or scoped to a time window with no recent runs. The project run-count check now looks back 30 days instead of the previous one-hour window.
-
Bulk export compression now defaults to zstandard (zstd) for improved performance. Self-hosted environments retain the gzip default via the FF_BULK_EXPORT_DEFAULT_COMPRESSION environment variable.
-
Authenticated users viewing public runs now see sidebar navigation for their last selected workspace. Logged-out viewers continue to see the public run without authenticated workspace navigation.
-
LangSmith now returns clearer 409 Conflict messages when duplicate run create or update payloads are submitted. The message indicates whether the duplicate was a run create or run update request when possible.
-
LangSmith MCP tools that fetch runs or thread history now accept project UUIDs in addition to project names, making trace URL investigations faster and less error-prone.
-
OpenTelemetry resource attributes (set via OTEL_RESOURCE_ATTRIBUTES) now appear on traces as metadata namespaced under otel.resource.*, so you can attach details like user IDs without changing how your tracer emits spans.
-
Vercel AI SDK traces sent over raw OpenTelemetry now render in the Messages view. Previously these traces showed an empty Messages tab because no format adapter claimed them.
-
Thread stats requests that opt into streaming now return the main stats first and add feedback stats when they are ready.
-
Native OpenTelemetry child spans are no longer dropped when they arrive before an SDK-attributed parent span; they are buffered and correctly nested regardless of arrival order.
-
When a runs query times out, the runs table now shows a timeout banner for better responsiveness.
-
LLM spans in the trace view now show the model provider’s brand logo (OpenAI, Anthropic, Google/Gemini, Azure, Mistral, DeepSeek, xAI, and speech providers), resolved from the run’s ls_provider metadata.
-
LangSmith now preserves traces in multipart ingestion batches when one run has oversized inputs or outputs. Oversized input and output fields are replaced with a placeholder instead of rejecting the entire batch.
-
Thread pages now show an explicit access-control message when trace loading is denied by ABAC, instead of a generic retrieval error.
-
All time filters in tracing views now query the full retention window instead of falling back to a shorter backend default. This keeps trace, thread, and run results consistent when expanding the time range.
-
OpenTelemetry traces from VS Code Copilot Chat now render as one clean nested trace per user turn. Auxiliary title/summary calls and orphaned tool spans are suppressed, message roles are corrected, token counts are de-duplicated, and standardized metadata (integration, agent runtime, thread ID, repo/git details) is attached automatically.
-
Insights cluster run stats (run count, latency, tokens, and feedback) now reflect only the runs in each cluster instead of showing the same project-wide totals for every cluster.
-
LangSmith Chat now authenticates to Chat LangChain with guest tokens when searching documentation, so docs answers keep working as Chat LangChain tightens authentication.
-
The Trace Messages viewer now identifies the “main” conversation for traces that include middleware guardrails or subagent side-conversations, so the message list shows only the primary interaction instead of interleaving middleware/subagent partitions. Correctness is verified by an expanded snapshot suite covering 11 integrations across LangChain, OpenAI Agents SDK, Vercel AI SDK, Claude Agent SDK, deepagents, and raw provider wrappers.
-
Fixed a bug where non-primitive metadata values did not appear in run details.
-
Custom dashboard charts can now query P50 and P99 for input and output costs without failing runs analytics requests.
-
Run stats scoped to an explicit run-id list (for example Insights per-cluster stats) now compute on SmithDB, which scopes results to those runs instead of falling back to project-wide totals.
-
The thread stats API now accepts a
filterquery parameter, letting you scope aggregated stats to traces matching a LangSmith filter expression (e.g. start time or trace ID). -
Organization model settings now let you search pricing rules by model name, match rule, or provider. Paginated loading fetches additional rules as you scroll, making large numbers of model price maps manageable.
-
LangSmith Chat now mints Managed Deep Agent guest tokens from the Chat LangChain LangGraph host (
POST /identity/guest) when searching documentation, instead of the legacy Chat LangChain frontend guest route. -
Assistant messages carrying tool calls were rendered twice in the v2 messages view for traces produced by the @anthropic-ai/sdk JavaScript SDK. Dedup now normalizes content-block field order so the same message emitted as an LLM output and replayed as an input on the next turn collapses to a single row.
-
Run errors whose stack trace arrived fully escaped (no real line breaks) now render as properly formatted multi-line text instead of one long wrapped line.
-
LangSmith MCP’s
fetch_runstool now acceptsmin_start_timeandmax_start_timearguments, so agents can search traces outside the default recent window. -
Adds a
GET /v2/runs/{run_id}/urlendpoint that returns the LangSmith UI URL for a specific run.
Engine
-
When an Engine project reaches its monthly spend limit, the Next Run status chip and project spend card now show a clear “Monthly spend limit reached” state with a button that takes you straight to raising the limit.
-
Upgrades the Redis client to improve recovery from Redis cluster topology changes, fixing cases where cluster reconnects could stall.
-
Engine now lets the parent agent recover from model-actionable subtask failures and retries transient provider or network errors before failing a run. This helps issue scans continue through recoverable model errors while preserving hard failures for auth, configuration, and code exceptions.
-
LangSmith exposes Engine issue listing and retrieval through hosted MCP tools and generated SDK methods. Agents and API clients can fetch issue details directly by issue ID or filter issues by project, status, severity, tag, and update time.
-
A new Engine board callout points you to the trace-scope setting, where you can restrict Engine’s reviews to runs matching a run name or metadata value.
-
Engine-generated examples with assertions now add the Assertions evaluator when saved to a dataset from an annotation queue, matching the direct Add offline examples flow.
-
The Engine setup screen now shows an estimated monthly cost based on the project’s recent trace volume and size, so you know roughly what to expect before starting analysis.
-
The Engine issue list now uses a single filter and sort menu with a compact, nested layout for Priority, Status, Tags, and Sort by, replacing the previous two separate popovers.
-
The Engine issue list now shows the active sort order as a removable chip next to your filter chips whenever it differs from the default.
-
Engine issues can now be marked Fixing or Watching, and you can get a Slack alert when new traces recur on a watched issue.
-
The Engine issue list no longer shows scan-timing details (next scan countdown, last run time, or a Run now action); a Pause/Resume control remains available in its own section in board settings.
-
Engine now verifies concrete claims in agent responses against trace evidence, improving detection of ungrounded artifacts, values, and claimed actions.
Prompts and playground
-
Self-hosted Playground and evaluator outbound model calls now honor proxy environment variables while preserving SSRF validation on every request.
-
When you save a prompt to an application from the playground, LangSmith keeps the workspace application filter on All Applications instead of switching the rest of the UI to that application.
-
Typing a workspace member’s name or email in the Context Hub search box now also returns the prompts and resources they created.
-
The playground now includes Claude Sonnet 5, Claude Fable 5, and Claude Opus 4.8 in the Anthropic, Bedrock, and Vertex AI model selectors. New Anthropic playground sessions default to Claude Sonnet 5.
-
Playground and evaluator calls to Amazon Bedrock using IAM Trusted Entity now resolve the correct LangSmith AWS credentials before assuming customer roles in AWS-hosted LangSmith. This fixes failures that reported “Failed to assume role” before the customer role was assumed.
-
Playground runs now retain evaluator scores and reasoning while backend feedback updates are polled, preventing completed results from appearing blank.
-
Outbound model calls that route through a forward proxy now send the original hostname in the proxy CONNECT tunnel instead of a resolved IP, so proxies that allowlist tunnel targets by domain no longer reject them. This fixes self-hosted Playground and evaluator calls to internal OpenAI-compatible endpoints reachable only through such a proxy.
-
Reviewing a prompt commit now displays every extra parameter (such as verbosity) set on the model, not just a fixed subset.
-
LangSmith now waits for model preset defaults to finish loading before initializing the Playground, preventing OpenAI from replacing a custom default preset during page load.
-
The model configuration default button now switches to a selected state when you make a preset your default.
-
Playground model settings now apply typed custom model names when the selector closes, so you no longer need to click the typed option explicitly.
-
Custom evaluator errors in the Playground results table now reliably show the failure message, instead of sometimes displaying a blank error indicator.
-
Configure workspace-wide HTTPS webhooks for every Context Hub commit, with signed payloads, custom headers, and secret rotation controls.
Feedback
-
Editing the score on evaluator-generated feedback (for example from the experiment comparison view) now saves correctly instead of failing with “Failed to add feedback correction”.
-
POST requests to add runs to an annotation queue accept an optional
extend_trace_retentionquery parameter. When set to false, short-lived traces are not upgraded to extended retention. The default remains true for backward compatibility. -
Adding feedback or reviewer notes from the LangSmith UI no longer upgrades short-lived traces to extended retention. Long-lived traces are unchanged.
-
Feedback statistics queries now route through the official ClickHouse client, resolving query failures and improving compatibility with ClickHouse 25.x.
-
Feedback creation resolves run metadata from SmithDB when the client provides session and start time, so SmithDB-only deployments no longer depend on ClickHouse for eager feedback writes.
-
Adding runs to an annotation queue via the by-key endpoint now falls back to the ClickHouse run lookup when SmithDB queries are disabled, so the SDK’s annotation-queue additions work regardless of whether SmithDB is enabled.
-
The POST /feedback/eager endpoint is deprecated in favor of POST /feedback and is scheduled for removal on 2026-08-10. Update any direct integrations calling /feedback/eager to use POST /feedback instead.
-
Feedback creation now accepts a thread identifier, enabling feedback to be associated with a conversation thread instead of only an individual run or session.
-
GET feedback requests can now filter by a thread ID within a project, making thread-level feedback retrievable without resolving a run first.
-
Annotation queue rubric feedback now loads the thread-scoped feedback for thread queue items.
-
Annotation queue rubric feedback now saves against the selected thread for thread queue items.
Monitoring and alerting
-
Alert chart previews now handle relative date ranges consistently, preventing failures when loading 14-day or 30-day previews.
-
Dashboard chart tooltips and axes now show up to eight fractional digits (previously two), so very small costs and rates no longer round down to zero.
-
Time-series charts on custom dashboards now leave gaps for missing data points instead of plotting them as zero, and lines connect across those gaps so trends remain readable.
-
When a custom dashboard chart has no data or would produce too many bins, the empty state now surfaces the active stride (e.g. 1M) and selected range (e.g. Last 12 hours) so it’s clear what to adjust.
-
When hovering the +N chip in a dashboard chart’s legend, the expanded popover now paints above adjacent chart cards instead of being clipped behind them.
-
Metadata grouping keys without returned values no longer show a misleading empty value tooltip in dashboards.
Automations
-
Applying a prebuilt evaluator without a filter now defaults to running on root runs only, matching manually created evaluators. Previously it ran on every nested run in a trace.
-
Turning an online evaluator or automation on or off now saves for any role that can edit rules, instead of silently reverting for members without the retention-configuration permission.
-
Resolved an unbounded memory leak in the SAQ queue worker where croniter objects were rebuilt every second, accumulating cached entries that were never released. The croniter dependency is bumped to 6.2.2+ and croniter objects are now reused across schedule ticks.
Deployment
-
Self-hosted deployments can now request CPU and memory above the previous Cloud limits of 8/16 cores and 32/16 GB, bounded only by your cluster capacity. Lower bounds, multiple-of-128 granularity, and Redis memory ordering are still enforced.
-
Custom Slack app triggers can now opt in to let third-party bots trigger an agent. Enable the allow bot triggers toggle on a registration to accept events from external bots; echoes from your own and other LangSmith-registered bots are still dropped to prevent loops.
-
Agents now skip unreachable or misconfigured non-default MCP servers immediately instead of retrying them, removing a slow round-trip from the tool-loading step and cutting time-to-first-token.
-
Standby (uptime) minutes for LangGraph Platform deployments could be billed more than once when replicas reported overlapping intervals across separate usage-reporting runs. Reporting now deduplicates each minute across runs so it is billed at most once.
-
The multi-select dropdown (e.g. Selected Tools) on the Studio assistants page now renders above the configuration dialog instead of behind it, so its options are visible and selectable.
-
Redis connections using Microsoft Entra ID (Azure IAM) authentication now re-authenticate automatically before the access token expires, so long-lived connections no longer drop. Clustered Azure Redis is now supported for IAM auth as well.
-
The deployment Crons tab now shows each schedule in your local timezone instead of raw UTC, matching the Next Run Date column.
-
LangSmith Deployment now supports updating a deployment to a fixed resource tier through the control plane API. The update applies the selected tier’s resource configuration, resizes Cloud SQL or RDS, and rolls a new revision.
-
You can now edit an existing cron’s schedule, input, and end time from a deployment’s Crons tab, instead of deleting and recreating it.
-
You can now rename a deployment from its Settings — give it a friendly display name without recreating it. The deployment’s URLs and infrastructure are unchanged.
-
LangSmith frontend images now install nginx 1.31 packages to pick up the latest Chainguard security fixes.
-
Deployment creation now checks free deployment usage with the same backend quota count used during submission, preventing the form from offering a free Serverless or Development option when the organization quota is already used.
-
LangSmith Deployment now lets you update compute and database resource tiers independently for supported hosted deployments. The scaling action applies the selected resources and rolls out a new revision.
-
Hosted project deployment views now label scale-to-zero development deployments as Serverless, with free deployments shown as Serverless (free).
-
The deployment form now shows the free serverless option immediately while checking an organization’s remaining deployment allowance.
-
Refines error handling when attempting to create a deployment with no GitHub repository selected.
-
Serverless deployments can now update compute tiers correctly without requiring an external database tier.
-
Self-hosted deployments now authenticate correctly to node-based AWS ElastiCache with IAM in both single-node and cluster configurations.
Sandboxes
-
Sandbox command output is now re-chunked into bounded single WebSocket frames, so clients that do not reassemble continuation frames (including the Go SDK) can read large streamed or replayed output without truncated JSON.
-
S3 sandbox mounts now default endpoint_url to https://s3.amazonaws.com when it is not provided, so the field is no longer required when mounting standard AWS S3 buckets.
-
Sandboxes can now burst CPU up to 2x their requested allocation when the host has spare capacity, and you can request fractional (sub-core) vCPU down to 0.05.
-
When creating a sandbox, you can now configure Git, S3, and GCS filesystem mounts, including mount paths, Git remotes, bucket settings, and cache options. Configured mounts appear in the sandbox table and detail view.
-
The LangSmith SDKs now support creating, listing, updating, and deleting sandbox registries for pulling private container images, alongside the existing sandbox and snapshot operations.
-
Sandbox creation no longer fails intermittently with “sandbox not ready” errors when an underlying host is disrupted. Affected capacity now retries the contended resource lock and recovers automatically instead of leaving the pool degraded.
-
Sandbox host startup now validates the full version directory before reuse, so a missing initrd no longer causes create-time failures after a partial or stale install.
-
Creating a sandbox snapshot from a Docker image now records the image’s tag (e.g. ubuntu:24.04 becomes the 24.04 tag), and creating a sandbox from a snapshot name without a tag resolves the latest tag, mirroring Docker.
-
Self-hosted LangSmith installations now show the Sandboxes navigation item and use the instance-level sandbox flag to open the Sandboxes page.
-
Shells and tools inside a sandbox now report the sandbox’s name as the hostname instead of a generic default, and the name resolves from within the sandbox.
-
Self-hosted LangSmith installations can open the Sandboxes page without enabling the Deployments frontend.
-
Sandboxes now set common CA-bundle environment variables by default, so Python, Node, Deno, curl, and git tooling automatically trusts the sandbox’s egress proxy certificate and no longer fails with TLS certificate-verification errors when its traffic is proxied.
-
Sandboxes can now opt into keeping their memory when they stop, so the next start resumes where it left off instead of cold-booting. Set preserve_memory_on_stop when creating a sandbox; it defaults to off.
Administration
-
The roles table on the Organization Roles settings page now scrolls correctly when there are more roles than fit on screen.
-
A new Project and user limits tab on the enterprise Usage configuration page lets you set monthly trace-count limits scoped to a specific project or user. Add, edit, and delete limits from the page.
-
Anonymous organizations now show an “Anonymity mode is on” banner on the members page, and the usage breakdown hides the group-by-user option for non-internal viewers.
-
New API keys now default to a finite expiration date instead of requiring a custom value. When an organization enforces a shorter maximum, the form defaults to that maximum instead.
-
You can now fetch a single workspace directly via GET /api/v1/workspaces/ instead of listing all workspaces and filtering client-side.
-
Org and workspace admins can now edit the role of a pending member invite directly from the Members settings page, without needing to cancel and re-send the invite.
-
The Usage limits page now shows each workspace’s configured total and extended (long-lived) trace limits, including caps that were previously hidden while the spend limit displayed “Unlimited”.
-
The batch workspace invite endpoint no longer returns a 409 error when inviting users who are already pending org invitees or active org members. Those users are added directly to the workspace without requiring a new org invite.
-
The role selector in the edit pending member invite dialog now uses a scrollable select, matching the invite flow. This ensures all custom roles are accessible when many workspace roles are defined.
-
Self-hosted deployments can now encode spaces in the OIDC authorization request as %20 instead of +, so single sign-on works with identity providers that reject the default + encoding of the scope list. Enable it by setting OAUTH_URL_ENCODE_SCOPE_SPACES=true.
-
Billing upgrade dialogs now stay within the viewport and scroll when payment or business details make the form taller than the screen.
-
Non-admin callers with manage-members permission can no longer assign restricted roles to workspace members or invite users with restricted roles to the workspace.
-
Filter the organization’s service keys and personal access tokens by workspace on the API keys settings page.
-
Users without workspaces:manage permission cannot use restricted roles for invites, role changes, or user deletions in the UI.
-
Organization admins can disable model providers across every workspace from organization settings. Disabled providers are hidden in the playground, evaluators, Fleet, and other model pickers, and workspace admins cannot re-enable them.
-
Adding existing active or pending organization members to a workspace no longer fails when organization-level invites are disabled. Disabled org invites continue to block new organization invitees.
-
The Roles settings page now scrolls correctly when an organization has more roles than fit on screen.
-
Organization admins can once again edit the role of and remove other organization admins from the Organization Members settings page. Organization Operators, who share the same admin-level permissions but should not manage other admins, are now correctly prevented from editing, removing, or promoting members to Organization Admin.
-
The email confirmation page now shows only the Confirm account step in the sidebar instead of future onboarding steps you have not reached yet.
-
Self-hosted deployments now apply explicit DEFAULT_ORG_FEATURE_* and DEFAULT_FEATURE_* environment variables over stored organization and tenant config values, so operators can enable or disable features and limits globally without editing Postgres.
-
The navigation product switcher now shows the configured organization logo alongside the LangSmith or Fleet wordmark instead of repeating the organization logo.
-
Organization admins can now toggle role restriction from the Roles settings page. Restricted roles can only be assigned by users with the workspaces:manage permission.
-
The organization-wide public sharing toggle now lives on the General settings page alongside the other organization settings, replacing its standalone Configuration section.
-
When a user is removed from all mapped SSO groups, the organization and workspace access granted through SSO group sync is revoked on their next sign-in. Access assigned by other means (SCIM, JIT, or manual invitation) is unaffected.
-
Workspace invite batch requests are now rate limited per workspace to reduce bulk invitation abuse. Learn more.
-
Workspace switcher labels now show the full workspace name on hover when the visible label is truncated. This makes similarly prefixed workspace names easier to distinguish.
-
LangSmith Home now shows a banner promoting Interrupt, our agent conference in London and NYC this fall, with a link to get tickets.
-
Some new users could get stuck on the last onboarding step, with a loading spinner that never finished. This is now fixed.
-
Organization admins can now rename their organization directly from the organization switcher in settings.
-
Organization admins can now generate, view, and delete SCIM bearer tokens directly from Settings > Access and Security, instead of using the API, to set up SCIM provisioning with their identity provider. Learn more.
LLM Gateway
-
LLM gateway data protection policies can now configure whether a guard pipeline timeout allows the request through or blocks it. Existing policies default to allowing requests on timeout.
-
The LLM gateway now supports POST /openai/v1/responses/compact (and the legacy /responses/compact), routing it through the chat-shape responses handler.
-
Guard policies now let you choose which PII rule categories to detect, with separate faster rule-based and slower model-based detection options, instead of a single on/off PII toggle.
-
Gateway guard secret redaction now detects additional token formats, including SendGrid API tokens, Google OAuth access tokens, JWTs, Slack webhook URLs, and legacy LangSmith keys.
-
When a gateway spend-cap policy targets more than one user, workspace, or API key, the create/edit policy form now explains that the limit applies to the combined spend across the selected entities rather than per entity.
-
The LLM gateway now forwards every documented OpenAI API route it does not handle directly (models, files, batches, images, and more) to the upstream provider, so clients can reach the full OpenAI surface through the gateway. Custom OpenAI-compatible providers inherit the same passthrough routes.
-
The LLM Gateway policies page now lets you sort each section by spend limit or usage percentage, and filter down to a specific workspace, user, or API key.
-
LLM gateway data protection redaction now prepends a short disclaimer to redacted message text so models know SAFE_TO_USE placeholders are safe to reuse verbatim.
-
The LLM Gateway now proxies Anthropic’s Files and Managed Agents endpoints, so you can use them with your gateway-managed workspace key alongside Messages and Models.
-
Creating an LLM Gateway spend or data protection policy now applies to the organization you are signed in to, replacing the organization dropdown with a read-only display of the current organization.
-
Long selected values, like a user’s email in the Gateway Policies filter, now truncate with an ellipsis instead of overlapping the dropdown chevron.
-
The LLM Gateway now accepts workspace-scoped LangSmith OAuth bearer tokens across its provider routes, so OAuth clients can invoke configured models without a LangSmith API key.
Other
- When you add runs to an annotation queue without specifying
extend_trace_retention, short-lived traces stay on short-lived retention. Passextend_trace_retention=trueto upgrade traces to extended retention.
Fetched July 30, 2026

