Skip to main content

Release v3.9.3

· 4 min read

What Changed

6
Security
Security: Vulnerability FixesFixed several vulnerabilities in previous version. Please see full CVE report for details.
Bug Fixes
Multi-Domain: Image URL Generation InconsistencyFixed image URL generation in multi-domain deployments where attachments.source_url incorrectly used the console domain instead of FILES_URL, causing 404 errors when loading images.
Credentials: Multiple Default Credentials AllowedFixed a bug where workspace members could each set their own default credential for the same tool, resulting in multiple default credentials. The system now enforces a single default credential per provider per workspace (tenant-scoped).
Helm: YAML Indentation Error Preventing DeploymentFixed a YAML indentation error in templates/plugin/plugin-manager.yaml that caused Helm deployment to fail with a parse error.
Docker Compose: Missing Queue Configuration After UpgradeFixed an issue where upgrading Docker Compose caused workflow and chatflow previews to hang indefinitely due to missing workflow_based_app_execution in CELERY_QUEUES configuration.
OTLP: Endpoint Scheme Validation Blocking Alibaba Cloud ARMSFixed OTLP endpoint validation that rejected URLs with schemes (http://, https://), preventing integration with Alibaba Cloud ARMS and other observability platforms. The endpoint configuration now accepts full URLs and derives TLS security from the scheme.

Upgrade Guide

Pre-Upgrade Checklist
Back up PostgreSQL database and Redis data
Confirm Kubernetes cluster has sufficient resources for rolling update
Docker Compose users: Verify CELERY_QUEUES in .env includes workflow_based_app_execution to prevent workflow/chatflow preview hangs
Zero-downtime rolling upgrade supported
Upgrade Command

# Back up database first, then:

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

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
Security vulnerabilities found in this release.2 Critical · 16 High CVE across all container images
ScannerDocker Scout
Scanned
May 08, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
Connections
Empty Workflow QPS

License Compliance

Full license report →
All dependencies compliant - no copyleft issues detected
Apache-2.0MITBSD-3-ClauseMPL-2.0BSD-2-ClauseISCCC0-1.0

Release v3.9.2

· 4 min read

What Changed

8
Bug Fixes
Security: Community CVE fixes on the LTS lineIntegrated upstream security work from the community LTS branch so Enterprise 3.9.2 ships the same CVE-related patches as the aligned community release line.
Security: Chainguard-based base imagesWhere applicable, Enterprise images now use Chainguard-based foundations to strengthen supply-chain provenance and reduce exposure to vulnerabilities typical of conventional distribution base layers.
OpenSearch vector store: Events import errorFixed an ImportError when OpenSearch was used as vector storage because the vector module shadowed the application events package. OpenSearch-backed deployments can run the standard API image without that startup failure.
Plugin daemon: Decode-plugin parameters sent as multipart formDecode-plugin calls now send parameters in multipart form data instead of a JSON body, matching current plugin daemon expectations and avoiding failed decode requests after the upstream API change.
Helm: Plugin daemon extraEnv indentationCorrected YAML indentation for plugin daemon extra environment variables in the chart so custom env entries render as valid manifests instead of breaking template apply.
Workflows: Faster graph initialization for repeated model nodesGraph initialization no longer repeats credential lookups for every LLM node that shares the same model. Workflows with many such nodes should see lower latency on first run after this caching improvement.
Enterprise Audit: tzdata in the audit imageAdded tzdata package to audit image so that audit logs can be exported correctly.
Go toolchain update for Go-based componentsUpdated the Go compiler and runtime to 1.26.2, bringing routine maintenance and security fixes from the Go release line.

Upgrade Guide

Pre-Upgrade Checklist
Back up PostgreSQL database and Redis data
Confirm Kubernetes cluster has sufficient resources for rolling update
Zero-downtime rolling upgrade supported
Upgrade Command

# Back up database first, then:

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

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
Security vulnerabilities found in this release.2 Critical · 22 High CVE across all container images
critical
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
high
0
0
0
0
0
0
0
0
0
0
0
0
0
medium
20
9
8
10
11
3
9
2
2
2
13
11
6
9
12
11
4
3
low
9
6
2
2
2
0
2
5
5
5
3
2
3
9
3
2
5
1
Status
FAIL
FAIL
PASS
PASS
FAIL
FAIL
PASS
PASS
PASS
PASS
PASS
PASS
PASS
PASS
PASS
PASS
PASS
FAIL
ScannerDocker Scout
Scanned
Apr 28, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
338.32
MIN
165
MAX
901
P50
216
P90
650
P95
748.05
Connections
Max Concurrent
16
Avg Active
15.4
Empty Workflow QPS
Max QPS
17.8
Avg QPS
16.99
Avg Duration (ms)
199.38

License Compliance

Full license report →
All dependencies compliant - no copyleft issues detected
Apache-2.0MITBSD-3-ClauseMPL-2.0BSD-2-ClauseISCCC0-1.0

Release v3.9.1

· 4 min read

What Changed

2
New Features

Upgrade Guide

  • Back up PostgreSQL database and Redis data.
  • Confirm Kubernetes cluster has sufficient resources for rolling update.

Example Helm values for Azure managed identity:

global:
podLabels:
azure.workload.identity/use: "true"

plugin_daemon:
# azure managed service account
serviceAccountName: "plugin-daemon-mi"

enterpriseAudit:
serviceAccountName: "enterprise-audit-mi"

azureBlob:
useManagedIdentity: true

Example per-database credential environment variables:


# If not set, will fallback to externalDatabase.username, externalDatabase.password
databaseCredentials:
dify:
user: ""
password: ""
enterprise:
user: ""
password: ""
audit:
user: ""
password: ""
plugin_daemon:
user: ""
password: ""
Zero-downtime rolling upgrade supported
Upgrade Command

# Back up database first, then:

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

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
Security vulnerabilities found in this release.28 Critical · 112 High CVE across all container images
ScannerDocker Scout
Scanned
Apr 15, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
315.09
MIN
264
MAX
738
P50
306
P90
340
P95
366.7
Connections
Max Concurrent
18
Avg Active
17.3
Empty Workflow QPS
Max QPS
40.6
Avg QPS
39.97
Avg Duration (ms)
100.83

License Compliance

Full license report →
All dependencies compliant - no copyleft issues detected
Apache-2.0MITBSD-3-ClauseMPL-2.0BSD-2-ClauseISCCC0-1.0

Release v3.9.0

· 8 min read

What Changed

21
New Features
Bug Fixes
Security: Access Token Invalidation on LogoutFixed a security vulnerability where user access tokens remained valid after signing out. Tokens are now properly revoked upon logout, preventing unauthorized API access with stale credentials.
CVE RemediationAddressed multiple CVEs across API, enterprise collector, enterprise frontend, sandbox, and web container images. See the Security CVE section below for the full scan report.
Plugin Version Upgrade/Downgrade Returns 404Fixed a 404 error that occurred when switching a custom plugin to a different version (upgrade or downgrade) from the Enterprise admin panel when the plugin was already assigned to workspaces. The system now correctly follows an upgrade path instead of treating the operation as a fresh install.
Plugin Management Page Misses Unassigned PluginsFixed a bug where the Enterprise admin plugin management page did not display installed plugins that had no active workspace assignments. All installed plugins are now visible, improving operational visibility and cost management.
Credential Policy API PerformanceOptimized the credential policy API with concurrent database reads, resolving high latency that was degrading the user experience when fetching or updating model credential policies.
Credential Policy API Accepts Invalid Plugin IDsFixed a bug where the credential policy PUT API would persist invalid plugin identifier values (e.g., a malformed three-segment ID), causing all subsequent credential policy read and write operations to fail with a 500 error that required manual database intervention to recover.
Credentials Unselectable After Plugin Version ChangeFixed an issue where credentials assigned to workspaces became unselectable in the workflow editor after an admin updated the plugin version via the management panel. Users no longer need to reassign credentials as a workaround.
Group Creation Returns False "Already Exists" ErrorFixed a bug where creating a new user group triggered a "group already exists" error and a 500 response even though no such group existed, preventing successful group creation.
OTel Endpoint URL Validation Rejects Valid PathsFixed the OpenTelemetry endpoint URL validator to accept URLs that include a path component (e.g., https://api.smith.langchain.com/otel/v1/traces), enabling compatibility with LangSmith and other observability platforms that require path-based endpoints.
OpenAI New Model Credential Validation ErrorFixed a credential validation error for newer OpenAI models (e.g., GPT-5.2 and above) that have deprecated the max_tokens parameter in favor of max_completion_tokens. The Dify SDK now sends the correct parameter, eliminating the 400 "unsupported parameter" error.
Workspace List Loads Slowly After Helm UpgradeFixed a performance regression introduced in prior Helm-deployed versions where refreshing the workspace list took significantly longer than expected. The underlying query has been optimized to restore fast workspace list rendering.
Helm Custom CA Certificate Not Applied to CollectorFixed a Helm configuration issue where custom CA certificates configured for the deployment were not propagated to the collector component, causing TLS verification failures for outbound connections from the collector.
Go Runtime Upgrade for Enterprise ComponentsEnterprise backend components have been updated to a newer version of Go, improving runtime performance and closing known security issues in the Go standard library.

Upgrade Guide

Pre-Upgrade Checklist

  • Back up PostgreSQL database and Redis data
  • Confirm Kubernetes cluster has sufficient resources for rolling update

Configuring Additional Workers (Optional)

The default Celery worker is not affected by this feature. The trigger queue has been merged into the common worker, so upgrading does not require a separate trigger worker and existing trigger functionality continues to work without any configuration changes.


You may optionally deploy additional workers that consume specific queues, giving you fine-grained control over resource allocation and improved processing throughput.

Add an additionalWorkers list to your Helm values.yaml:


additionalWorkers:
- name: workflow-worker
enabled: false
replicas: 1
celeryQueues: "workflow,workflow_storage,workflow_based_app_execution"
celeryWorkerAmount: 2
resources: {}
nodeSelector: {}
affinity: {}
tolerations: []
extraEnv: []
Zero-downtime rolling upgrade supported
Upgrade Command

# Back up database first, then:

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

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
Security vulnerabilities found in this release.1 Critical · 30 High CVE across all container images
Image
api
enterprise
enterpriseAudit
enterpriseCollector
enterpriseFrontend
gateway
plugin_build_base_py312
plugin_build_base_py313
plugin_build_base_py314
plugin_connector
plugin_controller
plugin_daemon
plugin_daemon_local
plugin_manager
plugin_shader
sandbox
web
critical
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
high
1
0
0
1
1
0
7
7
7
0
0
0
4
0
0
1
1
medium
11
4
4
5
8
4
10
9
9
6
4
3
742
6
4
7
4
low
25
4
4
4
3
4
153
153
153
5
4
3
51
5
4
26
3
Status
FAIL
PASS
PASS
FAIL
FAIL
PASS
FAIL
FAIL
FAIL
PASS
PASS
PASS
FAIL
PASS
PASS
FAIL
FAIL
ScannerDocker Scout
Scanned
Mar 31, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
94.55
MIN
41
MAX
2228
P50
51
P90
98.3
P95
169.45
Connections
Max Concurrent
22
Avg Active
13.6
Empty Workflow QPS
Max QPS
71
Avg QPS
36.37
Avg Duration (ms)
215.61

License Compliance

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