diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e60c9469c2409c4aab41cf4e1ba68effcd379a16..cafc531eee8192450927c068a3819e52a2611d52 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -96,6 +96,13 @@ Then you can run the end-to-end tests with:
 make e2e
 ```
 
+When the output of the Flux CLI changes, to automatically update the golden
+files used in the test, pass `-update` flag to the test as:
+
+```bash
+make e2e TEST_ARGS="-update"
+```
+
 Teardown the e2e environment with:
 
 ```bash
diff --git a/Makefile b/Makefile
index 29ca788a28a1ce91a521592aa655919004e08b1d..2114946862e8bd9f62490fb9939b8c712a58c8e7 100644
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,7 @@ test: $(EMBEDDED_MANIFESTS_TARGET) tidy fmt vet install-envtest
 	KUBEBUILDER_ASSETS="$(KUBEBUILDER_ASSETS)" go test ./... -coverprofile cover.out --tags=unit
 
 e2e: $(EMBEDDED_MANIFESTS_TARGET) tidy fmt vet
-	TEST_KUBECONFIG=$(TEST_KUBECONFIG) go test ./cmd/flux/... -coverprofile e2e.cover.out --tags=e2e -v -failfast
+	TEST_KUBECONFIG=$(TEST_KUBECONFIG) go test ./cmd/flux/... -coverprofile e2e.cover.out --tags=e2e -v -failfast $(TEST_ARGS)
 
 test-with-kind: install-envtest
 	make setup-kind
diff --git a/cmd/flux/main_test.go b/cmd/flux/main_test.go
index c41eb3e6813718bdee79b5704a454fdf78cc42fc..5bc3f1ff1765a8996c071a2e04e17e9f7581c121 100644
--- a/cmd/flux/main_test.go
+++ b/cmd/flux/main_test.go
@@ -20,6 +20,7 @@ import (
 	"bufio"
 	"bytes"
 	"context"
+	"flag"
 	"fmt"
 	"io"
 	"os"
@@ -42,6 +43,9 @@ import (
 
 var nextNamespaceId int64
 
+// update allows golden files to be updated based on the current output.
+var update = flag.Bool("update", false, "update golden files")
+
 // Return a unique namespace with the specified prefix, for tests to create
 // objects that won't collide with each other.
 func allocateNamespace(prefix string) string {
@@ -298,6 +302,13 @@ func assertGoldenTemplateFile(goldenFile string, templateValues map[string]strin
 			expectedOutput = string(goldenFileContents)
 		}
 		if assertErr := assertGoldenValue(expectedOutput)(output, err); assertErr != nil {
+			// Update the golden files if comparision fails and the update flag is set.
+			if *update && output != "" {
+				if err := os.WriteFile(goldenFile, []byte(output), 0644); err != nil {
+					return fmt.Errorf("failed to update golden file '%s': %v", goldenFile, err)
+				}
+				return nil
+			}
 			return fmt.Errorf("Mismatch from golden file '%s': %v", goldenFile, assertErr)
 		}
 		return nil
diff --git a/cmd/flux/testdata/helmrelease/get_helmrelease_from_git.golden b/cmd/flux/testdata/helmrelease/get_helmrelease_from_git.golden
index 1cfeacc306e2fee7df3ceacdd7b5a189f6a5013c..e802cb36e6fc0ca386d0a52c132353021d886009 100644
--- a/cmd/flux/testdata/helmrelease/get_helmrelease_from_git.golden
+++ b/cmd/flux/testdata/helmrelease/get_helmrelease_from_git.golden
@@ -1,2 +1,2 @@
-NAME 	READY	MESSAGE                         	REVISION	SUSPENDED 
-thrfg	True 	Release reconciliation succeeded	6.0.0   	False    	
+NAME 	REVISION	SUSPENDED	READY	MESSAGE                          
+thrfg	6.0.0   	False    	True 	Release reconciliation succeeded	
diff --git a/cmd/flux/testdata/image/get_image_policy_regex.golden b/cmd/flux/testdata/image/get_image_policy_regex.golden
index 8486fb1fb9bb087facf6825ba684766b761f3aab..b7cf40a94caa8c871af907bdd147fce22a09a98e 100644
--- a/cmd/flux/testdata/image/get_image_policy_regex.golden
+++ b/cmd/flux/testdata/image/get_image_policy_regex.golden
@@ -1,2 +1,2 @@
-NAME         	READY	MESSAGE                                                               	LATEST IMAGE                       
-podinfo-regex	True 	Latest image tag for 'ghcr.io/stefanprodan/podinfo' resolved to: 5.0.0	ghcr.io/stefanprodan/podinfo:5.0.0	
+NAME         	LATEST IMAGE                      	READY	MESSAGE                                                                
+podinfo-regex	ghcr.io/stefanprodan/podinfo:5.0.0	True 	Latest image tag for 'ghcr.io/stefanprodan/podinfo' resolved to: 5.0.0	
diff --git a/cmd/flux/testdata/image/get_image_policy_semver.golden b/cmd/flux/testdata/image/get_image_policy_semver.golden
index 6f8a17dd88f2bb465371de3436fdc75f8b8bc891..30ce52b725c0fff34c9cddf13af750e461d71ce9 100644
--- a/cmd/flux/testdata/image/get_image_policy_semver.golden
+++ b/cmd/flux/testdata/image/get_image_policy_semver.golden
@@ -1,2 +1,2 @@
-NAME          	READY	MESSAGE                                                               	LATEST IMAGE                       
-podinfo-semver	True 	Latest image tag for 'ghcr.io/stefanprodan/podinfo' resolved to: 5.0.3	ghcr.io/stefanprodan/podinfo:5.0.3	
+NAME          	LATEST IMAGE                      	READY	MESSAGE                                                                
+podinfo-semver	ghcr.io/stefanprodan/podinfo:5.0.3	True 	Latest image tag for 'ghcr.io/stefanprodan/podinfo' resolved to: 5.0.3	
diff --git a/cmd/flux/testdata/kustomization/get_kustomization_from_git.golden b/cmd/flux/testdata/kustomization/get_kustomization_from_git.golden
index a613aa341249c5b058b73ec4e0d656e449bd9353..b4f7e31c116338d1011f290d68e7ea6baa0e4590 100644
--- a/cmd/flux/testdata/kustomization/get_kustomization_from_git.golden
+++ b/cmd/flux/testdata/kustomization/get_kustomization_from_git.golden
@@ -1,2 +1,2 @@
-NAME	READY	MESSAGE                        	REVISION     	SUSPENDED 
-tkfg	True 	Applied revision: 6.0.0/627d5c4	6.0.0/627d5c4	False    	
+NAME	REVISION     	SUSPENDED	READY	MESSAGE                         
+tkfg	6.0.0/627d5c4	False    	True 	Applied revision: 6.0.0/627d5c4