diff --git a/host/commands/launch/main.cc b/host/commands/launch/main.cc
index 7da6c07..e6f07cf 100644
--- a/host/commands/launch/main.cc
+++ b/host/commands/launch/main.cc
@@ -314,10 +314,11 @@
 }
 
 void LaunchE2eTest(cvd::ProcessMonitor* process_monitor,
-                   std::shared_ptr<CvdBootStateMachine> state_machine) {
+                   std::shared_ptr<CvdBootStateMachine> state_machine,
+                   const vsoc::CuttlefishConfig& config) {
   // Run a command that always succeeds if we are not running e2e tests
   std::string e2e_test_cmd =
-      FLAGS_run_e2e_test ? FLAGS_e2e_test_binary : "/bin/true";
+      config.run_e2e_test() ? config.e2e_test_binary() : "/bin/true";
   process_monitor->StartSubprocess(
       cvd::Command(e2e_test_cmd),
       [state_machine](cvd::MonitorEntry* entry) {
@@ -545,6 +546,8 @@
       FLAGS_socket_forward_proxy_binary);
   tmp_config_obj.set_socket_vsock_proxy_binary(FLAGS_socket_vsock_proxy_binary);
   tmp_config_obj.set_run_as_daemon(FLAGS_daemon);
+  tmp_config_obj.set_run_e2e_test(FLAGS_run_e2e_test);
+  tmp_config_obj.set_e2e_test_binary(FLAGS_e2e_test_binary);
 
   if(!AdbUsbEnabled(tmp_config_obj)) {
     tmp_config_obj.disable_usb_adb();
@@ -923,7 +926,7 @@
   PreLaunchInitializers::Initialize(*config);
 
   // Launch the e2e test after the shared memory is initialized
-  LaunchE2eTest(&process_monitor, boot_state_machine);
+  LaunchE2eTest(&process_monitor, boot_state_machine, *config);
 
   // Start the guest VM
   process_monitor.StartSubprocess(vm_manager->StartCommand(),
diff --git a/host/libs/config/cuttlefish_config.cpp b/host/libs/config/cuttlefish_config.cpp
index af7b36e..8ba016b 100644
--- a/host/libs/config/cuttlefish_config.cpp
+++ b/host/libs/config/cuttlefish_config.cpp
@@ -139,6 +139,8 @@
 const char* kSocketVsockProxyBinary = "socket_vsock_proxy_binary";
 
 const char* kRunAsDaemon = "run_as_daemon";
+const char* kRunE2eTest = "run_e2e_test";
+const char* kE2eTestBinary = "e2e_test_binary";
 }  // namespace
 
 namespace vsoc {
@@ -669,6 +671,22 @@
   (*dictionary_)[kRunAsDaemon] = run_as_daemon;
 }
 
+bool CuttlefishConfig::run_e2e_test() const {
+  return (*dictionary_)[kRunE2eTest].asBool();
+}
+
+void CuttlefishConfig::set_run_e2e_test(bool run_e2e_test) {
+  (*dictionary_)[kRunE2eTest] = run_e2e_test;
+}
+
+std::string CuttlefishConfig::e2e_test_binary() const {
+  return (*dictionary_)[kE2eTestBinary].asString();
+}
+
+void CuttlefishConfig::set_e2e_test_binary(const std::string& e2e_test_binary) {
+  (*dictionary_)[kE2eTestBinary] = e2e_test_binary;
+}
+
 // Creates the (initially empty) config object and populates it with values from
 // the config file if the CUTTLEFISH_CONFIG_FILE env variable is present.
 // Returns nullptr if there was an error loading from file
diff --git a/host/libs/config/cuttlefish_config.h b/host/libs/config/cuttlefish_config.h
index 24a14d8..59800a7 100644
--- a/host/libs/config/cuttlefish_config.h
+++ b/host/libs/config/cuttlefish_config.h
@@ -251,6 +251,12 @@
   void set_run_as_daemon(bool run_as_daemon);
   bool run_as_daemon() const;
 
+  void set_run_e2e_test(bool run_e2e_test);
+  bool run_e2e_test() const;
+
+  void set_e2e_test_binary(const std::string& e2e_test_binary);
+  std::string e2e_test_binary() const;
+
  private:
   std::unique_ptr<Json::Value> dictionary_;
 
