diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c
index f8edfa38f3..9a58bc44ba 100644
--- a/menu/cbs/menu_cbs_ok.c
+++ b/menu/cbs/menu_cbs_ok.c
@@ -6009,7 +6009,12 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
             BIND_ACTION_OK(cbs, action_ok_parent_directory_push);
             break;
          case FILE_TYPE_DIRECTORY:
-            BIND_ACTION_OK(cbs, action_ok_directory_push);
+            if (cbs->enum_idx != MSG_UNKNOWN
+                  || menu_label_hash == MENU_LABEL_DISK_IMAGE_APPEND
+                  || menu_label_hash == MENU_LABEL_SUBSYSTEM_ADD)
+               BIND_ACTION_OK(cbs, action_ok_directory_push);
+            else
+               BIND_ACTION_OK(cbs, action_ok_push_random_dir);
             break;
          case FILE_TYPE_CARCHIVE:
             if (filebrowser_get_type() == FILEBROWSER_SCAN_FILE)