Repository navigation
Releases
Releases Β· zitadel/zitadel
v4.20.1
4.20.1 (2026-11-03)
Bug Fixes
- apply log level and masking to OTEL log export (#12997) (64b3915), closes #12045 #12996 #12045 #12996
- drop user search trigger on session creation (#13027) (709968c), closes #9635 #6537
- login: keep the sessions cookie within the browser size limit (#12995) (4930911), closes #12968 #12656 #12735 #12520
- login: replace deepmerge in i18n message merging (#13013) (7c6ca4b), closes #13012
- made email addresses case insensitive (#12571) (13c9bca), closes #12025
- skip nil job insert results in debug logging (#12996) (c9af97c), closes #12045
v4.20.0
4.20.0 (2026-10-22)
β οΈ Upgrade notes
- Go 1.26: ZITADEL is now built with Go 1.26.10. Outbound TLS connections (SMTP, external IdPs, Actions and webhook targets, HTTP SMS providers) no longer accept certificate chains through the compromised eMudhra intermediate CAs (#12969); affected endpoints need a new certificate, the check can't be disabled. Go 1.26 also rejects URLs with invalid colons in the host and offers post-quantum hybrid key exchanges in TLS by default. If a configured URL or outbound connection stops working,
GODEBUG=urlstrictcolons=0orGODEBUG=tlssecpmlkem=0restores the previous behavior. - Login V2: the device code check is now signed with
ZITADEL_SESSION_COOKIE_SECRET, like the other login proofs. Users in the middle of a device authorization during the upgrade have to enter the user code again.
Bug Fixes
- console: derive environment.json api from the requested origin (#12893) (e01ccc9), closes #12009 #12195
- deps: build with Go 1.26.10 and golang.org/x/net v0.60.0 (#12932) (3fe639d), closes #12969 #12969
Features
- login: configurable text if external user can neither be create⦠(#12724) (fb4bc84), closes #12723
Performance Improvements
v4.19.5
4.19.5 (2026-10-15)
β οΈ Upgrade notes
- Device authorization: users now confirm the device on a consent screen. If a project requires a grant to authenticate, users without one can no longer sign in through the device flow. Custom login UIs need the
session.readpermission forGetDeviceAuthorizationRequest. - Login V2: email and invite verification, passkey registration and IdP linking are now also protected by
ZITADEL_SESSION_COOKIE_SECRET. If you use a value from an example configuration (e.g.SessionCookieSecretNeedsAtLeast32Charsfrom the compose.env.example), replace it with a random one. Users in the middle of one of these steps during the upgrade have to repeat it. - List limits: list endpoints now enforce the default and maximum query limits (A10018).
Bug Fixes
- api: enforce query limits on v2 list endpoints (#12875) (247d8ce), closes zitadel/zitadel#12881 zitadel/zitadel#12876
- api: restore query limits on v1 list endpoints (#12876) (fe4f4fd), closes zitadel/zitadel#12875 #2342 #2433 #2383 #2612 #2820 #2818 #2838 #3075 #3096 zitadel/zitadel#12881 zitadel/zitadel#12875
- console: don't load all projects on startup and prepare for list limits (#12881) (95dae90), closes zitadel/zitadel#12875 zitadel/zitadel#12876 #12875 #12875 #12876 #12876
- login: sign user verification check and IdP link proof with server secret (e32ba7a)
- reject invalid public host headers instead of ignoring them (6493aa9)
- require consent and authorization to approve device authorizations (a618740)
v4.19.4
4.19.4 (2026-10-01)
Bug Fixes
v4.19.3
v4.19.2
This release fixes three security vulnerabilities. We recommend all 4.x deployments upgrade.
Security
- GHSA-x4c7-fpcx-w9q6 (high): SAML identity-provider confusion leading to account takeover
- GHSA-jh92-5mrj-p2w2 (high): account takeover through the unsigned Login V2 session cookie
- GHSA-w4gv-rcwj-w6r5 (low): end-user impersonators could impersonate administrators
β οΈ Upgrade notes for the Login UI (Login V2)
Login V2 now signs its session cookie. Before or while upgrading:
- Set
ZITADEL_SESSION_COOKIE_SECRETon the Login UI, for exampleopenssl rand -base64 32. It must be at least 32 characters and the same on all replicas. A shorter value makes the Login UI report not ready. A comma-separated list allows rotating the secret without signing users out. - Without the secret the Login UI keeps working: it derives the signing key from its API credential and logs a deprecation warning at startup. Rotating that credential then signs all users out of the Login UI.
- Users sign in once more: existing cookies carry no signature and are ignored, so users have to sign in to the Login UI again after the upgrade, possibly more than once during a rolling deployment. Application sessions and issued tokens are not affected.
The Docker Compose deployment now sets the secret through LOGIN_SESSION_COOKIE_SECRET. Login V1 is not affected. See Session cookie signing for details, including how to rotate the secret.
4.19.2 (2026-09-28)
Bug Fixes
- idp: reject SAML assertions from a different IdP than the intent (450c056)
- login: sign session cookie entries (6e4a3d4)
- oidc: require admin.impersonation to impersonate administrators (2c37c41)
Performance Improvements
- eventstore: order by sort key as column list instead of row constructor (#12792) (f1891b8), closes #12703 #12789 #12703 #12790 #12789
- eventstore: order events API by creation date (#12789) (76cd246), closes #10626 #12703 #12703 #12703 #12703 #10626
- eventstore: read projection events per event type (#12753) (3a1b76e), closes #12703 #10626 #12703
v4.19.1
v4.19.0
v4.18.0
4.18.0 (2026-09-21)
Bug Fixes
- eventstore: add owners to unique constraints (#12740) (c397a60)
- eventstore: prevent projections from skipping events (#12703) (d49a665), closes #8509 #10480 #10560 #10710
- login: forward login_hint to the external IdP (#12760) (482ddc7), closes #6899 #11552 #12080 #12683
- login: verify API credentials at startup instead of in readiness probe (#12742) (473b0fc)
Features
- database: publish pgxpool pool stats as metrics (#12737) (ff7b399)
- telemetry: auto detect google attributes (#12694) (8195a58)
Performance Improvements
v4.17.3
4.17.3 (2026-09-04)
Bug Fixes
- crypto: use authenticated encryption for IDP intent tokens (41b1114)
- login: authorize IDP linking via enrollment guard, not isSessionValid (a53fbc4)
- login: translate authentication and OTP strings (#12668) (739e91e), closes #12481 #12226
- security: check auth method permission on the user's organization (20f0984)