# Directus v12.5.0 — Release & Upgrade Intelligence
- **Product:** Directus (https://directus.io)
- **Version:** v12.5.0
- **Released:** Oct 07, 2026
- **Impact Score:** 7/10
- **Breaking Changes:** Source flagged
- **Canonical Analysis:** https://changelogs.us/directus/updates/v12.5.0/

## Executive Summary (TL;DR)
Directus v12.5.0. Source highlight: ⚠️ Potential Breaking Changes

## Breaking Changes & Deprecations
- ⚠️ Potential Breaking Changes **Fixed TFA enforcement to use effective permissions ([#28176](https://github.com/directus/directus/pull/28176))**
- Breaking changes in `@directus/sdk`: - `DirectusNotification.id` is now correctly typed as `number`. - `DirectusField.schema` is now nullable.
- Breaking changes in `@directus/types`: - `Notification.id` is now correctly typed as `number`. - `Notification.status` and `timestamp` are now nullable.

## New Features
- Added a Preview Base URL project setting, selectable as a variable in a collection's Preview URL (#28227 by @robluton)
- Added header bar buttons to set multiple selected Flows to active or inactive (#28321 by @robluton)
- Added a confirmation dialog when saving Public policy permission changes on system collections (#28311 by @robluton)
- Added a persistent warning notice when editing the Public policy (#28310 by @robluton)
- Added support for linking images in the WYSIWYG editor: select an image and use the link toolbar button (or Mod+K) to wrap it in an anchor; stored `
- Added a Preview Base URL project setting, selectable as a variable in a collection's Preview URL (#28227 by @robluton)

## Improvements
- Improved license handling so a failed license request keeps the current license in effect and is retried by a scheduled license check, with a warning in the app showing why the license could not be renewed and when it lapses (#28331 by @ComfortablyCoding)
- Improved license handling so a failed license request keeps the current license in effect and is retried by a scheduled license check, with a warning in the app showing why the license could not be renewed and when it lapses (#28331 by @ComfortablyCoding)

## Bug Fixes
- Fixed requests failing after a process was stopped during schema building (#28316 by @Nitwel)
- Updated proxy-addr, braintrust, MCP SDK, sharp, vue, dompurify, source-map-js and serialize-javascript to address CVEs (#28334 by @br41nslug)
- Update license validation to only accept Directus keys and tokens (#28331 by @ComfortablyCoding)
- Updated `undici`, `axios`, `nodemailer`, `basic-ftp`, `ip-address`, and `fast-uri` to address CVEs (#28330 by @br41nslug)
- Improved license handling so a failed license request keeps the current license in effect and is retried by a scheduled license check, with a warning in the app showing why the license could not be renewed and when it lapses (#28331 by @ComfortablyCoding)
- Fixed tooltips not appearing on keyboard focus (#28263 by @robluton)
