Routine maintenance and dependency updates.
Release history
mlflow releases
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
7 shown
- [Scoring] Deprecate `enable_mlserver` in pyfunc serving backend
- Multimodal Tracing: store multimodal content as artifact attachments with mlflow-attachment:// URIs
- Gateway guardrails: set guardrails on gateway endpoints to block unsafe or non‑compliant inputs/outputs
- Trace table pagination: traces tab now paginated instead of loading up to 1000 entries
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_mlserverin 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_formatfor 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_atfield 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_kwargsin 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
notifyhook (#22410, @kriscon-db) - [Tracing / UI] Add Share button to trace detail view (#22608, @alkispoly-db)
- [Docs / Models] Add
mlflow.diffusersflavor for diffusion model LoRA adapters (#22253, @Rasaboun) - [Tracing] Add size limit for trace attachments (#22575, @kriscon-db)
- [Tracing] Add
GeminiCliTranslatorfor Gemini CLI OTLP span type mapping (#22409, @kriscon-db) - [Tracing] Add JSON OTLP encoding support for trace ingestion (#22408, @kriscon-db)
- [Tracing] Extract
service.namefrom 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
Guardrailbase class andJudgeGuardrailimplementation (#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-MsandX-MLflow-Gateway-Overhead-Duration-Msresponse 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
aiohttpas a core dependency ofmlflow(#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_pathparameter to save PEFT adapter-only with local base model reference (#22052, @rpathade) - [Tracking] Add
mlflow db move-resourcescommand 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_windowsresults 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.formaton 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
InferenceTableSpanProcessorinit 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
WSGIMiddlewarefor large uploads (#22729, @harupy) - [Tracking] Propagate
workspace_idasX-Databricks-Org-Idheader for SPOG support (#22554, @B-Step62) - [UI] Fix sessions pagination not auto-loading after virtualizer settles (#22808, @daniellok-db)
- [Tracing] Fix
_get_token_usagedropping zero-valued token counts (#22748, @copilot-swe-agent) - [Tracing] Fix
_get_token_usagedropping cache token fields (#22818, @harupy) - [UI] Remove rendering size guards from artifact image and video views (#22816, @kriscon-db)
- [UI] Disable
Create GuardrailinAddGuardrailModaluntil aGuardrail Modelendpoint is selected (#22766, @copilot-swe-agent) - [UI] Disable
Guardrailstab inEditEndpointFormRendererwhenendpoint.experiment_idis 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
globallocation handling for Gemini 3 models (#22696, @harupy) - [Tracing] Fix
ValueError: Circular reference detectedcrash indump_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
AsyncHttpxClientWrapperAttributeErrorby avoidingdeepcopyinTraceJSONEncoder(#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
datetime64resolution compatibility incast_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_fnsignature in simulation turn tracing (#22610, @rogalski) - [Tracing / Tracking] fix: Extract
cached_tokensin 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()increate_model_versioninstead of loading all rows (#22635, @neolunar7) - [Tracing] Add modality/tool pricing extraction to
dev/update_model_catalog.py, backfillanthropic.json/gemini.json, and skipreasoningmodality pricing (#22699, @copilot-swe-agent) - [Tracing] Fix pydantic-ai
run_stream_syncautologging broken byAgentSpecforward 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.contentscan (#22433, @harupy) - [UI] Fix tag cutoff in prompts table (#22507, @nananosirova)
- [Scoring] Fix pandas 3.0
StringDtypemismatch incast_df_types_according_to_schema(#22537, @copilot-swe-agent) - [Tracing] Fix exception propagation in
@mlflow.tracewithin@trace_disabledcontext (#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_filecontent 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_dataextraction (#22453, @kriscon-db) - [UI] Show all output fields alongside attachment renderings in summary view (#22449, @kriscon-db)
- [UI] Handle single dict
contentsin 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
rolefield 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_versionfailure caused byget_logged_modelcall (#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_experimentinSqlAlchemyStoreto 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
mp4fromAUDIO_EXTENSIONSto fix video artifact preview (#22350, @copilot-swe-agent) - [Evaluation] Fix
MetaPromptOptimizerfailing on prompts with no template variables (#22301, @alkispoly-db) - [Prompts / UI] Fix misleading placeholder text in
PromptsListFilters(#22321, @copilot-swe-agent) - [Evaluation] Fix
make_judgewithbool/numeric types not reporting aggregated metrics inevaluate()(#22302, @alkispoly-db) - [UI] Fix dark mode CSS not consistently applied in compare runs page (#22254, @DaoDaoNoCode)
- [Tracking] Fix 500 error in
start_tracewhen merging traces with existing metrics (#22257, @alkispoly-db) - [Model Registry / Tracing / Tracking] Fix
_all_tables_existto deriveexpected_tablesfromBase.metadatadynamically (#22128, @copilot-swe-agent) - [UI] Hide 'Show more columns' button when runs are selected (#21867, @nananosirova)
- [Evaluation] Support
T | Noneas top-levelfeedback_value_typeinmake_judge(#22201, @copilot-swe-agent) - [UI] Fix dataset details drawer: local source display, profile parsing, broken link (#22143, @Rasaboun)
- [Tracking] Fix
--static-prefixnot 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-LLMacrossguardrail_utils.py, Gateway API, UI, docs, andguardrailValidation.ts(#22767, @copilot-swe-agent) - [Docs] Fix
EvaluationDatasettype 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 toai-gateway/index(#22579, @copilot-swe-agent) - [Docs] Remove unused parameter from
invocation()function example in manual tracing docs (#22524, @prithvipal) - [Docs] Document
uv run --frozenflag for offline/no-network usage inCLAUDE.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
- TypeScript SDK renamed: mlflow-tracing→@mlflow/core, mlflow-openai→@mlflow/openai, mlflow-anthropic→@mlflow/anthropic, mlflow-gemini→@mlflow/gemini
- Removed MLFLOW_ENABLE_INCREMENTAL_SPAN_EXPORT environment variable
- Block / and : in Registered Model names
- Automatic Issue Identification in traces
- Gateway budget alerts and spending limits
- Trace graph view visualization
Per-provider model catalog files. Updated weekly by CI.
- Multi-workspace organization support
- Multi-turn conversation evaluation and simulation
- Trace cost tracking and visualization
- MLflow Assistant chatbot (Claude Code-backed)
- Trace Overview Dashboard with performance metrics
- AI Gateway revamp