diff --git a/gnu/services.scm b/gnu/services.scm
index 11ba21e8245a9b4500a6a85ea466dc22b8505895..4b30399adca4f513f3e11c955871e8aec944d9ee 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -461,7 +461,12 @@ (define channels
 
   (mbegin %store-monad
     (let ((config-file (cond ((string? config-file)
-                              (local-file config-file "configuration.scm"))
+                              ;; CONFIG-FILE has been passed typically via
+                              ;; 'guix system reconfigure CONFIG-FILE' so we
+                              ;; can assume it's valid: tell 'local-file' to
+                              ;; not emit a warning.
+                              (local-file (assume-valid-file-name config-file)
+                                          "configuration.scm"))
                              ((not config-file)
                               #f)
                              (else