Product
|
Directus v12.6: Rich Text Extensions, Recommended AI Models, and a Default Exports Folder
Extend the WYSIWYG with your own nodes and toolbar buttons, AI model defaults that keep themselves current, a Default Exports Folder, and Environment Sync for presets.

Bryant Gillespie
Staff Product Engineer

The WYSIWYG editor is now extensible. v12.6 adds a richtext extension type for your own Tiptap nodes, marks and toolbar buttons. We also added recommended AI models that update with each release and a default folder for exports saved to the File Library. This post also covers v12.6.1, which adds custom link protocols to the WYSIWYG, presets in Environment Sync, and a round of performance and security fixes.
Before we dive in, I want to highlight a few potential breaking changes you should be aware of:
Breaking Changes
🟡 Node.js 26 is now required: The minimum supported Node.js version is now 26, and Node.js 22 is no longer supported. This applies to the API, the app and create-directus-project. If you self-host outside the official Docker image, upgrade your runtime before you upgrade Directus.
🟡 Deprecated AI models removed: v12.6 ships recommended default AI allowed models and removes models that providers have deprecated. Recheck your AI Assistant settings before you use the assistant after upgrading.
🟡 OpenAPI x-metadata renamed to Metadata: List responses now reference #/components/schemas/Metadata for meta, in both @directus/specs and /server/specs/oas. Update any $ref that points at x-metadata and regenerate clients built from the spec.
🟡 New telemetry endpoint: The default TELEMETRY_URL and COMPLIANCE_URL now point to https://telemetry.directus.com instead of telemetry.directus.io. If your deployment restricts outbound traffic, allow the new domain before upgrading. Otherwise reporting fails without logging an error.
🟡 Schema Builder 2.0: @directus/schema-builder gets a major version bump, adding snapshot() and types() to generate schema snapshots and TypeScript types. If you use it in tests, check your setup against the new version.
You can see the full list of breaking changes in the changelog.
Rich Text Extensions
The WYSIWYG has run on Tiptap since 12.2, and v12.6 opens it up with a new richtext app extension type. It lets you add Tiptap nodes, marks and toolbar buttons to the WYSIWYG interface, and you can turn them on per field.
That means custom callouts, embeds, footnotes or brand-specific formatting can live inside the editor itself, instead of in workarounds. The Extensions SDK and create-directus-extension support the new type, so you can scaffold one like any other app extension.
The editor also got some polish:
The font family, font size and color pickers no longer close the toolbar’s Show More menu.
Clicks inside a nested menu no longer close its parent menus.
The Formats dropdown no longer shows a duplicate vertical scrollbar.
Recommended Default AI Models
Keeping an AI model allow list current is easy to forget. Directus now ships recommended default allowed models that update with each Directus release. They apply whenever the AI allowed models setting is unset (null), so a fresh project gets a sensible list without any setup.
If you’ve already picked your models, nothing changes. Existing saved selections are left as they are.
Alongside this, the built-in OpenAI, Anthropic and Google model lists now include the latest models, and deprecated ones have been removed.
Default Exports Folder
There’s a new Default Exports Folder project setting. Pick a folder once, and exports saved to the File Library land there by default.
The export drawer is also more careful about who sees what:
It warns you about File Library visibility before you save an export there.
It only offers the export options the current user has permission to use.
License Warnings in the Sidebar
Following the licensing changes in 12.5, license warnings now appear in the sidebar too. Admins see them without having to open Settings > License, so a renewal problem is harder to miss.
Allowed Link Protocols in the WYSIWYG
New in 12.6, the WYSIWYG interface has an Allowed Link Protocols option. Add custom URL schemes such as myapp:// and text and image links that use them are kept, which helps when your content feeds a mobile app or another client that relies on deep links.
The link drawer now also shows an error when you enter a scheme that isn’t allowed. Previously, it saved an empty link without telling you.
Presets in Environment Sync
The @directus/cli Environment Sync, introduced in 12.3, now carries presets between instances in 12.6.1. Global and role-scoped bookmarks and default views are synced, so a curated set of views can move from staging to production with the rest of your configuration.
A few rules keep this predictable:
Personal presets stay on their own instance.
Role presets whose role is missing on the target are skipped with a warning, and counted in the new
skippedfield of the-jsondata report.
This release also fixes add-mode pushes silently skipping a new permission when its source ID matched an unrelated record on the target.
Other Improvements
Performance: Tables, selects, menus and color displays render faster, table row selection checks no longer scan the whole selection for every row, and markdown rendering no longer slows down over time.
Many-to-many search: Searching an M2M list now matches the related fields shown in the list, not only the junction’s own fields, and numbers no longer match hidden ID fields.
Flows: Flows now send only changed fields on save, and the flow status no longer gets out of sync between the flow editor and its configuration drawer.
Run Script and sandboxed extensions: These no longer fail with “illegal access” when their data contains errors, such as those from a failed Condition operation.
Public policy: The warning and save confirmation added in 12.5 now apply to every policy attached to the Public role. The
PUBLIC_POLICY_IDconstant has been removed.Security: Login redirects no longer normalize into protocol-relative URLs, sandbox URL scope validation now covers redirect destinations, and dependencies were updated to address CVEs.
MCP:
/mcpnow returns405 Method Not Allowedfor authenticatedGETandHEADrequests.CLI and retention:
directus initno longer exits with a missingDB_CLIENTerror before creating the.envfile, and the retention schedule no longer hits a foreign key violation when a parent revision was already deleted.Public page: Shader and video backgrounds no longer download on narrow screens where they’re hidden.
Check out the full release notes on GitHub for the complete changelog.
Directus v12.6 is Available Now
Update your instances to v12.6 to get rich text extensions, recommended AI models, the Default Exports Folder, presets in Environment Sync, and everything else in these two releases. Before you do, move to Node.js 26, allow telemetry.directus.com if you restrict outbound traffic, and update any OpenAPI $ref to x-metadata.
As always, back up your database before upgrading.
Ready to move faster?
30 minutes with a product specialist. See how Directus fits your stack.
KEEP EXPLORING
Explore the product context, implementation paths, and more guides from Directus.