Skip to main content

v3.12.1

Latest
Released Aug 14, 2026·Community 1.16.1·Community commit 60a18fa·Enterprise 0.19.1·Helm chart·Docker Compose
Breaking
None
Security
Issues
Changes
3F · 12B
Downtime
Zero

Upgrade Impact

3 features · 12 fixes
Non-breaking:A maintenance release on top of 3.12.0, tracking the same Dify community version (1.16.1). No manual steps are required.

What Changed

15
New Features
Bug Fixes
Security: Plugin Installation Policy Could Be Bypassed by RetryingUnder a restricted Allowed Plugins policy, upgrading an already-installed plugin was rejected on the first attempt and succeeded on the second. The scope check ran only after the package had been fetched, so the first attempt populated a cache that the second attempt then used to skip validation entirely. Every install and upgrade path now validates the installation scope before the package is fetched.
Security: CVE Remediation Across Enterprise ImagesDependency updates and a Go toolchain bump across the enterprise images clear the advisories that could be remediated at build time, including Go standard library, go-git, gRPC and golang.org/x/text issues. A small number remain where no upstream fix has yet been published. The Security & CVE section below is generated from the release scan and lists the current per-image results.
Knowledge Base: Inconsistent Default Access When Created With a DocumentWith RBAC enabled, a knowledge base created together with its first document defaulted to private, while one created empty defaulted to "All members" — so the same action produced different access depending on how it was started. Both paths now default to "All members". Existing knowledge bases are unaffected.
Knowledge Base: External Knowledge Base Creation FailsConnecting an external knowledge base failed with "Missing dataset_id or pipeline_id in request path". The enterprise permission check required a knowledge base ID that cannot exist while one is being created. Creation now succeeds.
Agent: Attachments Dropped on Models Without Vision SupportFiles attached in the Agent preview were silently discarded before the request reached the agent whenever the selected model had no vision support. The upload appeared to succeed but the agent never received the file. Affected all file types, including spreadsheets, PDFs, and documents.
RBAC: Owner Role Displayed an Incomplete Permission ListThe workspace Owner rendered as holding 6 of 16 application permissions in the console. The Owner has always had full access — only the displayed permission set was wrong. All 16 are now listed.
Workspace: Ownership Transfer Could Leave Two OwnersTransferring workspace ownership appended the owner role to the recipient rather than replacing their existing roles, leaving them with a mix of roles. Transfers made through the admin API did not update RBAC at all, which could leave the previous owner still holding the owner role and block every later transfer. Both paths now leave exactly one owner.
Plugin Credentials: Fields Cleared When Switching Plugin VersionChanging the version of a configured credential plugin cleared every field in the form. Required fields had to be re-entered, and optional ones such as endpoint URL were lost on save without warning. Saved values are now preserved across a version switch.
Helm: Redis Connection String Exposed in ConfigMapsThe composed Redis connection string, which contains the password, was rendered as plaintext into the gateway Caddyfile ConfigMap and the enterprise collector ConfigMap. Both now read it from a Secret, keeping the credential out of anything that can read ConfigMaps and out of GitOps diffs.
Helm: Redis Usernames Containing URL Delimiters Failed to AuthenticateThe Celery broker URL encoded the password but not the username, so a username containing a character such as a colon, slash, hash, or question mark was misparsed — silently authenticating as a different user or as none at all. Usernames are now encoded correctly.
License: Expiry Badge Wording and Remaining DaysThe admin dashboard license badge now shows the days remaining directly instead of only on hover. In Japanese, an expiring license and an already-expired one both displayed as 期限切れ, making them indistinguishable; they now read differently and the remaining-days string renders as a proper sentence.
Observability: Continuous OpenTelemetry Context Detach ErrorsWith ENABLE_OTEL turned on, the API logged "Failed to detach context" continuously under concurrent load, caused by a known defect in the OpenTelemetry Flask instrumentation detaching the same context token twice. Requests were never affected; trace context is now recorded correctly and the log noise is gone.

Upgrade Guide

Pre-Upgrade Checklist
Back up PostgreSQL database and Redis data
Confirm Kubernetes cluster has sufficient resources for rolling update
No migration or manual step is required — this release can be applied directly on top of 3.12.0
If your Redis username contains a colon, slash, hash, or question mark, it was previously misparsed; confirm the account it authenticates as after upgrading
On clusters that drop Linux capabilities, Code nodes need sandbox.securityContext with SYS_CHROOT added — see New Features
Zero-downtime rolling upgrade supported
Upgrade Command

# Back up database first, then:

$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.12.1

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
Security vulnerabilities found in this release.0 Critical · 31 High CVE across all container images
ScannerDocker Scout
Scanned
Aug 14, 2026
Data Source
Docker
CVEs for the opt-in api-insecure image is excluded from the CVE table above.
TTFE – Time To First Event (ms)
AVG
350.92
MIN
161
MAX
1679
P50
177
P90
497.6
P95
1031.1
Connections
Max Concurrent
18
Avg Active
17.5
Empty Workflow QPS
Max QPS
23.2
Avg QPS
20.6
Avg Duration (ms)
564.66

License Compliance

Full license report →
All dependencies compliant - no copyleft issues detected
Apache-2.0MITBSD-3-ClauseMPL-2.0BSD-2-ClauseISCCC0-1.0
© 2026 Dify All rights reserved.Enterprise release information is confidential. Do not distribute externally.