Flux v2.9.1 released on 07-07-2026

Flux v2.9.1 is out now. It disables Flux variable substitution on all Flux CRDs to prevent post-build substitution from corrupting CRD schemas that contain ${…} sequences.
See the Flux repository on GitHub for the full changelog and upgrade guidance; follow the Upgrade Procedure for Flux v2.7+ when moving from v2.6.
What’s in this release
- Disable Flux variable substitution on all Flux CRDs by annotating them with
kustomize.toolkit.fluxcd.io/substitute: disabled, preventing CRD schema corruption when they contain${...}sequences. - Kustomize-controller fixes: SOPS dependency updated to fix
.inidecryption and a dry-run error where applying a resource with a strategic-merge patch could fail with “<resource> is invalid”. - Flux CLI fix: restore the in-memory Kustomization build so in-memory builds behave as expected; dependency updates to fluxcd/pkg and toolkit components included.
Upgrade notes
- The substitution change is applied across all controllers; follow the Upgrade Procedure for Flux v2.7+ for smooth upgrades from v2.6: https://github.com/fluxcd/flux2/discussions/5572
- If you need to roll back, reinstall the previous tag (for example v2.9.0) using your normal release management process.
Let us know how the upgrade goes — share any issues or observations from your environment so others can learn from them.


