diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 4e94c759d26..4293052cb44 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 0.15.5rc1
+current_version = 0.15.5
 commit = true
 tag = true
 tag_name = {new_version}
diff --git a/.circleci/config.yml b/.circleci/config.yml
index fed6f427c94..dcafe2da79e 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -23,7 +23,7 @@ executors:
 parameters:
   det-version:
     type: string
-    default: 0.15.5rc1
+    default: 0.15.5
 
 release-and-rc-filters: &release-and-rc-filters
   branches:
diff --git a/VERSION b/VERSION
index d4ecfe6ed8b..aa34a6a6ffb 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.15.5rc1
\ No newline at end of file
+0.15.5
\ No newline at end of file
diff --git a/cli/determined_cli/__version__.py b/cli/determined_cli/__version__.py
index 4ee9814aa17..32e2f393c72 100644
--- a/cli/determined_cli/__version__.py
+++ b/cli/determined_cli/__version__.py
@@ -1 +1 @@
-__version__ = "0.15.5rc1"
+__version__ = "0.15.5"
diff --git a/cli/setup.py b/cli/setup.py
index 56bf5192d96..1254e0abd4d 100644
--- a/cli/setup.py
+++ b/cli/setup.py
@@ -2,7 +2,7 @@
 
 setup(
     name="determined-cli",
-    version="0.15.5rc1",
+    version="0.15.5",
     author="Determined AI",
     author_email="hello@determined.ai",
     url="https://determined.ai/",
@@ -13,6 +13,6 @@
     packages=find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),
     python_requires=">=3.6",
     install_requires=[
-        "determined==0.15.5rc1",
+        "determined==0.15.5",
     ],
 )
diff --git a/common/determined_common/__version__.py b/common/determined_common/__version__.py
index 4ee9814aa17..32e2f393c72 100644
--- a/common/determined_common/__version__.py
+++ b/common/determined_common/__version__.py
@@ -1 +1 @@
-__version__ = "0.15.5rc1"
+__version__ = "0.15.5"
diff --git a/common/setup.py b/common/setup.py
index d6736d23bf8..157980e41fa 100644
--- a/common/setup.py
+++ b/common/setup.py
@@ -2,7 +2,7 @@
 
 setup(
     name="determined-common",
-    version="0.15.5rc1",
+    version="0.15.5",
     author="Determined AI",
     author_email="hello@determined.ai",
     url="https://determined.ai/",
@@ -14,7 +14,7 @@
     python_requires=">=3.5",
     package_data={"determined.common": ["py.typed"]},
     install_requires=[
-        "determined==0.15.5rc1",
+        "determined==0.15.5",
     ],
     zip_safe=False,
 )
diff --git a/deploy/determined_deploy/__version__.py b/deploy/determined_deploy/__version__.py
index 4ee9814aa17..32e2f393c72 100644
--- a/deploy/determined_deploy/__version__.py
+++ b/deploy/determined_deploy/__version__.py
@@ -1 +1 @@
-__version__ = "0.15.5rc1"
+__version__ = "0.15.5"
diff --git a/deploy/setup.py b/deploy/setup.py
index 17a6a43d95a..a49eb1383f8 100644
--- a/deploy/setup.py
+++ b/deploy/setup.py
@@ -2,7 +2,7 @@
 
 setup(
     name="determined-deploy",
-    version="0.15.5rc1",
+    version="0.15.5",
     author="Determined AI",
     author_email="hello@determined.ai",
     url="https://determined.ai/",
@@ -13,6 +13,6 @@
     packages=find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),
     python_requires=">=3.6",
     install_requires=[
-        "determined==0.15.5rc1",
+        "determined==0.15.5",
     ],
 )
diff --git a/harness/determined/__version__.py b/harness/determined/__version__.py
index 4ee9814aa17..32e2f393c72 100644
--- a/harness/determined/__version__.py
+++ b/harness/determined/__version__.py
@@ -1 +1 @@
-__version__ = "0.15.5rc1"
+__version__ = "0.15.5"
diff --git a/harness/determined/deploy/aws/templates/efs.yaml b/harness/determined/deploy/aws/templates/efs.yaml
index f98eee0f2be..3809e2213ab 100644
--- a/harness/determined/deploy/aws/templates/efs.yaml
+++ b/harness/determined/deploy/aws/templates/efs.yaml
@@ -77,7 +77,7 @@ Parameters:
   Version:
     Type: String
     Description: Determined version or commit for master image
-    Default: 0.15.5rc1
+    Default: 0.15.5
 
   DBPassword:
     Type: String
diff --git a/harness/determined/deploy/aws/templates/fsx.yaml b/harness/determined/deploy/aws/templates/fsx.yaml
index a993f85451f..a381d97506b 100644
--- a/harness/determined/deploy/aws/templates/fsx.yaml
+++ b/harness/determined/deploy/aws/templates/fsx.yaml
@@ -76,7 +76,7 @@ Parameters:
   Version:
     Type: String
     Description: Determined version or commit for master image
-    Default: 0.15.5rc1
+    Default: 0.15.5
 
   DBPassword:
     Type: String
diff --git a/harness/determined/deploy/aws/templates/govcloud.yaml b/harness/determined/deploy/aws/templates/govcloud.yaml
index 5e353fb2eca..20976a85cb8 100644
--- a/harness/determined/deploy/aws/templates/govcloud.yaml
+++ b/harness/determined/deploy/aws/templates/govcloud.yaml
@@ -42,7 +42,7 @@ Parameters:
   Version:
     Type: String
     Description: Determined version or commit for master docker image
-    Default: 0.15.5rc1
+    Default: 0.15.5
 
   DBPassword:
     Type: String
diff --git a/harness/determined/deploy/aws/templates/secure.yaml b/harness/determined/deploy/aws/templates/secure.yaml
index bb8674c0052..afbb28643dc 100644
--- a/harness/determined/deploy/aws/templates/secure.yaml
+++ b/harness/determined/deploy/aws/templates/secure.yaml
@@ -97,7 +97,7 @@ Parameters:
   Version:
     Type: String
     Description: Determined version or commit for master image
-    Default: 0.15.5rc1
+    Default: 0.15.5
 
   DBPassword:
     Type: String
diff --git a/harness/determined/deploy/aws/templates/simple.yaml b/harness/determined/deploy/aws/templates/simple.yaml
index d524aa53d0a..7e64429ba3c 100644
--- a/harness/determined/deploy/aws/templates/simple.yaml
+++ b/harness/determined/deploy/aws/templates/simple.yaml
@@ -68,7 +68,7 @@ Parameters:
   Version:
     Type: String
     Description: Determined version or commit for master docker image
-    Default: 0.15.5rc1
+    Default: 0.15.5
 
   DBPassword:
     Type: String
diff --git a/harness/determined/deploy/aws/templates/vpc.yaml b/harness/determined/deploy/aws/templates/vpc.yaml
index 451da87d866..cdf5c3390f7 100644
--- a/harness/determined/deploy/aws/templates/vpc.yaml
+++ b/harness/determined/deploy/aws/templates/vpc.yaml
@@ -77,7 +77,7 @@ Parameters:
   Version:
     Type: String
     Description: Determined version or commit for master image
-    Default: 0.15.5rc1
+    Default: 0.15.5
 
   DBPassword:
     Type: String
diff --git a/harness/setup.py b/harness/setup.py
index 5517fdfc9a5..d220d3c6739 100644
--- a/harness/setup.py
+++ b/harness/setup.py
@@ -2,7 +2,7 @@
 
 setup(
     name="determined",
-    version="0.15.5rc1",
+    version="0.15.5",
     author="Determined AI",
     author_email="hello@determined.ai",
     url="https://determined.ai/",
diff --git a/helm/charts/determined/Chart.yaml b/helm/charts/determined/Chart.yaml
index 4948e1bc50b..c53d8d6181a 100644
--- a/helm/charts/determined/Chart.yaml
+++ b/helm/charts/determined/Chart.yaml
@@ -9,4 +9,4 @@ home: https://github.com/determined-ai/determined.git
 # a non-release version (e.g., X.Y.Z.dev0) you will have to specify an
 # existing official release version (e.g., X.Y.Z) or specify a commit has
 # that has been publicly published (all commits from master).
-appVersion: "0.15.5rc1"
+appVersion: "0.15.5"
diff --git a/model_hub/examples/huggingface/language-modeling/clm_config.yaml b/model_hub/examples/huggingface/language-modeling/clm_config.yaml
index b5f85569884..b2b887eb983 100644
--- a/model_hub/examples/huggingface/language-modeling/clm_config.yaml
+++ b/model_hub/examples/huggingface/language-modeling/clm_config.yaml
@@ -32,7 +32,7 @@ searcher:
     epochs: 3
   smaller_is_better: true
 environment:
-  image: determinedai/model-hub-transformers:0.15.5rc1
+  image: determinedai/model-hub-transformers:0.15.5
 resources:
   slots_per_trial: 4
 # We add a bind_mount here so that cached data, tokenized data, and models will be saved to the
diff --git a/model_hub/examples/huggingface/language-modeling/mlm_config.yaml b/model_hub/examples/huggingface/language-modeling/mlm_config.yaml
index 7799c575435..aca4acc2cc1 100644
--- a/model_hub/examples/huggingface/language-modeling/mlm_config.yaml
+++ b/model_hub/examples/huggingface/language-modeling/mlm_config.yaml
@@ -35,7 +35,7 @@ searcher:
     epochs: 3
   smaller_is_better: true
 environment:
-  image: determinedai/model-hub-transformers:0.15.5rc1
+  image: determinedai/model-hub-transformers:0.15.5
 resources:
   slots_per_trial: 1
 # We add a bind_mount here so that cached data, tokenized data, and models will be saved to the
diff --git a/model_hub/examples/huggingface/language-modeling/plm_config.yaml b/model_hub/examples/huggingface/language-modeling/plm_config.yaml
index 3dba4ba2f9f..7784f35bc9a 100644
--- a/model_hub/examples/huggingface/language-modeling/plm_config.yaml
+++ b/model_hub/examples/huggingface/language-modeling/plm_config.yaml
@@ -36,7 +36,7 @@ searcher:
     epochs: 3
   smaller_is_better: true
 environment:
-  image: determinedai/model-hub-transformers:0.15.5rc1
+  image: determinedai/model-hub-transformers:0.15.5
 resources:
   slots_per_trial: 2
 # We add a bind_mount here so that cached data, tokenized data, and models will be saved to the
diff --git a/model_hub/examples/huggingface/multiple-choice/swag_config.yaml b/model_hub/examples/huggingface/multiple-choice/swag_config.yaml
index fc43e669bf3..381d8efe584 100644
--- a/model_hub/examples/huggingface/multiple-choice/swag_config.yaml
+++ b/model_hub/examples/huggingface/multiple-choice/swag_config.yaml
@@ -32,7 +32,7 @@ searcher:
     epochs: 3
   smaller_is_better: false
 environment:
-  image: determinedai/model-hub-transformers:0.15.5rc1
+  image: determinedai/model-hub-transformers:0.15.5
 resources:
   slots_per_trial: 2
 # We add a bind_mount here so that cached data, tokenized data, and models will be saved to the
diff --git a/model_hub/examples/huggingface/text-classification/glue_config.yaml b/model_hub/examples/huggingface/text-classification/glue_config.yaml
index 0330da297b6..d08fbfa02d6 100644
--- a/model_hub/examples/huggingface/text-classification/glue_config.yaml
+++ b/model_hub/examples/huggingface/text-classification/glue_config.yaml
@@ -44,7 +44,7 @@ searcher:
     epochs: 3
   smaller_is_better: false
 environment:
-  image: determinedai/model-hub-transformers:0.15.5rc1
+  image: determinedai/model-hub-transformers:0.15.5
 resources:
   slots_per_trial: 1
 # We add a bind_mount here so that cached data, tokenized data, and models will be saved to the
diff --git a/model_hub/examples/huggingface/text-classification/xnli_config.yaml b/model_hub/examples/huggingface/text-classification/xnli_config.yaml
index f464aded03f..3cd3ea43472 100644
--- a/model_hub/examples/huggingface/text-classification/xnli_config.yaml
+++ b/model_hub/examples/huggingface/text-classification/xnli_config.yaml
@@ -35,7 +35,7 @@ searcher:
     epochs: 2
   smaller_is_better: false
 environment:
-  image: determinedai/model-hub-transformers:0.15.5rc1
+  image: determinedai/model-hub-transformers:0.15.5
 resources:
   slots_per_trial: 2
 # We add a bind_mount here so that cached data, tokenized data, and models will be saved to the
diff --git a/model_hub/examples/huggingface/token-classification/ner_config.yaml b/model_hub/examples/huggingface/token-classification/ner_config.yaml
index 437b865ff9f..0129211cf31 100644
--- a/model_hub/examples/huggingface/token-classification/ner_config.yaml
+++ b/model_hub/examples/huggingface/token-classification/ner_config.yaml
@@ -33,7 +33,7 @@ searcher:
     epochs: 3
   smaller_is_better: false
 environment:
-  image: determinedai/model-hub-transformers:0.15.5rc1
+  image: determinedai/model-hub-transformers:0.15.5
 resources:
   slots_per_trial: 1
 # We add a bind_mount here so that cached data, tokenized data, and models will be saved to the
diff --git a/model_hub/model_hub/__version__.py b/model_hub/model_hub/__version__.py
index 4ee9814aa17..32e2f393c72 100644
--- a/model_hub/model_hub/__version__.py
+++ b/model_hub/model_hub/__version__.py
@@ -1 +1 @@
-__version__ = "0.15.5rc1"
+__version__ = "0.15.5"
diff --git a/model_hub/setup.py b/model_hub/setup.py
index 2009e29cb9c..81e9dfa11f2 100644
--- a/model_hub/setup.py
+++ b/model_hub/setup.py
@@ -2,7 +2,7 @@
 
 setup(
     name="model-hub",
-    version="0.15.5rc1",
+    version="0.15.5",
     author="Determined AI",
     author_email="hello@determined.ai",
     url="https://determined.ai/",
diff --git a/webui/react/config-overrides.js b/webui/react/config-overrides.js
index 4ea9d0fbbd5..890861a2584 100644
--- a/webui/react/config-overrides.js
+++ b/webui/react/config-overrides.js
@@ -102,7 +102,7 @@ const webpackConfig = override(
   // Webapp version is hardcoded but handled by `bumpversion`
   addWebpackPlugin(
     new webpack.DefinePlugin({
-      'process.env.VERSION': '"0.15.5rc1"',
+      'process.env.VERSION': '"0.15.5"',
       'process.env.IS_DEV': JSON.stringify(IS_DEV),
       'process.env.SERVER_ADDRESS': JSON.stringify(process.env.SERVER_ADDRESS),
     })