diff --git a/src/xfel_calibrate/repeat.py b/src/xfel_calibrate/repeat.py
index ae1c877bffad671a18241953df7b50bb8022fa52..037a14ac96747d460e801caccf93daaff3566a4f 100644
--- a/src/xfel_calibrate/repeat.py
+++ b/src/xfel_calibrate/repeat.py
@@ -5,9 +5,9 @@ from datetime import datetime
 from pathlib import Path
 
 import nbformat
-import yaml
 from nbparameterise import extract_parameters, parameter_values, replace_definitions
 
+from cal_tools.tools import CalibrationMetadata
 from .calibrate import (
     JobGroup, SlurmOptions, run_finalize, get_pycalib_version,
 )
@@ -53,17 +53,16 @@ def main(argv=None):
     )
     print(f"New working directory: {working_dir}")
 
-    cal_metadata = yaml.safe_load(
-        (working_dir / 'calibration_metadata.yml').read_text('utf-8')
-    )
+    cal_metadata = CalibrationMetadata(working_dir)
     prev_parameters = cal_metadata['calibration-configurations']
 
     report_path = cal_metadata['report-path']
     out_folder = prev_parameters['out-folder']
     if args.out_folder:
         report_path = new_report_path(out_folder, report_path, args.out_folder)
-        out_folder = args.out_folder
+        out_folder = prev_parameters['out-folder'] = args.out_folder
         update_notebooks_params(working_dir, {'out_folder': out_folder})
+        cal_metadata.save()
 
     # finalize & some notebooks expect yaml metadata in the output folder
     Path(out_folder).mkdir(parents=True, exist_ok=True)