diff --git a/release/cc/create_artifacts.py b/release/cc/create_artifacts.py
index 6d13b24..26754ba 100644
--- a/release/cc/create_artifacts.py
+++ b/release/cc/create_artifacts.py
@@ -92,7 +92,8 @@
             build_file.write(tpl)
 
 
-def update_latest_target_aliases(container_configs_list, bazel_version):
+def update_latest_target_aliases(container_configs_list, bazel_version,
+                                 buildifier):
   """Updates the alias targets pointing to latest toolchain targets.
 
   Example latest aliases clang-ubuntu container are located in
@@ -123,13 +124,18 @@
                 [("\"%s\"" % config_type)
                  for config_type in container_configs.config_types]),
             EXTRA_CONSTRAINTS="\n".join(
-                [("\"%s\"," % constraint) for constraint in constraints])
-        )
+                [("\"%s\"," % constraint) for constraint in constraints]))
 
         build_file.write(tpl)
 
+    subprocess.check_call(
+        shlex.split(
+            "%s --lint=fix %s" %
+            (buildifier, container_configs.get_latest_aliases_build_path())))
 
-def generate_toolchain_definition(container_configs_list, bazel_version):
+
+def generate_toolchain_definition(container_configs_list, bazel_version,
+                                  buildifier):
   """Generates new cpp toolchain definitions.
 
   Example cpp toolchain definitions for clang-ubuntu container are located in
@@ -188,7 +194,8 @@
           build_file.write(tpl)
 
       subprocess.check_call(
-          shlex.split("buildifier %s" % container_configs.get_cpp_build_path()))
+          shlex.split("%s --lint=fix %s" %
+                      (buildifier, container_configs.get_cpp_build_path())))
 
 
 def generate_metadata(container_configs_list):
diff --git a/release/cc/execute_targets.py b/release/cc/execute_targets.py
index ef51565..0c8e704 100644
--- a/release/cc/execute_targets.py
+++ b/release/cc/execute_targets.py
@@ -37,7 +37,8 @@
     shutil.rmtree(TMP_DIR)
 
 
-def execute_and_extract_configs(container_configs_list, bazel_version):
+def execute_and_extract_configs(container_configs_list, bazel_version,
+                                buildifier):
   """Executes the docker_toolchain_autoconfig targets and extract configs.
 
   If configs already exist in this repo, the script will delete them and
@@ -107,3 +108,8 @@
         member = tar.getmember(os.path.join(CONFIG_REPO, config_file))
         member.name = os.path.basename(member.name)
         tar.extract(member, config.get_config_dir())
+        if config_file == "BUILD" or config_file.endswith("bzl"):
+          subprocess.check_call(
+              shlex.split("%s --lint=fix %s" %
+                          (buildifier,
+                           os.path.join(config.get_config_dir(), config_file))))
diff --git a/release/config_release.py b/release/config_release.py
index 6326d25..b211f32 100644
--- a/release/config_release.py
+++ b/release/config_release.py
@@ -78,10 +78,15 @@
       "--bazel_version",
       required=True,
       help="the version of Bazel used to generate toolchain configs")
+  parser.add_argument(
+      "-l",
+      "--buildifier",
+      default="/usr/bin/buildifier",
+      help="the full path of buildifier used to format toolchain configs")
   return parser.parse_args()
 
 
-def main(bazel_version):
+def main(bazel_version, buildifier):
   """Main function.
 
   Examples of usage:
@@ -98,16 +103,19 @@
   cc_create.create_targets(container_configs_list, bazel_version)
 
   # Execute the target and extract toolchain configs.
-  cc_execute.execute_and_extract_configs(container_configs_list, bazel_version)
+  cc_execute.execute_and_extract_configs(container_configs_list, bazel_version,
+                                         buildifier)
 
   # Generate METADATA file.
   cc_create.generate_metadata(container_configs_list)
 
   # Generate new cpp toolchain definition targets.
-  cc_create.generate_toolchain_definition(container_configs_list, bazel_version)
+  cc_create.generate_toolchain_definition(container_configs_list, bazel_version,
+                                          buildifier)
 
   # Update aliases to latest toolchain configs.
-  cc_create.update_latest_target_aliases(container_configs_list, bazel_version)
+  cc_create.update_latest_target_aliases(container_configs_list, bazel_version,
+                                         buildifier)
 
   # Update toolchain.bazelrc file.
   toolchain_flags.update_toolchain_bazelrc_file(container_configs_list,
@@ -120,4 +128,4 @@
 if __name__ == "__main__":
 
   args = _parse_arguments()
-  main(args.bazel_version)
+  main(args.bazel_version, args.buildifier)
