diff --git a/include/password.hpp b/include/password.hpp
index 2b320a5..4b2d788 100644
--- a/include/password.hpp
+++ b/include/password.hpp
@@ -59,7 +59,8 @@
      *  @param[in] systemBus - bus connection
      */
     Password(sdbusplus::asio::object_server& objectServer,
-             std::shared_ptr<sdbusplus::asio::connection>& systemBus);
+             std::shared_ptr<sdbusplus::asio::connection>& systemBus,
+             std::string persistPath);
 
     /** @brief Set the BIOS attribute with a new value, the new value is added
      *         to the PendingAttribute.
diff --git a/src/main.cpp b/src/main.cpp
index 8c2d78b..1e960ae 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -24,8 +24,17 @@
 #include <sdbusplus/asio/connection.hpp>
 #include <sdbusplus/asio/object_server.hpp>
 
-int main()
+PHOSPHOR_LOG2_USING;
+
+int main(int argc, char** argv)
 {
+    std::string persistPath = BIOS_PERSIST_PATH;
+    if (argc >= 2)
+    {
+        persistPath = argv[1];
+        info("Using temporary path {PATH}", "PATH", persistPath);
+    }
+
     boost::asio::io_service io;
     auto systemBus = std::make_shared<sdbusplus::asio::connection>(io);
 
@@ -39,7 +48,7 @@
      * Object path : /xyz/openbmc_project/bios_config/manager
      * Interface : xyz.openbmc_project.BIOSConfig.Manager
      */
-    bios_config::Manager manager(objectServer, systemBus, BIOS_PERSIST_PATH);
+    bios_config::Manager manager(objectServer, systemBus, persistPath);
 
     /**
      * Password class is responsible for handling methods and signals under
@@ -48,7 +57,7 @@
      * Object path : /xyz/openbmc_project/bios_config/password
      * Interface : xyz.openbmc_project.BIOSConfig.Password
      */
-    bios_config_pwd::Password password(objectServer, systemBus);
+    bios_config_pwd::Password password(objectServer, systemBus, persistPath);
 
     io.run();
     return 0;
diff --git a/src/password.cpp b/src/password.cpp
index 03aeb79..6503e53 100644
--- a/src/password.cpp
+++ b/src/password.cpp
@@ -15,7 +15,6 @@
 */
 #include "password.hpp"
 
-#include "config.hpp"
 #include "xyz/openbmc_project/BIOSConfig/Common/error.hpp"
 #include "xyz/openbmc_project/Common/error.hpp"
 
@@ -235,7 +234,8 @@
     }
 }
 Password::Password(sdbusplus::asio::object_server& objectServer,
-                   std::shared_ptr<sdbusplus::asio::connection>& systemBus) :
+                   std::shared_ptr<sdbusplus::asio::connection>& systemBus,
+                   std::string persistPath) :
     sdbusplus::xyz::openbmc_project::BIOSConfig::server::Password(
         *systemBus, objectPathPwd),
     objServer(objectServer), systemBus(systemBus)
@@ -243,7 +243,7 @@
     lg2::debug("BIOS config password is running");
     try
     {
-        fs::path biosDir(BIOS_PERSIST_PATH);
+        fs::path biosDir(persistPath);
         fs::create_directories(biosDir);
         seedFile = biosDir / biosSeedFile;
     }
