What's new

Metabase 65

Before you upgrade, back up your Metabase application database!

Check out our upgrading instructions.

Get the most out of Metabase. Learn more about advanced features, managed cloud, and first-class support.

Metabase 65.0-beta

NOTE: This is a beta release. We don’t recommend running this in production without testing it in a staging environment first. If you encounter any issues with this beta, please report them on GitHub.

What’s in the release? | 65.0-beta

Metabase v65 adds Research mode, data apps (beta), new admin tools in Monitor, more AI providers, and a new Embedding hub.

Upgrading | 65.0-beta

Metabase Open Source | 65.0-beta

Metabase Enterprise | 65.0-beta

Breaking changes | 65.0-beta

  • The MB_LLM_MAX_TOKENS environment variable has been removed. Metabot now sets its own output limit for chat (32,000 tokens for most AI providers). Metabase ignores the old setting if it’s set, so you can remove it from your environment or config file. #82436

  • Creating a transform, or retargeting one, onto a table that already exists now returns 409 Conflict instead of 403 Forbidden. If your scripts or API clients check for a 403 in this case, update them to check for a 409. #83799

  • Some unused API endpoints have been removed. If you call them directly, they now return a 404.

    • POST /api/llm/generate-sql. #82380
    • POST /api/product-feedback, which only the feedback form on the embedding homepage used. #83931

AI updates | 65.0-beta

  • Research mode

    • Research mode runs and inspects combinations of metrics, dimensions, and event timelines.
    • Describe what you want to research, and the AI agent makes a research plan of metrics and events. Or click Manual setup to pick them yourself.
    • Metabase makes a chart for each combination, and can use AI to analyze and sort the results.
    • Star or hide charts, comment on them, Explore further into part of a chart, and add charts to the research Summary.
    • Click + New > AI exploration, then click Research. Or search for New research in the command palette.
  • MCP tool access by group

    • Admins can now choose which MCP tools each group can use. MCP clients only see and run the tools that a person’s groups allow.
    • Go to Admin > AI > Usage controls > MCP tools access to configure.
  • Data apps (beta)

    • Have your AI agent of choice build custom React apps on top of your semantic layer. Apps use the metrics and data that you’ve defined in Metabase, and can run actions to write back to your database.
    • Apps live in the git repository that you connect with Remote sync.
    • Admins choose which groups can use each app.
    • People find the apps that they can use in the Data apps section of the left sidebar.
    • Data apps is a paid feature. Go to Admin > Settings > Data apps to install the data apps skill for your AI agent and connect a repository.
  • More AI providers and models

    • Ollama, for models you host yourself
    • xAI (Grok)
    • Model Garden endpoints on Google Cloud, so you can connect open models (like GLM or Llama) that you deploy on Vertex AI
    • Amazon Bedrock inference profiles and the bedrock-runtime endpoint
    • New models: Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1, and GPT-6 Astra
    • Go to Admin > AI to connect an AI provider or choose a model.
  • Clearer messages when things go wrong

    • When your AI provider returns an error (like an exhausted credit balance or a rate limit), Metabot shows that error instead of a generic “something went wrong”.
    • Metabot tells you why a reply stopped early, like a length limit or a content filter.
  • Making your AI experience more pleasant

    • Refreshed styling for Metabot conversations, in the sidebar and in full-page view
    • Syntax highlighting for markdown in the AI system prompts editor
    • Metric mentions in Metabot replies now link to the metric’s page
    • Semantic search can embed through any AI provider connection you name
    • …and more
More AI updates...
  • Admins can control which MCP tools each permissions group can use from Admin > AI > Usage controls > MCP tools access. #82718
  • Metabot shows long thinking durations in minutes and seconds, such as “Thought for 1 minute 14 seconds”, instead of only seconds. #83977
  • Restore bottom padding on Metabot feedback responses #83822
  • Improve markdown syntax highlighting in AI system prompts with monospaced font and brand-colored headings. #83892
  • Allow Metabot to use Ollama for self-hosted LLM #77874
  • Metabot chat sends a consistent 32,000 max output tokens across providers, and the llm-max-tokens setting is removed and ignored if set. #82436
  • Metabot now shows why a reply stopped early, such as length limits or content filters, when reopening, forking, or in Slack. #82584
  • Metabot supports the Claude Fable 5.1 model across Anthropic, Bedrock, Azure, Vertex and OpenRouter providers. #83836
  • Metabot now reasons with GPT-5.4, Mini and Nano at low effort in chats, and shows GPT reasoning summaries on Bedrock. #83784
  • Semantic search can embed through any named AI provider connection, and the removal dialog warns when you remove the connection it uses. #82521
  • Adds Claude Opus 5.5 and Sonnet 5.5 to Metabot’s model lists for Anthropic, Bedrock, Azure and Google Cloud. #83647
  • Surface actionable BYOK provider errors in Metabot instead of a generic “something went wrong” #81242
  • Running subexplorations now appear in the sidebar while loading, and use a new corner-arrow icon instead of the branch icon. #82517
  • Support AWS Bedrock inference profiles and the bedrock-runtime endpoint for Metabot BYOM #79446
  • Support xAI (Grok) as a Metabot AI provider #79894
  • Metabot accepts JSON text replies from models that ignore forced tool calls, so conversation titles, example questions, and chart interestingness work. #82974
  • Syntax highlighting for markdown in AI system prompts editor on the Metabot admin page. #79675
  • Databases can be @-mentioned in Metabot again by searching for them in the mention picker, including in transform creation. #82379
  • Refreshes Metabot conversation styling in the side panel and full-page view, including prompts, input, messages, loader, inline SQL, charts, and data sources. #82385
  • Google AI provider connections can use a Model Garden endpoint, which appears in the model picker and is called over Chat Completions. #82276
  • Shows the archived-entity banner when viewing a trashed AI exploration #83144
  • Hide error pages for exploration chart variants (like hour-of-day) that weren’t explicitly requested #82450
  • Re-enables Explorations feature and adds upfront validation rejecting requests with an unknown profile #82594
  • Improves Slackbot CSV/TSV file uploads: clearer error messages, accurate upload metrics, safer handling of attachment-only messages and failed uploads #82216
  • Adds support for the GPT-6 Astra model in OpenAI, Azure and Bedrock model pickers for AI features #82499
  • Metric mentions in Metabot replies are now clickable links to the metric’s page instead of dead links #82348

Embedded analytics updates | 65.0-beta

  • Embedding hub
    • All embedding settings are now in one place: the new Embedding hub, with tabs for Get started, Security, Authentication, Permissions, Tenancy, Appearance, and Localization.
    • Modular embedding (including guest embeds) and the React SDK have separate switches.
    • Click on the grid icon in the top right corner of your Metabase and select Embedding hub to explore.
  • The Embedding SDK shows a clear error message instead of crashing when your app’s React version is unsupported.
  • useMetabot now exposes step-limit continuation, so custom Metabot components can let people continue a conversation.
  • Public and embedded dashboards show timeline events (read-only).
More embedded analytics updates...
  • Embedding settings move into a new Embedding hub with Get started, Security, Authentication and Tenancy tabs, and separate switches for modular embedding, the React SDK and standalone Metabase. #83772
  • Remove the unused POST /api/product-feedback endpoint and the embedding homepage feedback form that called it. #83931
  • Data apps show a data access warning for assigned groups that lack permission to tables the app uses, with links to data permissions. #83083
  • Manage data app access by assigning existing permission groups to each data app instead of auto-generated per-app groups. #83082
  • Expose Metabot step-limit continuation in useMetabot #80310
  • Embedding SDK now shows a clear error message instead of crashing when the host app’s React version is unsupported #82435
  • Data apps now appear in a “Data apps” group in remote sync push and conflict changes lists, and read-only instances block editing them. #83797

New features | 65.0-beta

See AI updates and Embedded analytics updates for new features in those areas.

Monitor

Monitor gets three new pages (paid features):

  • Content diagnostics
    • Find stale, duplicated, imbalanced, and slow content to keep your Metabase tidy.
    • Metabase scans your content every night.
  • API key usage
    • See which API keys call Metabase, and when, with filterable Key activity and Events tables.
  • Session management
    • See live sessions, and filter, sort, and page through them.
    • Revoke sessions in bulk.

Click on the grid icon in the top right corner of your Metabase and select Monitor to explore.

Events on dashboards

  • Time series charts on dashboards now show the timeline events their questions were saved with.
  • To show or hide events on one card, click the card’s three-dot menu (…) and select Events. To change events for every chart on the tab, use the three-dot menu in the dashboard header.

Library

  • Dashboards in the Library
    • The Library has a new Dashboards section that holds dashboards and their questions.
    • Go to Data Studio > Semantic layer to create and manage them.
  • Actions without models
    • Create and manage query actions in the Library without attaching them to a model.
    • Actions now belong to collections.

Dashboard subscriptions

  • Custom email subject
    • Set your own subject for an email subscription. If you leave it empty, the subject is the dashboard name.

Querying and visualization quality of life improvements

  • A label for each y-axis: when a chart splits its y-axis, each side now has its own label. In the chart’s settings, go to Axes and look for the new Right y-axis group.
  • Line breaks in tables: when you turn on Wrap text for a column, table cells show the line breaks in your data.
  • Search in the column picker: when a table has 10 or more columns, the query builder’s column picker has a search box, with keyboard navigation.

Database features

  • Test connection button on the database connection form, so you can check your settings without saving them or starting a sync.
  • CSV uploads for self-hosted, single-node ClickHouse #57124

Notable UI changes | 65.0-beta

  • Embedding settings have moved into the new Embedding hub. See Embedded analytics updates.

  • In the Data Studio Library, SQL snippets and data actions now have their own tabs.

  • The Library page in Data Studio now reads “Semantic layer” everywhere (heading, breadcrumbs, and browser tab), to match the sidebar.

  • If you haven’t set a custom brand color, Metabase now uses a more saturated blue.

  • We restyled buttons, segmented controls, and accordions. Undo toasts are now always dark, and the dashboard and permissions edit bars have a solid background.

  • Dashboards show an outline of the header, filters, and cards while loading, instead of a spinner.

  • Toast notifications stay open while you hover over or focus them.

  • The Data Analysts group always exists, but Metabase only shows it when you have the premium feature or when the group has members. If you downgrade, members keep their permissions, but you can’t add new members.

Enhancements | 65.0-beta

  • Faster app loading: Metabase fetches the current user at the same time as settings, and unchanged static files (images, embed.js, locale files) return a 304 instead of being resent in full
  • Faster startup on fresh installs with a Postgres application database
  • Remote sync imports more reliably, shows test connection results inline, and tells you why an export stopped
  • Serialized YAML files no longer store the ID and label in serdes/meta, only the model. Metabase still imports files in the old format, but your first export after you upgrade will change most files
  • On Postgres, questions with more than one stage (like a filter after a summary) now compile to SQL with CTEs (WITH clauses) instead of nested subqueries, so View SQL shows different SQL
  • Metabot and field values lookups no longer run warehouse queries for sandboxed, impersonated, or routed users on fields that shouldn’t have values
  • Trend charts show the correct comparison date when the comparison spans a daylight saving time change
  • Faster pivot tables, on both the backend and the frontend (must set MB_USE_NATIVE_PIVOT_TABLES to try out.)
More enhancements

Administration

  • Remote sync imports more reliably: first imports no longer conflict on Transforms, data apps import before tables exist, field settings survive connecting a stubbed database, and parallel transforms no longer collide creating schemas. #84117
  • Adds Content diagnostics in the Monitor section, helping you find stale, duplicated, imbalanced, and slow content to keep your instance tidy. #76328
  • Adds API key usage analytics to the Monitor page, with per-key call logging and filterable Key activity and Events tables. #83726
  • Adds session management API for admins to list live sessions with filters, sorting and paging, and to revoke sessions in bulk (paid feature). #82285
  • Stubbed databases show “Unknown” as their engine in the admin database list instead of a placeholder engine. #83888
  • Remote sync settings show the test connection result inline with a success or failure icon, and show failure reasons under the Repository URL field, instead of toasts. #83794
  • Remote sync now reports why an export stopped when the remote has changed since the last sync, and auto-import no longer repeats an unresolved conflict. #83682
  • Data Analysts group is now permanent and shown only with the premium feature or existing members; downgrades keep permissions, block new members. #81969
  • Serialized files keep only the model in serdes/meta, and nested entities like dashboard cards and tabs drop it. Snippet template tags now export and import like query template tags. Files in the old format still import. #83723
  • Serialization writes field dimensions under the field’s user settings instead of the field, and Remote Sync writes table settings to ___tableusersettings files, like the CLI export does. #83652

Database

  • [ClickHouse Driver] CSV upload for on-prem single node, self-hosted ClickHouse #57124
  • Add a “Test connection” button to the database connection form to check settings without saving or triggering a schema sync. #83100

Performance

  • Skips a redundant second audit database sync on fresh installs, speeding up startup on Postgres application databases. #83681
  • Metabot and field values lookups no longer run warehouse queries for sandboxed, impersonated or routed users on fields that shouldn’t have values. #83482
  • Unchanged static assets such as images, embed.js and locale files now return a 304 on revalidation instead of being resent in full. #81937
  • Metabase fetches its main pages in the background once the tab is idle, so tabs left open across a deploy can still open them. #82628
  • Loads the app faster by requesting the current user at the same time as settings, so the signed-in app appears sooner. #82721
  • Improves performance of pivot table generation on both backend and frontend #82811

Querying

  • Explorations appear in the search content type filter, in usage analytics content view, and in the view log. #83287
  • Add a search box to the query builder’s column picker when a table has 10 or more columns, with keyboard navigation. #83345
  • On Postgres, questions with more than one stage compile to a chain of CTEs (WITH clauses) instead of nested subqueries. #81914

Dashboards

  • Add ability to customize the subject of subscription email #63305
  • Timeline events now appear on dashboards, with markers on time series charts, an events panel, and read-only display in public and embedded dashboards. #80119
  • Dashboards show an instant skeleton of the header, filters, and card layout while loading, instead of a loading spinner. #83288
  • Dashboard tabs now show a single divider line under the tab row, and the sticky filter bar no longer shows a stray border when not stuck. #83295

Visualizations

  • Honor line breaks when DB includes them in table view #6178
  • Trend (SmartScalar) comparison labels now show the correct date when the comparison spans a daylight saving time change. #82457
  • When a chart’s y-axis is split, the right y-axis now has its own label setting. #3897

Organization

  • SQL snippets and data actions move into their own tabs in the Data Studio Library, each with its own remote sync badge. #84052
  • Actions without a model at the root now respect data actions root permissions in the typed schema, action list, and dependency snippet filtering. #83966
  • Create and manage actions in the Library without attaching them to a model. #83662
  • Adds a Dashboards section to the Library for holding dashboards and their questions, managed from the Semantic layer page in Data Studio. #83793
  • Adds a ”…” quick links menu to databases in Browse, linking to Manage database, Edit metadata and View schema when permitted. #83587
  • Query actions no longer require a model and now belong to collections, with collection kept in sync with the model’s when one is set. #83435

UI polish

  • Fixes alignment and tightens padding in the dashboard Action Picker list. #84054
  • Icon-only segments in the field order picker now show tooltips when hovering anywhere on the segment or focusing it with the keyboard, and Escape closes them. #83746
  • Unsubscribe confirmation page now shows its check icon inside a light brand-colored circle #83894
  • Column and table info popovers have slightly adjusted spacing, with a bit more padding and tighter lists. #83816
  • Dashboard and permissions edit bars now use a solid brand or indigo background instead of a translucent one, matching the model and metric editors. #83785
  • Data reference database pane in the action editor now fills the side panel, keeping the close button aligned away from the title. #83665
  • Action form editor warning banner and the line above each field preview now follow dark mode. #83608
  • Timeline event cards use a standardized hover color instead of a custom color mix. #83765
  • Header labels in the whitelabel color and font tables in Appearance settings are slightly larger. #83691
  • SegmentedControl segments now use consistent icon and text sizing and spacing, and the visualizer type picker has wider segments. #83336
  • Undo toasts use an always-dark surface in both light and dark themes, with consistent on-dark action buttons. #83311
  • Data Studio library page heading, breadcrumbs, creation prompt, and browser tab title now read “Semantic layer” to match the sidebar tab. #82224
  • Fixes a stale help link in the database setup step so it points to the correct premium help page. #83396
  • Segmented controls across the app are restyled to match the updated design, with a single size and radius. #82657
  • Keeps thread spacing consistent in the exploration sidebar below the Summary. #83257
  • Empty pin drop zone now shows as a dashed “Drag here to pin” box instead of a thin line #83131
  • Default (non-whitelabelled) instances now use the more saturated Ocean color ramp instead of a muddy darkened brand color #82853
  • Restyles the Accordion component to match Figma, updating default spacing, icon, and adding a disabled state #82562
  • Restyles the Button component to match the new design spec across the app #82236
  • Improves typography consistency and heading hierarchy on Home, Collection, Metrics, Data, and Models pages (and their empty states) #81888
  • Homepage card icons and labels stay vertically centered on small screens when a taller neighboring card stretches the row. #83714

Bug fixes | 65.0-beta

Administration

  • After uploading a CSV on a specific granted schema, permissions to upload CSVs are then lost #70292
  • When Subscriptions Fail they are Still Marked as “Successful” in Admin Tools #76853
  • We’re not logging the RLS restrictions in the audit log #71604
  • A missing database fails git import #83574
  • Remote sync progress modal and cancel button only appear for the user who started the sync task #83579
  • Remote sync: model actions aren’t exported, and dashboard-button actions only appear on full exports #83347
  • Fix: importing a GUI model via Remote Sync before the target’s schema sync completes no longer leaves its columns permanently untyped #82945
  • Fixes Remote Sync not removing nested collections, cards, and transforms from the git repo when a parent collection is archived #82876
  • Fixes mb git-sync import failing with ‘expected_branch: missing required key’ error from the CLI #82874
  • Fix Git sync stuck in progress when a remote sync task is interrupted by a restart or crash #82553
  • Fixes permissions tabs disappearing behind a spinner while the Data tab loads on slow networks #82633

Database

  • Creating or retargeting a transform onto an existing table returns 409 instead of 403 #83799
  • Show the underlying error message when a database’s initial sync fails, instead of only “Sync failed” #83042
  • Initial sync of a new database no longer runs a useless FieldValues scan, reducing sync time and noisy task history #82963
  • Fix Google Drive connect modal briefly flashing for admins who are already connected #83009

Embedding

  • MCP inline chart iframe ignores white-labelling #82818
  • MCP: disabling inline charts leaves a broken chart card instead of no chart #82819
  • Embedding setup guide buttons “Move to shared collection” and “Create a sample dashboard” are disabled until the shared collection loads, so early clicks aren’t silently ignored. #83489

AI

  • Fix Metabot credential validation for mini-model metadata #84047
  • Metabot chat turns no longer stop without an answer when they run longer than ten minutes #83767
  • The sql profile hits a provider 400 on Mistral, and intermittently on Azure Claude #83786
  • Configure mini-model when adding an AI provider #83139
  • DeepSeek Flash appears in the AI model picker again, and saved deepseek-v4-flash settings automatically map to DeepSeek Flash. #83397
  • Metabase-managed AI: setup modal unmounts before the “Metabot AI is ready” state can render #82219
  • Qwen3.8 Max appears in the Metabot model picker again, and saved settings keep Qwen-specific handling on OpenRouter #83522
  • Fix Metabot-built questions with date filters crashing or silently losing filters when opened #81947
  • Fix Metabot failing to read metrics that have a breakout #82951
  • Fixed Metabot’s Slack alerts and dashboard subscriptions dropping the schedule day, breaking weekly/monthly schedules. #83043
  • Fix Metabot Sample Database examples that referenced a nonexistent PUBLIC schema, causing failed lookups #82958
  • Fix Metabot recording failed searches as successful tool calls #82941
  • Fixes Metabot being unable to add charts based on saved models to documents #82990
  • Hide the new AI exploration button when ‘Disable all AI features’ is turned on #83145
  • Metabot’s thinking panel now marks failed tool calls with “Failed” instead of showing them as completed successfully. #83044
  • Fixes Slack thread history so messages with only file attachments (no text) still show attached file names in Metabot conversation context. #82631
  • Fix unreadable low-rating data complexity badge (green text on green background) #82665
  • Fixes Metabot permission gaps so it no longer exposes query, transform, or column details users aren’t allowed to see #80083

Querying

  • Custom Expressions: ”]” is invalid #82328
  • Measure description markdown formatting mismatch #83309
  • Fix Python transforms incorrectly showing as broken in the dependency graph #82979
  • Fix metric explorer error “Column PRODUCTS.PRICE not found” for metrics using implicit (FK) joins #72558
  • Column order is no longer respected after hiding one column #82476

Dashboards

  • Verification icon cannot be seen when question item is hovered in dashboard’s question picker #83400
  • Dashboard cards sometimes splay out on load #83620

Documents

  • Redundant vertical scrollbar in new question modal in documents #81350
  • Misaligned comments button in Document #83322
  • Fix stale exploration summary document showing when navigating away and back before a save completes #82442

Visualizations

  • Safari - Waterfall charts get messy when plotted with a manual y-axis Min size #82032
  • Wrong default viz is set when saving a question without visualizing it #83091
  • SmartScalar trend comparison shows the wrong date in the “vs.” label for hourly comparisons in timezones behind UTC #83394
  • Series colors change after adding a chart to the Visualizer #83415
  • Pie chart fails to render when a dimension value is the literal string “null” #81868
  • Fix horizontal overscroll on tables accidentally triggering browser back/forward navigation #82922
  • Fixes visualizer header truncating the Save button in narrow layouts #82976
  • Pivoted view of normal table viz is not respected in subscriptions #76931

Organization

  • “Other users’ personal collections” does not show up after inviting a user #83316
  • Fix sidebar failing to load due to schema validation error on the Trash collection’s localized name #82581

UI polish

  • “Share” button translation is broken in fr, de, es, pt-BR etc. #83050
  • Content diagnostics tab shows an info tooltip explaining nightly scans, and the Type column header is centered over its icons. #84018
  • Dashboard question picker overflows horizontally #83544
  • CopyButton is not accessible: renders as a clickable div instead of a button #83841
  • Bookmarked metric icon does not match the rest of app #83340
  • Cannot tab through the new collection dialog from sidebar #83338
  • Other user’s personal collections UI issues #79967
  • “Remove dimension” button size mismatches “Available dimensions” button size #83313
  • Schedule: controls are vertically misaligned in the horizontal layout #83405
  • Hovering button in a toast makes the button almost invisible #83086
  • First modal backdrop click does not dismiss events modal #83006
  • Bookmark icon misplaced in sidebar items with long labels #82938
  • Fixes onboarding “Get help” button shrinking and replaces search user filter pills with a cleaner multiselect component #83125
  • Toast notifications no longer auto-dismiss while hovered or focused; they resume with remaining time once you move away #82957
  • “Move questions into their dashboards” modal renders two stacked overlays #82217
  • Fix layout shift in Data Studio caused by the field sorting loader appearing before the sort controls #82645

Other

  • Some emoji reactions in comments fail #80470