Skip to main content

Release v3.9.8

· 4 min read

What Changed

6
Bug Fixes
Web App: Form state lost during config refetchFixed an issue where shared WebApp content was unmounted during /site, /parameters, and /meta background refetches, causing user form input to be lost. The content now stays mounted during refetches.
UI: Streamdown table fullscreen missing stylesFixed missing background, borders, and text colors in streamdown table fullscreen mode. The fullscreen view now correctly applies Dify design tokens via CSS overrides.
Security Fixes
Security: Harden default SSRF proxy egressHardened Docker Compose SSRF proxy defaults by denying loopback, private, CGN, link-local, ULA, multicast, reserved, and cloud metadata target networks before general egress. Removed reliance on the Squid image packaged allow rules. Added SSRF_PROXY_ALLOW_PRIVATE_IPS and SSRF_PROXY_ALLOW_PRIVATE_DOMAINS escape hatches for trusted private-network deployments.
Security: Require trial app registration for readsTrial apps must now be registered before read access is granted, closing a gap where unregistered trial apps could be read without proper registration.
Security: Email normalization for member servicesAdded strict email normalization (latin-only, trim spaces, reject invalid formats) in enterprise member and admin-member services to prevent email-based access bypass.
Security: CVE remediationUpdated vulnerable dependencies where fixes are available. See the Security CVE section below for detailed scan results. Note: quick-xml (via upstream uv) and nltk still have no upstream fix 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.8

Rollback

$ helm rollback dify 0

Security & CVE

Full CVE report →
No security vulnerabilities fixed in this release.0 Critical · 52 High CVE across all container images
ScannerDocker Scout
Scanned
Jul 27, 2026
Data Source
Docker
TTFE – Time To First Event (ms)
AVG
142.21
MIN
123
MAX
171
P50
140
P90
156.8
P95
160
Connections
Max Concurrent
11
Avg Active
9.7
Empty Workflow QPS
Max QPS
29.2
Avg QPS
26.99
Avg Duration (ms)
257.66

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.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
CVEs for the opt-in api-insecure image is excluded from the CVE table above.
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
CVEs for the opt-in api-insecure image is excluded from the CVE table above.
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
CVEs for the opt-in api-insecure image is excluded from the CVE table above.
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
CVEs for the opt-in api-insecure image is excluded from the CVE table above.
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
CVEs for the opt-in api-insecure image is excluded from the CVE table above.
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
CVEs for the opt-in api-insecure image is excluded from the CVE table above.
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
CVEs for the opt-in api-insecure image is excluded from the CVE table above.
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
CVEs for the opt-in api-insecure image is excluded from the CVE table above.
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
© 2026 Dify All rights reserved.Enterprise release information is confidential. Do not distribute externally.