diff --git a/bin/yashchiki b/bin/yashchiki
index 4a904865c621a036ba32228044edbc9b4f10107a..2f24443c906abe61220534795524cd799eb9af1a 100755
--- a/bin/yashchiki
+++ b/bin/yashchiki
@@ -1,6 +1,7 @@
 #!/usr/bin/env python3
 
 import argparse
+import copy
 import os
 import pathlib
 import subprocess
@@ -51,7 +52,9 @@ parser = argparse.ArgumentParser(
               to OUTPUT.
     """))
 
-all_stages=set(["fetch", "build-base-image", "build-base", "build-spack", "image"])
+all_stages=["fetch", "build-base-image", "build-base", "build-spack", "image", "update-build-cache"]
+default_stages = copy.copy(all_stages)
+default_stages.remove("update-build-cache")
 
 all_styles = list(os.listdir(os.path.dirname(os.path.realpath(__file__)) + "/../share/yashchiki/styles/"))
 
@@ -72,7 +75,7 @@ parser.add_argument(
     "--update-build-cache", action="store_true",
     help="Update build cache.")
 parser.add_argument(
-    "--stages", type=str, nargs="+", choices=all_stages, default=all_stages,
+    "--stages", type=str, nargs="+", choices=all_stages, default=default_stages,
     help="Stages of build to perform.")
 # optional with persistent default
 parser.add_argument(
@@ -351,7 +354,8 @@ run(str(pathlib.Path("share", "yashchiki", "styles", args.style,
     env)
 run("lib/yashchiki/build_sandbox.sh", env)
 run("lib/yashchiki/build_image.sh", env)
-if args.update_build_cache:
+
+if args.update_build_cache or "update-build-cache" in args.stages:
     run("lib/yashchiki/update_build_cache.sh", env, ["-c", args.output])
 
 if args.tmpdir is None: