diff --git a/bmc/fs.cpp b/bmc/fs.cpp
index c43e310..4bad725 100644
--- a/bmc/fs.cpp
+++ b/bmc/fs.cpp
@@ -19,6 +19,7 @@
 #include <filesystem>
 #include <regex>
 #include <string>
+#include <system_error>
 #include <vector>
 
 namespace ipmi_flash
@@ -29,18 +30,30 @@
 {
     std::vector<std::string> output;
 
-    for (const auto& p : fs::recursive_directory_iterator(directory))
+    try
     {
-        auto ps = p.path().string();
-
-        /** TODO: openbmc/phosphor-ipmi-blobs/blob/de8a16e2e8/fs.cpp#L27 is
-         * nicer, may be worth finding a way to make this into a util.
-         */
-        if (std::regex_match(ps, std::regex(".+.json$")))
+        for (const auto& p : fs::recursive_directory_iterator(directory))
         {
-            output.push_back(ps);
+            auto ps = p.path().string();
+
+            /** TODO: openbmc/phosphor-ipmi-blobs/blob/de8a16e2e8/fs.cpp#L27 is
+             * nicer, may be worth finding a way to make this into a util.
+             */
+            if (std::regex_match(ps, std::regex(".+.json$")))
+            {
+                output.push_back(ps);
+            }
         }
     }
+    catch (const fs::filesystem_error& e)
+    {
+        // Ignore missing directories and just return an empty list
+        if (e.code() == std::error_code(ENOENT, std::generic_category()))
+        {
+            return output;
+        }
+        throw;
+    }
 
     return output;
 }
