Skip to content

mlflow

v3.12.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

Published 29d Tracing
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

agentops agents ai ai-governance apache-spark evaluation
+10 more
langchain llm-evaluation llmops machine-learning mlflow mlops model-management observability openai prompt-engineering

Summary

AI summary

[Scoring] Deprecate enable_mlserver in pyfunc serving backend

Full changelog

MLflow 3.12.0 includes several major features and improvements

Major New Features

  • 🖼️ Multimodal Tracing: Users can now store multimodal content in tracing spans as artifact attachments instead of inline binary data. We've also patched the UI to support the new mlflow-attachment:// style URI, with rich rendering available for PDFs, audio, and images.
  • 🤖 Codex, Gemini, Qwen coding agent tracing support: Similar to our Claude Code tracing integration, we've now added support for the Codex, Gemini, and Qwen coding agent platforms as well!
  • 🛡️ Gateway guardrails: You can now set guardrails on your gateway endpoints to prevent unsafe or non-compliant model inputs and outputs. Try it out in the MLflow UI!
  • ⚡ Trace table pagination: The traces tab is now paginated, rather than fetching all traces up to a limit of 1000. This improves initial load time, and makes the page feel more responsive overall.

Breaking Changes

  • [Scoring] Deprecate enable_mlserver in pyfunc serving backend (#22994, @B-Step62)

Other Assorted Features & Improvements:

  • [UI] Add coding agents section to AI Gateway quick start (#23006, @TomeHirata)
  • [Tracing] feat: record caller in gateway traces from request headers (#22926, @TomeHirata)
  • [] Run guardrails on passthrough endpoints; skip response_format for non-chat payloads (#22856, @TomeHirata)
  • [] Gateway: preserve client auth header for subscription-based CLI tools (claude-cli, Codex-Desktop, GeminiCLI) (#22915, @TomeHirata)
  • [Tracing] Expose Codex and Qwen Code hooks as installable CLI binaries (#22853, @kriscon-db)
  • [Tracking / UI] Add Portkey as a supported AI Gateway provider (#22830, @sairavuri-sudo)
  • [Tracking] Cache successful basic-auth credential checks to eliminate per-request PBKDF2 (#22817, @PattaraS)
  • [] Add last_updated_at field to model catalog entries (#22838, @copilot-swe-agent)
  • [Evaluation] Enable third-party scorer registration in OSS MLflow (#22634, @smoorjani)
  • [] Add platform-side telemetry fields to Gateway invocation and budget events (#22557, @PattaraS)
  • [Tracing] Auto-start SQL warehouse before V4/V5 MLflow tracing calls (#22798, @artjen)
  • [Tracing] Migrate Claude Code tracing to TypeScript-based plugin for simpler installation and runtime handling. (#22338, @B-Step62)
  • [Tracing] Add TypeScript Qwen Code tracing via Stop hook (#22411, @kriscon-db)
  • [] Support model_kwargs in DeepEval scorers for LLM parameter control (#22494, @debu-sinha)
  • [] Add Application Default Credentials auth mode for Vertex AI gateway (#22754, @harupy)
  • [UI] Reorganize Settings into section-based routing with sub-sidebar navigation (#22743, @serena-ruan)
  • [Tracing] Add TypeScript Codex CLI tracing via notify hook (#22410, @kriscon-db)
  • [Tracing / UI] Add Share button to trace detail view (#22608, @alkispoly-db)
  • [Docs / Models] Add mlflow.diffusers flavor for diffusion model LoRA adapters (#22253, @Rasaboun)
  • [Tracing] Add size limit for trace attachments (#22575, @kriscon-db)
  • [Tracing] Add GeminiCliTranslator for Gemini CLI OTLP span type mapping (#22409, @kriscon-db)
  • [Tracing] Add JSON OTLP encoding support for trace ingestion (#22408, @kriscon-db)
  • [Tracing] Extract service.name from OTLP resource attributes for usage telemetry (#22407, @kriscon-db)
  • [Tracing] Add MLflow tracing spans to guardrail execution in gateway (#22581, @TomeHirata)
  • [Tracing / UI] Add rendering size guards for large media content (#22574, @kriscon-db)
  • [Tracking] #21037 Add presigned upload URL endpoint for S3 artifact uploads (#21039, @henishborad)
  • [UI] Add Guardrails tab to endpoint editor (#22360, @TomeHirata)
  • [UI] Add click-to-expand modal for trace attachment images (#22461, @kriscon-db)
  • [UI] Enhance Gateway quick start cards with logos, multi-model options, and compact variant (#22513, @xq-yin)
  • [Tracing] Add @mlflow/vercel for better Vercel AI SDK tracing in Databricks UC (#22105, @dbrx-euirim)
  • [UI] [UI] Refactor API keys page: bulk delete, inline drawer editing, consistent list pattern (#22485, @xq-yin)
  • [] Add Guardrail base class and JudgeGuardrail implementation (#21964, @TomeHirata)
  • [Tracing] Add multimodal demo traces with synthetic image and audio data (#22465, @kriscon-db)
  • [] [FR] #22217 Add configurable provider allow/deny list to AI Gateway (#22291, @etirelli)
  • [UI] [UI] Add bulk duplicate and delete actions to AI Gateway endpoints table (#22404, @xq-yin)
  • [UI] Redesign endpoint details model section with unified Model card (#22376, @xq-yin)
  • [] Add X-MLflow-Gateway-Duration-Ms and X-MLflow-Gateway-Overhead-Duration-Ms response headers (#22229, @PattaraS)
  • [UI] Redesign AI Gateway endpoint details: Overview tab, starter code, and Try in Browser (#22284, @xq-yin)
  • [] Add guardrail proto definitions, server handlers, and REST store (#21962, @TomeHirata)
  • [Build] Add aiohttp as a core dependency of mlflow (#22189, @TomeHirata)
  • [] Add gateway guardrail DB layer: schema, store methods, and tests (#21960, @TomeHirata)
  • [UI] Add quick-start template cards to AI Gateway empty state (#22249, @xq-yin)
  • [Tracing / UI] Add freeform Notes section to trace assessments pane (#21676, @smoorjani)
  • [Tracing / UI] [UI] Improve traces table visual design and UX (#20424, @ridgupta26)
  • [UI] Improve Image Grid chart UX for multi-run image comparison (#22118, @Rasaboun)
  • [Models] Add base_model_path parameter to save PEFT adapter-only with local base model reference (#22052, @rpathade)
  • [Tracking] Add mlflow db move-resources command to move resources between workspaces (#21263, @mprahl)
  • [Tracking] feat(tracking): Add composite index on metrics (run_uuid, key, step) (#21727, @ravidarbha)

Bug fixes:

  • [Tracing / Tracking] Redact presigned URL credentials in urllib3 retry logs (#22995, @B-Step62)
  • [Tracing] Fix assessment logging silently dropped in distributed tracing (#22963, @serena-ruan)
  • [] Filter _list_budget_windows results by active workspace when request is workspace-scoped (#22885, @copilot-swe-agent)
  • [Models / Scoring] Fix uv custom index URLs omitted from model requirements.txt (#22921, @serena-ruan)
  • [Tracing / UI] Set mlflow.message.format on gateway passthrough spans to enable Chat tab (#22916, @TomeHirata)
  • [Server-infra] Add RBAC regression tests + gateway validator fix (#22862, @PattaraS)
  • [Server-infra] Include role-based grants in list_accessible_workspace_names (#22864, @PattaraS)
  • [Tracing] Preserve cache_read tokens in claude_code tracing for cache observability (#22683, @dgokeeffe)
  • [Tracing] Fix InferenceTableSpanProcessor init for opentelemetry-sdk 1.41.0 (#22867, @harupy)
  • [UI] Fix audio artifact viewer failing in non-default workspaces (#22811, @harupy)
  • [Tracking] Fix O(n^2) body buffering in WSGIMiddleware for large uploads (#22729, @harupy)
  • [Tracking] Propagate workspace_id as X-Databricks-Org-Id header for SPOG support (#22554, @B-Step62)
  • [UI] Fix sessions pagination not auto-loading after virtualizer settles (#22808, @daniellok-db)
  • [Tracing] Fix _get_token_usage dropping zero-valued token counts (#22748, @copilot-swe-agent)
  • [Tracing] Fix _get_token_usage dropping cache token fields (#22818, @harupy)
  • [UI] Remove rendering size guards from artifact image and video views (#22816, @kriscon-db)
  • [UI] Disable Create Guardrail in AddGuardrailModal until a Guardrail Model endpoint is selected (#22766, @copilot-swe-agent)
  • [UI] Disable Guardrails tab in EditEndpointFormRenderer when endpoint.experiment_id is null, refresh i18n messages, and fix JS type-check follow-ups (#22757, @copilot-swe-agent)
  • [] Fix OPENAI_API_KEY requirement when guardrails use gateway:/ judge model (#22769, @TomeHirata)
  • [Tracking] Fix ABFSS URI double-encoding in _parse_abfss_uri (#22759, @artjen)
  • [UI] Persist immediate gateway usage-tracking updates and preserve dirty edits in useEditEndpointForm (#22734, @copilot-swe-agent)
  • [] Fix Vertex AI gateway global location handling for Gemini 3 models (#22696, @harupy)
  • [Tracing] Fix ValueError: Circular reference detected crash in dump_span_attribute_value (pydantic_ai autolog) (#22693, @barry3406)
  • [Tracing] Add Bedrock Converse models to model catalog (#22515, @ajgassner)
  • [Tracing] Fix incorrect cost calculation for Anthropic cached requests (#22516, @ajgassner)
  • [UI] Disable Create button when experiment name is empty (#22649, @ssam18)
  • [Tracing] Fix AsyncHttpxClientWrapper AttributeError by avoiding deepcopy in TraceJSONEncoder (#22742, @harupy)
  • [Evaluation] Fix JSON parsing failure for judge model responses containing newlines (#22736, @harupy)
  • [Evaluation] Fix non-ASCII characters being escaped in judge template variables (#22728, @harupy)
  • [Tracking] Fix pandas 3.x datetime64 resolution compatibility in cast_df_types_according_to_schema (#22705, @copilot-swe-agent)
  • [Tracing] Fix conversation simulator adding wrapper span that breaks custom scorers (#21321, @B-Step62)
  • [] Fix Bedrock tool-use chat response parsing (#22677, @lavaFreak)
  • [UI] Fix AI Gateway provider dropdown by flattening OpenAI / Azure OpenAI (#22701, @harupy)
  • [Evaluation / Tracing] Preserve predict_fn signature in simulation turn tracing (#22610, @rogalski)
  • [Tracing / Tracking] fix: Extract cached_tokens in OpenAI streaming responses to correct cost tracking (#22620, @Rishabh-git10)
  • [Tracing / UI] Auto-select first endpoint and API key in issue detection modal (#22633, @serena-ruan)
  • [Model Registry] Use SQL MAX() in create_model_version instead of loading all rows (#22635, @neolunar7)
  • [Tracing] Add modality/tool pricing extraction to dev/update_model_catalog.py, backfill anthropic.json / gemini.json, and skip reasoning modality pricing (#22699, @copilot-swe-agent)
  • [Tracing] Fix pydantic-ai run_stream_sync autologging broken by AgentSpec forward reference in _returns_sync_streamed_result (#22666, @copilot-swe-agent)
  • [UI] Unify execution duration cell rendering in session header rows (#22631, @daniellok-db)
  • [] Implement guardrail execution in gateway API handlers (#22306, @TomeHirata)
  • [Tracing / Tracking] Fast-path trace-id search in frontend to avoid spans.content scan (#22433, @harupy)
  • [UI] Fix tag cutoff in prompts table (#22507, @nananosirova)
  • [Scoring] Fix pandas 3.0 StringDtype mismatch in cast_df_types_according_to_schema (#22537, @copilot-swe-agent)
  • [Tracing] Fix exception propagation in @mlflow.trace within @trace_disabled context (#22501, @harupy)
  • [UI] [UI] Show header and breadcrumb on gateway usage page when no endpoints exist (#22445, @xq-yin)
  • [Model Registry] Fix performance degradation for single-tenant installation (#22405, @abaland)
  • [UI] Render attachments inline in Details & Timeline span view (#22451, @kriscon-db)
  • [UI] Skip markdown rendering for oversized chat content to prevent browser freezes (#22464, @kriscon-db)
  • [UI] Render attachment images embedded in complex JSON structures (#22462, @kriscon-db)
  • [UI] Handle input_file content type in Responses API chat rendering (#22466, @kriscon-db)
  • [UI] Fall back to OpenAI parser for LangChain traces with OpenAI-format data (#22456, @kriscon-db)
  • [UI] Combine multi-part Responses API input into a single chat message (#22459, @kriscon-db)
  • [UI] Render text content before audio parts in chat messages (#22460, @kriscon-db)
  • [Tracing] Handle Gemini SDK bytes repr format in inline_data extraction (#22453, @kriscon-db)
  • [UI] Show all output fields alongside attachment renderings in summary view (#22449, @kriscon-db)
  • [UI] Handle single dict contents in Gemini chat input normalization (#22455, @kriscon-db)
  • [UI] Fix audio player not loading on first render in attachment view (#22450, @kriscon-db)
  • [UI] Allow Gemini chat rendering when role field is omitted (#22454, @kriscon-db)
  • [Evaluation] Add server side check for registering custom scorer (#22381, @WeichenXu123)
  • [UI] [UI] Cache gateway provider/model queries to eliminate redundant fetches (#22440, @xq-yin)
  • [Tracing] Eager-load trace relationships in search_traces (#22431, @harupy)
  • [Model Registry] Fix cross-workspace copy_model_version failure caused by get_logged_model call (#22262, @TomeHirata)
  • [UI] [UI] Fix endpoint details to display all API keys for multi-model endpoints (#22406, @xq-yin)
  • [UI] Fix tag cutoff in experiments table (#21871, @nananosirova)
  • [Tracking] Fix rename_experiment in SqlAlchemyStore to enforce 500-char name limit (#22418, @copilot-swe-agent)
  • [Tracking] Fix download_artifacts and list_artifacts returning wrong status for missing artifacts (#22310, @Karim-siala)
  • [Docs / Tracing] Enable async trace logging by default for OSS MLflow (#22304, @PattaraS)
  • [UI] Show Save/Cancel buttons only when endpoint has unsaved changes (#22367, @xq-yin)
  • [UI] Remove mp4 from AUDIO_EXTENSIONS to fix video artifact preview (#22350, @copilot-swe-agent)
  • [Evaluation] Fix MetaPromptOptimizer failing on prompts with no template variables (#22301, @alkispoly-db)
  • [Prompts / UI] Fix misleading placeholder text in PromptsListFilters (#22321, @copilot-swe-agent)
  • [Evaluation] Fix make_judge with bool/numeric types not reporting aggregated metrics in evaluate() (#22302, @alkispoly-db)
  • [UI] Fix dark mode CSS not consistently applied in compare runs page (#22254, @DaoDaoNoCode)
  • [Tracking] Fix 500 error in start_trace when merging traces with existing metrics (#22257, @alkispoly-db)
  • [Model Registry / Tracing / Tracking] Fix _all_tables_exist to derive expected_tables from Base.metadata dynamically (#22128, @copilot-swe-agent)
  • [UI] Hide 'Show more columns' button when runs are selected (#21867, @nananosirova)
  • [Evaluation] Support T | None as top-level feedback_value_type in make_judge (#22201, @copilot-swe-agent)
  • [UI] Fix dataset details drawer: local source display, profile parsing, broken link (#22143, @Rasaboun)
  • [Tracking] Fix --static-prefix not applied to /api/ REST routes (#22159, @TomeHirata)
  • [Tracing / Tracking] Map user.id span attribute to mlflow.trace.user during OTel ingestion (#22150, @ajgassner)

Documentation updates:

  • [Docs] Docs: Add AI Gateway CLI Tools pages (Claude Code, Codex, Gemini CLI) (#22918, @TomeHirata)
  • [Docs / Tracing / UI] Add documentation for Codex CLI, Gemini CLI, and Qwen Code tracing (#22412, @kriscon-db)
  • [Docs] Add Live Demo documentation page for demo.mlflow.org (#22840, @serena-ruan)
  • [Docs] Docs: Adds Middleware in the tracing section for integrated observability platforms (#22791, @luharshekhar2000-dot)
  • [Docs / UI] Rename guardrail stage terminology to Pre-LLM / Post-LLM across guardrail_utils.py, Gateway API, UI, docs, and guardrailValidation.ts (#22767, @copilot-swe-agent)
  • [Docs] Fix EvaluationDataset type references in GenAI datasets docs (#22761, @harupy)
  • [Docs] docs: add guardrails documentation for AI Gateway (#22577, @TomeHirata)
  • [] Allow different PGPORT in docker compose (#22646, @riklopfer)
  • [Docs] Remove docs/docs/genai/governance/ai-gateway/legacy/* and redirect legacy AI Gateway routes to ai-gateway/index (#22579, @copilot-swe-agent)
  • [Docs] Remove unused parameter from invocation() function example in manual tracing docs (#22524, @prithvipal)
  • [Docs] Document uv run --frozen flag for offline/no-network usage in CLAUDE.md (#22505, @copilot-swe-agent)
  • [Docs] Add documentation for multimodal trace attachments (#21783, @kriscon-db)
  • [Docs] Add AI Gateway Performance & Benchmarks docs page (#22390, @copilot-swe-agent)
  • [Docs] Update changelog for 3.11.0 release (#22394, @WeichenXu123)

Small bug fixes and documentation updates:

#22993, #22978, #21482, #21321, #22559, #21319, #22483, #22346, #22091, @B-Step62; #22919, #22925, #22854, #22821, #22786, #22820, #22615, #22819, #22781, #22703, #22565, #22200, #22193, @serena-ruan; #22869, #22863, #22843, #22839, #22837, #22815, #22765, #22762, #22749, #22708, #22486, #22481, #22471, #22401, #22366, #22278, #22281, @harupy; #22848, #22775, #22764, #22763, #22772, #22527, #22435, #22358, #22357, #22356, #22355, #22261, #22259, #22202, #22234, #22243, @TomeHirata; #22824, @vinh412; #22805, #22804, #22803, #22802, #22801, #22800, #22447, #22632, #22735, #22697, #22691, #22508, #22628, #22567, #22482, #22441, #22273, #22272, #22190, #22434, #22154, #22147, #22144, #22268, #22241, #22187, #22074, @daniellok-db; #22557, #22722, #22807, #22721, #22558, #22589, #22319, #22145, #21789, @PattaraS; #22825, #22783, #22789, #22787, #22784, #22782, #22757, #22771, #22770, #22758, #22756, #22755, #22744, #22737, #22715, #22718, #22714, #22713, #22711, #22710, #22707, #22704, #22700, #22692, #22686, #22690, #22689, #22688, #22684, #22685, #22682, #22670, #22669, #22668, #22667, #22664, #22663, #22662, #22655, #22657, #22659, #22601, #22580, #22578, #22576, #22563, #22550, #22549, #22548, #22547, #22545, #22544, #22541, #22540, #22539, #22538, #22511, #22532, #22529, #22528, #22526, #22523, #22525, #22519, #22518, #22517, #22514, #22512, #22509, #22510, #22506, #22504, #22490, #22488, #22480, #22478, #22477, #22470, #22468, #22443, #22438, #22436, #21203, #22417, #22403, #22413, #22399, #22395, #22391, #22392, #22388, #22379, #22348, #22347, #22343, #22341, #22342, #22340, #22339, #22337, #22330, #22329, #22328, #22316, #22309, #22305, #22250, #22207, #22204, #22198, #22177, #22174, @copilot-swe-agent; #22795, @rollyjoel; #22629, #22730, #22614, #22573, #22334, #22502, #22448, #22196, #22263, #22186, #22185, #22184, #21956, #22183, #22246, #21955, @kriscon-db; #22627, #22238, @xsh310; #22295, #22212, @smoorjani; #22463, #22370, #22365, #22240, #22226, @xq-yin; #22473, #22439, #22437, @WeichenXu123; #22387, #21419, @mprahl; #22382, #22373, @SeldonAi; #21848, @alkispoly-db; #22160, @amotl

Breaking Changes

  • [Scoring] Deprecate `enable_mlserver` in pyfunc serving backend

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track mlflow

Get notified when new releases ship.

Sign up free

About mlflow

The open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.

All releases →

Related context

Beta — feedback welcome: [email protected]