Skip to content

Document Directus 12.2.0 - #792

Merged
ChristopherJennings merged 5 commits into
mainfrom
chrisjennings/update-for-v12-2-0
Jul 30, 2026
Merged

Document Directus 12.2.0#792
ChristopherJennings merged 5 commits into
mainfrom
chrisjennings/update-for-v12-2-0

Conversation

@ChristopherJennings

@ChristopherJennings ChristopherJennings commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Documents v12.2.0 and fixes env var docs that no longer match source. Verified against the v12.2.0 tag rather than the release notes.

The breaking changes page had only the WYSIWYG entry. Added the other six: App Access settings fields, the 50mb import cap, the 3000px transform cap, valueless query flags, the SDK schemaDiff signature, and readByExternalId.

Also new: a Saving Items section covering the save menu and the new Default Save Action setting (settings.yaml).

The Imports env table now matches defaults.ts: IMPORT_CONCURRENT_MAX doesn't exist (it's IMPORT_MAX_CONCURRENCY, default 20), and IMPORT_TIMEOUT is 1h not 1m. Both were wrong in v12.1.1 too, and content/releases/3.breaking-changes/2.version-11.md:11 already documented them correctly.

Questions

1. Do pre-12.2.0 App Access policies still expose the AI provider keys? #27996 added a field allowlist and the changeset says existing policies are untouched. If so, every older policy still grants read on ai_openai_api_key and friends until an admin scopes it, and upgrading doesn't fix it. It's written as an audit instruction on that basis. If that's right, does it also belong in the upgrading guide, or a security advisory?

2. The 21 allowlisted field names are listed verbatim. Better to link the YAML? Verbatim helps someone auditing a policy but will drift.

3. Want a full env var audit? I only checked the import family. That one table had three wrong values in three rows.

Notes

Merge chrisjennings/update-schema-migration-tutorial first or together — the changelog links to it.

ChristopherJennings and others added 3 commits July 29, 2026 20:50
Verified against the v12.2.0 tag rather than the release notes, which
contradict themselves on the IMPORT_MAX_FILE_SIZE default.

The breaking changes page listed only the WYSIWYG migration. Added the
remaining six:

- App Access policies now read a limited set of directus_settings
  fields. Existing policies are untouched, so pre-12.2.0 policies
  still expose the AI provider keys
- Imports capped at 50mb (IMPORT_MAX_FILE_SIZE), which also caps
  schema snapshot uploads to /schema/diff and /schema/apply
- Image transformation output capped at 3000px
- Valueless boolean query flags now count as true, affecting
  ?background on import and ?force on /schema/apply. /schema/diff
  changed the opposite way: it tested key presence, so ?force=false
  previously still forced
- SDK schemaDiff now takes an options object rather than a positional
  force argument
- DeploymentProjectsService.readByExternalId now takes a deployment ID

Also:
- Documented the new Default Save Action project setting, along with
  the save action menu, which was previously undocumented apart from
  Save as Copy
- Corrected the IMPORT_MAX_FILE_SIZE default from "no limit" to 50mb
- Noted read exposure of the AI provider keys in the security best
  practices, which previously covered only write access
- Dropped the pre-publication TODOs now that v12.2.0 has shipped

The schema migration tutorial updates for the new snapshot and diff
parameters are on chrisjennings/fix-schema-migration-tutorial.

POST /utils/import is intentionally not documented. It is API-only
with no Studio UI, so it belongs in the generated API reference rather
than the content module guide.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The Imports table documented a variable that does not exist, two wrong
defaults, and omitted one variable entirely. Verified against
packages/env/src/constants/defaults.ts at v12.2.0.

Corrections. These were also wrong in v12.1.1, so they are not
regressions from a recent release:

- IMPORT_CONCURRENT_MAX does not exist. The code reads
  IMPORT_MAX_CONCURRENCY (api/src/services/import/import.ts), and its
  default is 20 rather than 10. A documented name the code never reads
  silently does nothing when set
- IMPORT_TIMEOUT defaults to 1h, not 1m. Also noted that the budget is
  shared across receiving and parsing an upload, so the effective wall
  clock is not twice the value
- IMPORT_EXPORT_NAMESPACE defaults to directus:import-export, not
  import-export
- Fixed the "simultainous" typo

Addition:

- IMPORT_MAX_FILE_SIZE, new in v12.2.0, was missing from this table.
  Added as a pointer row so the Imports section covers every import
  variable. Its full description, including the 413 response and the
  fact that it also caps schema snapshot uploads, lives in
  Security & Limits alongside MAX_IMPORT_ERRORS.

content/releases/3.breaking-changes/2.version-11.md already documented
IMPORT_TIMEOUT as 1 hour and IMPORT_MAX_CONCURRENCY as 20 under the
correct name, so that page has been contradicting this table.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview Jul 30, 2026 2:50pm

Request Review

@AlexGaillard AlexGaillard left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this one LGTM

@ComfortablyCoding

ComfortablyCoding commented Jul 30, 2026

Copy link
Copy Markdown
Member
  1. Do pre-12.2.0 App Access policies still expose the AI provider keys? Reduce directus_settings fields exposed with minimal app access directus#27996 added a field allowlist and the changeset says existing policies are untouched. If so, every older policy still grants read on ai_openai_api_key and friends until an admin scopes it, and upgrading doesn't fix it. It's written as an audit instruction on that basis. If that's right, does it also belong in the upgrading guide, or a security advisory?

Yes, although not their values as those are still masked. The reduction was for other fields that were exposed and "may" expose sensitive info, somewhat already covered by the be careful what read permissions one gives to core tables

  1. The 21 allowlisted field names are listed verbatim. Better to link the YAML? Verbatim helps someone auditing a policy but will drift.

This should be fine as this notice pertains to v12.2.0 if changed in the future that adjustment will be mentioned there. Any live link will have the potential to break if the file moved.

  1. Want a full env var audit? I only checked the import family. That one table had three wrong values in three rows.

Not a bad idea, possibly some drift over time as observed here. Out of scope for this PR though.

Comment thread content/configuration/security-limits.md Outdated
Comment thread content/guides/13.security/1.best-practices.md Outdated
ChristopherJennings and others added 2 commits July 30, 2026 10:45
Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>
Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>
@ChristopherJennings
ChristopherJennings merged commit e9c3f51 into main Jul 30, 2026
5 of 6 checks passed
@ChristopherJennings
ChristopherJennings deleted the chrisjennings/update-for-v12-2-0 branch July 30, 2026 14:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants