Learn more about our native MCP
Directus Logo
  • Use Cases and Features
    • Headless CMS
      Manage and deliver content with ease
    • Backend-as-a-Service
      Build and ship applications faster
    • Headless Commerce
      A single source of truth for products
    • 100+ More Use Cases
      Build anything (or everything)
    • Instant APIs
      Connect a database, get REST + GraphQL APIs
    • Granular Policy-Based Auth
      Provide secure, autonomous data access
    • Visual Automation Builder
      Automate content and data workflows with ease
    • 50+ More Features
      Get everything you need out-of-the-box
    Project Showcase
    Built With Directus

    Built With Directus

    See what everyone's been building with Directus

  • Learn More
    • Blog
      Read our latest articles and guides
    • Case Studies
      Case studies and success stories
    • Community Forum
      Questions and conversations
    • Agency Directory
      Browse our list of agency partners
    • About Us
      Learn more about Directus and the team
    • Wall of Love
      See what others are saying about us
    • Contact
      Have a general inquiry or question for us?
    • Support
      Reach out to Directus support
    Watch Directus TV
    Directus TV
    Video

    Directus TV

    Go down the rabbit hole with hours of original video content from our team.

  • Developers
  • Enterprise
  • Pricing
Book a DemoGet StartedLog In
GitHub logo34,459
Back
product
Tuesday, March 10, 2026

Directus v11.16: Global Draft Versions, Multimodal AI, and Smarter Deployments

A native draft workflow, an AI Assistant that can see your images and PDFs, and a deployment module your whole team can use.
Directus v11.16: Global Draft Versions, Multimodal AI, and Smarter Deployments

Global draft versions across every collection, an AI Assistant that reads images and documents, deployments with role-based access and real-time status updates, and a new way to query into JSON fields. v11.16 rounds out a lot of the foundations we've been building leading up to v12, and every piece here makes the day-to-day noticeably better. Let's get into it.

Breaking Changes

🟡 (Low risk) Visual Editor field permissions and versioning: The Visual Editor now enforces field-level permissions and version access checks. If you're using @directus/visual-editing, update to v2.0.0 or later to maintain compatibility.

🟡 (Low risk) Global draft version standardization: If you have an existing content version with the key draft and a custom display name, the custom display name will be standardized to "Draft" to support the new global draft system. Your version content and functionality are unchanged.

🟡 (Low risk) Password reset for external auth users: requestPasswordReset now returns a Forbidden error for users managed by external auth providers (LDAP, OAuth, etc.) instead of silently sending an email that can't be used.


Global Draft Versions: Every Collection, No Setup Required

If you've used content versioning in Directus, you know the friction. You enable versioning on a collection, and then you have to manually create a draft version for each item before you can stage changes. For teams working across dozens of collections and hundreds of items, that adds up fast.

v11.16 changes the model. When you enable versioning on a collection, every item automatically gets a global draft version. No manual setup, no per-item version creation. Open any item, switch to the draft, make your changes, and promote when you're ready.

This also extends into the Visual Editor. You can now select which version you're editing directly in the live preview, and the Visual Editor enforces field-level permissions so users only see and edit what their role allows. Draft a homepage update in the visual editor, preview it live, and publish it, all without touching the main version until you're ready.

Under the hood, the draft version uses a reserved draft key. If you already had a version with that key, the display name gets standardized to "Draft" but nothing else changes. Your content stays exactly where it was.

Global draft version selector in the item editor

The bottom line: Every versioned item gets a draft by default. Stage changes, preview them, and publish when ready, without creating versions by hand.

Learn more in our docs → Content Versioning | Directus Docs


AI Assistant: Now With Eyes

The AI Assistant shipped to GA in v11.15 with multi-provider support and content awareness. v11.16 gives it the ability to actually see things.

You can now upload images and PDFs directly into an AI conversation. Drag and drop a file, pick one from your local machine, or pull it straight from the Directus File Library. The assistant processes the file through your configured provider and can answer questions about what's in it.

The practical applications are immediate. Upload a product photo and ask the assistant to write alt text. Drop in a PDF contract and ask it to summarize the key terms. Attach a design mockup and ask for copy suggestions based on the layout. Instead of describing what you're looking at, you just show it.

This works across all three major providers: OpenAI, Anthropic, and Google Gemini, each through a native adapter that handles the provider's file API directly. The server validates files with a 50MB limit and supports images, PDFs, text, audio, and video. File thumbnails show up in your conversation history so you can track what was shared.

One thing to note: if you upload files in a conversation, you can't switch providers mid-thread. Provider file references are session-specific, so the assistant locks to your current provider once files are in the context. Start a new conversation if you need to switch.

The assistant also picks up a new Ask User tool in this release. Instead of guessing at ambiguous requests, the AI can now ask you clarifying questions before acting. It's a small addition that makes the responses noticeably more useful.

AI Assistant with an uploaded image and response about its contents

The bottom line: Your AI Assistant can process images, PDFs, and other files natively. Show it what you're working on instead of describing it.

Learn more in our docs → AI Assistant | Directus Docs


Deployment Module: Open It Up to the Team

When the deployment module launched in v11.15, it was admin-only. Useful, but it meant the people who actually publish content couldn't trigger their own deploys. They had to ask an admin, or wait.

v11.16 adds role-based access control to deployments. Admins can now create roles with specific deployment permissions, so your content team, your marketing lead, or a designated deployment manager can trigger builds without needing full admin access. The UI adapts to the user's role, showing only the actions they're allowed to take.

The other big upgrade is provider webhooks. In v11.15, Directus polled the provider API to check deployment status. Now, Vercel and Netlify push status updates directly to your instance via webhooks. Deployments update in real time, without polling delays and without burning through provider API rate limits. Vercel webhooks use HMAC-SHA1 signature verification, and Netlify uses JWS-based authentication, so the updates are cryptographically verified before they hit your database.

There's also a new deployment dashboard with stats and build time analytics per project, so you can track how your deployments are performing over time.

One setup note: provider webhooks require a publicly accessible URL (your PUBLIC_URL environment variable). If you're running locally, you'll need something like ngrok for the webhooks to reach your instance.

Deployment module with role-based access and real-time status

The bottom line: Your team can deploy without asking an admin, and deployment status updates in real time instead of polling.

Learn more in our docs → Deployment Permissions


JSON Field Selection: Query What You Need

If you store structured data in JSON fields, you've probably run into this: you need one value from a nested object, but the API returns the entire JSON blob. For small objects that's fine. For large, deeply nested structures, it's wasteful.

v11.16 adds a json() function that lets you extract specific values from JSON columns. The syntax is straightforward: json(field, path.to.value). Dot notation for nested objects, bracket notation for arrays. So json(metadata, dimensions.width) pulls just the width, and json(data, items[0].name) grabs the first item's name.

It works across every supported database: PostgreSQL, MySQL, SQLite, MSSQL, Oracle, and CockroachDB, each using native JSON functions under the hood. Extracted values preserve their original types (strings stay strings, numbers stay numbers), and missing paths return null instead of erroring.

You can also query into JSON fields on related items, which opens up filtering and selection patterns that previously required pulling entire objects client-side. In future releases, we will build on this with full support for JSON filtering, sorting, and aliasing.

The bottom line: Pull specific values from JSON columns at the API level. Less data over the wire, less parsing on the client.

Learn more in our docs → The json(field, path) Function


Other Improvements

Persisted table column widths: Column widths in table layouts now persist to localStorage. Resize them once, and they stay that way.

MIME type restrictions for file interfaces: File and file selection interfaces now support MIME type restrictions, so you can enforce that an image field only accepts images, or a document field only accepts PDFs.

Auth audit hooks: Login attempts (e.g. erroneous accounts) are now tracked via auth audit hooks, giving you a log of authentication activity for compliance and security monitoring.

MySQL lower_case_table_names support: Directus now respects the lower_case_table_names MySQL setting, fixing compatibility with MySQL instances configured for case-insensitive table names.

Navigate to Item on read-only relational fields: The "Navigate to Item" button now works on relational fields you don't have edit permission for. You can follow the relationship even if you can't change it.

Querystring array limit increased: The default QUERYSTRING_ARRAY_LIMIT has been bumped from 100 to 500, supporting larger filter arrays without custom configuration.

Bug fixes: Fixed batch editing translations creating duplicate junction rows, block editor deleting blocks on save-and-stay, GeoJSON performance degradation in forms, datetime picker not closing after selection, tags interface not resolving variables in raw editor mode, decimal and BigInteger display formatting, and more.

Check out the full release notes on GitHub for the complete changelog.

Directus v11.16 is Available Now

Update your instances to get global draft versions, multimodal AI, role-based deployments, JSON field selection, and everything else in this release.

As always, back up your database before upgrading.

Posted By

James White

James White

Staff Product Manager

Share

LinkedIn LogoTwitter LogoReddit LogoDev.to Logo

Sign up for updates 🐇

Get insights, releases, and exciting news delivered directly to your inbox once a month. No spam - we promise. 🙂

Related

Directus v11.15: Native Collaborative Editing, AI Assistant Goes GA, and One-Click Deployments

Feb 12, 2026

Directus v11.14: AI Chat Beta, Bulk Downloads + More

Dec 16, 2025

Directus v11.13: Native MCP Support and Content Comparison

Nov 7, 2025

  • Directus LogoDirectus Logo

    A composable backend to build your Headless CMS, BaaS, and more. 

  • Solutions
    • Headless CMS
    • Backend-as-a-Service
    • Product Information
    • 100+ Things to Build
  • Resources
    • Documentation
    • Guides
    • Community
    • Release Notes
  • Support
    • Issue Tracker
    • Feature Requests
    • Community Chat
    • Cloud Dashboard
  • Organization
    • About
    • Careers
    • Brand Assets
    • Contact
©2026 Monospace Inc
  • Cloud Policies
  • License
  • Terms
  • Privacy