diff --git a/epicardium/modules/lifecycle.c b/epicardium/modules/lifecycle.c
index 375cfef61dd9972fbb418f72659a1e30e69ef615..650664d2e97ee15ecbd35199e176ded925a78bfb 100644
--- a/epicardium/modules/lifecycle.c
+++ b/epicardium/modules/lifecycle.c
@@ -1,6 +1,7 @@
 #include "epicardium.h"
 #include "modules/log.h"
 #include "modules/modules.h"
+#include "modules/config.h"
 #include "api/dispatcher.h"
 #include "api/interrupt-sender.h"
 #include "l0der/l0der.h"
@@ -49,6 +50,7 @@ static volatile struct load_info async_load = {
 
 /* Whether to write the menu script before attempting to load. */
 static volatile bool write_menu = false;
+static bool execute_elfs        = false;
 
 /* Helpers {{{ */
 
@@ -88,9 +90,7 @@ static int load_stat(char *name)
  */
 static int do_load(struct load_info *info)
 {
-#if defined(JAILBREAK_CARD10) && (JAILBREAK_CARD10 == 1)
 	struct l0dable_info l0dable;
-#endif
 	int res;
 
 	if (*info->name == '\0') {
@@ -129,18 +129,22 @@ static int do_load(struct load_info *info)
 	case PL_PYTHON_INTERP:
 		core1_load(PYCARDIUM_IVT, info->name);
 		break;
-#if defined(JAILBREAK_CARD10) && (JAILBREAK_CARD10 == 1)
 	case PL_L0DABLE:
-		res = l0der_load_path(info->name, &l0dable);
-		if (res != 0) {
-			LOG_ERR("lifecycle", "l0der failed: %d\n", res);
-			xSemaphoreGive(api_mutex);
-			return -ENOEXEC;
+		if (execute_elfs) {
+			res = l0der_load_path(info->name, &l0dable);
+			if (res != 0) {
+				LOG_ERR("lifecycle", "l0der failed: %d\n", res);
+				xSemaphoreGive(api_mutex);
+				return -ENOEXEC;
+			}
+			core1_load(l0dable.isr_vector, "");
+		} else {
+			LOG_WARN(
+				"lifecycle",
+				"Execution of .elf l0dables is disabled"
+			);
 		}
-		core1_load(l0dable.isr_vector, "");
-
 		break;
-#endif
 	default:
 		LOG_ERR("lifecyle",
 			"Attempted to load invalid payload (%s)",
@@ -379,6 +383,8 @@ void vLifecycleTask(void *pvParameters)
 
 	hardware_init();
 
+	execute_elfs = config_get_boolean(OptionExecuteElf);
+
 	/* When triggered, reset core 1 to menu */
 	while (1) {
 		ulTaskNotifyTake(pdTRUE, portMAX_DELAY);