diff --git a/notebooks/AGIPD/AGIPD_Correct_and_Verify.ipynb b/notebooks/AGIPD/AGIPD_Correct_and_Verify.ipynb
index 1eabbfbda7bae774b2ed215cbf2640b52df48a4a..4feebe7a40e57f040dcb8bac6a9e99153c6e1cb2 100644
--- a/notebooks/AGIPD/AGIPD_Correct_and_Verify.ipynb
+++ b/notebooks/AGIPD/AGIPD_Correct_and_Verify.ipynb
@@ -1631,6 +1631,7 @@
   }
  ],
  "metadata": {
+  "euxfel_not_reproducible_params": ["slopes_ff_from_path"],
   "kernelspec": {
    "display_name": "Python 3",
    "language": "python",
diff --git a/src/xfel_calibrate/nb_args.py b/src/xfel_calibrate/nb_args.py
index 45833dccfbb582c867e72de65d2b6f563969dad5..f63265ca7f4ddeb2dc753b53f03c1caedc127141 100644
--- a/src/xfel_calibrate/nb_args.py
+++ b/src/xfel_calibrate/nb_args.py
@@ -411,32 +411,6 @@ def parse_argv_and_load_nb(argv) -> Tuple[Dict, NBDetails]:
         print("Not one of the known calibrations or detectors")
         sys.exit(1)
 
-    # Pick out any arguments that may prevent reproducibility from
-    # working, sorted alphabetically and converted back to their
-    # canonical representation.
-    not_reproducible_args = sorted(
-        ('--' + x.replace('_', '-')
-         for x in ['skip_env_freeze']
-         if getattr(args, x))
-    )
-
-    # If any of these arguments are set, present a warning.
-    if not_reproducible_args:
-        print('WARNING: One or more command line arguments ({}) may prevent '
-              'this specific correction result from being reproducible based '
-              'on its metadata. It may not be possible to restore identical '
-              'output data files when they have been deleted or lost. Please '
-              'ensure that the data retention policy of the chosen storage '
-              'location is sufficient for your '
-              'needs.'.format(', '.join(not_reproducible_args)))
-
-        if not args.not_reproducible:
-            # If not explicitly specified that reproducibility may be
-            # broken, remind the user and exit.
-            print('To proceed, you can explicitly allow reproducibility to '
-                  'be broken by adding --not-reproducible')
-            sys.exit(1)
-
     if nb_info["notebook"]:
         notebook = os.path.join(PKG_DIR, nb_info["notebook"])
     else:
@@ -469,6 +443,7 @@ def parse_argv_and_load_nb(argv) -> Tuple[Dict, NBDetails]:
         extend_params(nb, ext_func, argv)
 
     default_params = extract_parameters(nb, lang='python')
+    default_values = {p.name: p.value for p in default_params}
 
     parser = make_initial_parser()
     parser.description = make_epilog(nb)
@@ -476,6 +451,35 @@ def parse_argv_and_load_nb(argv) -> Tuple[Dict, NBDetails]:
 
     arg_dict = deconsolize_args(vars(parser.parse_args(argv[1:])))
 
+    # Pick out any arguments that may prevent reproducibility from
+    # working
+    not_reproducible_args = [
+         x for x in ['skip_env_freeze']
+         if getattr(args, x)
+    ] + [
+        p for p in nb.metadata.get("euxfel_not_reproducible_params", [])
+        if p in arg_dict and arg_dict[p] != default_values[p]
+    ]
+
+    # If any of these arguments are set, present a warning.
+    if not_reproducible_args:
+        fmted = ', '.join(sorted('--' + x.replace('_', '-')
+                                 for x in not_reproducible_args))
+        print(f'WARNING: One or more command line arguments ({fmted}) may prevent '
+              'this specific correction result from being reproducible based '
+              'on its metadata. It may not be possible to restore identical '
+              'output data files when they have been deleted or lost. Please '
+              'ensure that the data retention policy of the chosen storage '
+              'location is sufficient for your '
+              'needs.')
+
+        if not args.not_reproducible:
+            # If not explicitly specified that reproducibility may be
+            # broken, remind the user and exit.
+            print('To proceed, you can explicitly allow reproducibility to '
+                  'be broken by adding --not-reproducible')
+            sys.exit(1)
+
     user_venv = nb_info.get("user", {}).get("venv")
     if user_venv is not None:
         user_venv = Path(user_venv.format(**arg_dict))