diff --git a/steam-runtime-tools/utils-internal.h b/steam-runtime-tools/utils-internal.h
index ca463b8f548dc621b17c32a179afdefcafe7773c..19c3b0f49d6c4716acdf0d20f872ab8b5b69f3bd 100644
--- a/steam-runtime-tools/utils-internal.h
+++ b/steam-runtime-tools/utils-internal.h
@@ -30,6 +30,7 @@
 
 typedef enum
 {
+  SRT_HELPER_FLAGS_SEARCH_PATH = (1 << 0),
   SRT_HELPER_FLAGS_TIME_OUT = (1 << 1),
   SRT_HELPER_FLAGS_TIME_OUT_SOONER = (1 << 2),
   SRT_HELPER_FLAGS_NONE = 0
diff --git a/steam-runtime-tools/utils.c b/steam-runtime-tools/utils.c
index 3d8e1651eeeef491962545c9027a1906eedab5af..322619cf14f22e545fe87fb344217767e70848e0 100644
--- a/steam-runtime-tools/utils.c
+++ b/steam-runtime-tools/utils.c
@@ -237,6 +237,7 @@ _srt_get_helper (const char *helpers_path,
 {
   GPtrArray *argv = NULL;
   gchar *path;
+  gchar *prefixed;
 
   g_return_val_if_fail (base != NULL, NULL);
   g_return_val_if_fail (error == NULL || *error == NULL, NULL);
@@ -264,6 +265,21 @@ _srt_get_helper (const char *helpers_path,
         }
     }
 
+  if ((flags & SRT_HELPER_FLAGS_SEARCH_PATH) != 0
+      && helpers_path == NULL)
+    {
+      /* For helpers that are not part of steam-runtime-tools, such as
+       * *-wflinfo and *-vulkaninfo, we currently only search PATH,
+       * unless helpers_path has been overridden */
+      if (multiarch == NULL)
+        prefixed = g_strdup (base);
+      else
+        prefixed = g_strdup_printf ("%s-%s", multiarch, base);
+
+      g_ptr_array_add (argv, g_steal_pointer (&prefixed));
+      return argv;
+    }
+
   if (helpers_path == NULL)
     {
       helpers_path = _srt_get_helpers_path (error);