Skip to main content

Release v3.9.7

· 4 min read

What Changed

5
New Features
Bug Fixes
HTTP Request Node: SSL Verification Ignored with SSRF ProxyFixed a regression where disabling "Verify SSL certificate" on the HTTP Request node had no effect when SSRF proxy transports were configured. The verify setting now correctly propagates to per-scheme proxy transports.
Web App: User Avatar Displays Incorrect Black ColorFixed a bug where web app end-user avatars rendered as solid black instead of the correct color or image.
Chatflow: Form Fields with Chinese/Unicode Names DroppedFixed a regression from the streamdown refactor where the form field name validation regex silently discarded fields with Chinese or Unicode names, breaking existing workflows that relied on non-ASCII field names.
SSO/SCIM: Login Fails When Auto-Create Workspace Disabled but Default Workspace ExistsFixed an issue where SSO and SCIM users could not log in when automatic workspace creation was disabled, even if a default workspace was configured. Users can now authenticate as long as a default workspace is available.

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.7

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
Security vulnerabilities found in this release.0 Critical · 1 High CVE across all container images
ScannerDocker Scout
Scanned
Jul 01, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
139.89
MIN
115
MAX
565
P50
130
P90
141.4
P95
145.85
Connections
Max Concurrent
11
Avg Active
9.7
Empty Workflow QPS
Max QPS
26
Avg QPS
24.96
Avg Duration (ms)
202.3

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.11.0

· 6 min read

What Changed

10
New Features
Bug Fixes
Security: Path Traversal in Plugin Daemon Forwarding (CVE-2026-41948)Fixed CVE-2026-41948, a path traversal vulnerability in plugin-daemon request forwarding, inherited from the Community Edition 1.15.0 base.
Workflow and RAG Stability ImprovementsHardened HTTP timeouts, fixed vector store compatibility issues, refined workflow execution error handling, and reduced workflow startup and termination latency.

Upgrade Guide

Pre-Upgrade Checklist
Back up PostgreSQL database and Redis data
Confirm Kubernetes cluster has sufficient resources for rolling update
Schedule a maintenance window; the application is unusable until the migrations below complete
Immediately after upgrade, run flask rbac-migrate-member-roles (mandatory; members have no access until this finishes)
Then run flask rbac-migrate-dataset-permissions --apply (mandatory; dataset access is incorrect under RBAC until this finishes)
Then run flask backfill-plugin-auto-upgrade (mandatory) before restoring traffic
Upgrade Command

# Back up database first, then:

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

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
Security vulnerabilities found in this release.9 Critical · 32 High CVE across all container images
ScannerDocker Scout
Scanned
Jun 30, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
143.31
MIN
129
MAX
164
P50
137
P90
161.8
P95
163.4
Connections
Max Concurrent
18
Avg Active
17.5
Empty Workflow QPS
Max QPS
20.8
Avg QPS
19.99
Avg Duration (ms)
144.09

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.6

· 4 min read

What Changed

5
New Features
Bug Fixes
Chatflow Service API: Hang When Conversation ID Does Not ExistFixed an issue where the Chatflow Service API would hang indefinitely when called with a non-existent conversation ID. The API now creates a new conversation instead of blocking the request.
Chatflow: Images Lost in History After Page RefreshFixed a bug where images embedded in Chatflow responses would disappear after refreshing or reopening a conversation. Images generated during the chat session are now correctly persisted and displayed in conversation history.
Password Reset: Internal Server Error Due to ORM DetachedInstanceErrorFixed an Internal Server Error that occurred when using the password reset feature. The error was caused by a SQLAlchemy DetachedInstanceError in the password reset flow, which has been resolved by correcting the ORM session handling.

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.6

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
No security vulnerabilities fixed in this release.0 Critical · 28 High CVE across all container images
ScannerDocker Scout
Scanned
Jun 23, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
139.58
MIN
113
MAX
467
P50
129
P90
138
P95
195.1
Connections
Max Concurrent
11
Avg Active
9.4
Empty Workflow QPS
Max QPS
25.8
Avg QPS
24.04
Avg Duration (ms)
191.51

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.5

· 3 min read

What Changed

2
Security
CVE-2026-41947: Trace-Config Endpoint Tenant IsolationBackported the tenant isolation fix for the trace-config endpoint from Community v1.14.2. This prevents authenticated Editor users from bypassing tenant boundaries to modify arbitrary application trace configurations, which could lead to data leakage.
Sandbox Vulnerability RemediationUpgraded sandbox to version 0.2.15 with Chainguard base image to address multiple CVEs. The new base image provides improved security posture and reduced attack surface.

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.5

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
Security vulnerabilities found in this release.0 Critical · 0 High CVE across all container images
ScannerDocker Scout
Scanned
Jun 04, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
143.63
MIN
120
MAX
524
P50
132
P90
146.6
P95
152.4
Connections
Max Concurrent
12
Avg Active
10.5
Empty Workflow QPS
Max QPS
29.2
Avg QPS
26.86
Avg Duration (ms)
289.88

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.10.0

· 10 min read

What Changed

20
New Features
Bug Fixes
Security: SQL Injection Prevention in Model Credential APIThe enterprise gRPC endpoints CreateCredential and UpdateCredential now validate the customer_model_type field against a strict whitelist. Previously, a malformed value containing SQL injection characters could be written to the provider_models table, causing all downstream model-dependent APIs to return invalid_param errors requiring manual database intervention to recover.
Password Reset Fails After Dify UpgradeFixed a SQLAlchemy session management issue in the password reset flow that caused reset requests to fail following a Dify version upgrade.
Offline Environment: Plugin Install and Knowledge Pipeline Conversion FailFixed two bugs in air-gapped deployments. The enterprise admin backend no longer contacts marketplace.dify.ai when installing or assigning plugins, eliminating context deadline exceeded timeouts. Knowledge base-to-pipeline conversion no longer triggers marketplace queries in offline mode, resolving the 500 Internal Server Error.
Multimodal Knowledge Base: Images Not Accessible in BrowserFixed an issue where images in multimodal knowledge base documents were stored with the internal Kubernetes hostname (dify-api:5001) in their URLs, making them unreachable from user browsers. Image URLs now use the externally accessible domain.
OTLP Endpoint: Scheme-Prefixed URLs Now AcceptedThe OpenTelemetry endpoint validator previously rejected any URL containing :// (e.g., http://), blocking integrations with providers such as Alibaba Cloud ARMS that require a full URL with scheme. The validator now accepts http:// and https:// prefixed URLs correctly.
Collector: Pod Fails to Start When Postgres Password Contains Special CharacterFixed a URL parsing error in the enterprise collector that caused the pod to crash on startup when the Postgres connection string password contained a # character. The character was misinterpreted as a port separator, producing an "invalid port" parse error.
License: Spurious Reactivation Prompt After Pod RestartFixed a bug where restarting enterprise pods could trigger a license reactivation prompt due to a duplicate entry constraint violation on the cluster_id field in the licenses table. Duplicate cluster_id inserts on pod restart are now skipped, preventing the constraint violation.
Credentials: Multiple Default Credentials Can Be Set SimultaneouslyFixed a race condition in workspace credential management that allowed multiple members to each set their own credential as the default at the same time, resulting in more than one active default credential per workspace.
Plugin Daemon: Decode Endpoint Parameter Location MismatchFixed two mismatches between the enterprise service and plugin daemon API contract: the plugin_unique_identifier parameter on the decode/from_identifier endpoint was updated from request body to query parameter, and a separate parameter was migrated from body to form encoding. The enterprise service now sends both parameters in the correct location.
Plugin Installation: Compatible with uv Package ManagerPlugin installation now works correctly when uv is configured as the Python package manager, resolving failures in deployments that use uv instead of pip.
Code Node: Environment Variable References Display IncorrectlyFixed a frontend display bug in the workflow code node where references to environment variables and input parameters appeared malformed in the editor UI. The references were functional at runtime but rendered incorrectly, causing confusion during workflow authoring.
Knowledge Base: Incorrect Maximum Upload File Count DisplayedFixed a UI bug where the knowledge base upload dialog showed an inaccurate maximum number of files allowed per batch. The displayed limit now correctly reflects the configured value.
Model Credential: Context Length Lost When EditingFixed an issue where the configured context length value for a model credential was lost (reverted to empty) after editing and saving the credential. The context length is now correctly preserved through credential update operations.

Upgrade Guide

Pre-Upgrade Checklist
Back up PostgreSQL database and Redis data
Confirm Kubernetes cluster has sufficient resources for rolling update
If using custom Redis or Sentinel configuration, review the new unified Redis/MQ schema in Helm values or Docker Compose before upgrading
Upgrade Command

# Back up database first, then:

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

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
Security vulnerabilities found in this release.0 Critical · 69 High CVE across all container images
ScannerDocker Scout
Scanned
May 21, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
670.36
MIN
159
MAX
2091
P50
528
P90
931
P95
1511
Connections
Max Concurrent
7
Avg Active
0.9
Empty Workflow QPS
Max QPS
19.2
Avg QPS
18.99
Avg Duration (ms)
123.45

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.4

· 3 min read

What Changed

3
Security
Security: Vulnerability FixesFixed several vulnerabilities in previous version. Please see full CVE report for details.
Performance
Performance: TTFE OptimizationImproved Time To First Event (TTFE) latency through cache optimizations and reduced database roundtrips, delivering faster response times across LTS 3.9.x deployments.
Performance: Post-Run Delay OptimizationProvided a configurable EVENT_BUS_LISTENER_JOIN_TIMEOUT_MS to allow reducing idle delay after chatflow run completion, trading graceful stream disconnect for lower post-run latency in multi-turn conversations. 100 is a reasonable value.

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.4

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
Security vulnerabilities found in this release.0 Critical · 14 High CVE across all container images
ScannerDocker Scout
Scanned
May 20, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
139.64
MIN
108
MAX
537
P50
122
P90
137.6
P95
158.8
Connections
Max Concurrent
11
Avg Active
9.7
Empty Workflow QPS
Max QPS
29.6
Avg QPS
27.93
Avg Duration (ms)
274.32

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.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.0 Critical · 6 High CVE across all container images
ScannerDocker Scout
Scanned
May 08, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
123.93
MIN
101
MAX
477
P50
114.5
P90
124.5
P95
139.25
Connections
Max Concurrent
15
Avg Active
11.4
Empty Workflow QPS
Max QPS
41.2
Avg QPS
39.97
Avg Duration (ms)
109.96

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.0 Critical · 12 High CVE across all container images
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

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.23 Critical · 91 High CVE across all container images
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

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.