diff --git a/run_on_maap.py b/run_on_maap.py
index c2014acb5ddc574886a62370f9732c24bfa0c03c..20c0a23a22c8dfc50e8b2ad0a2c1fb44c27de64d 100644
--- a/run_on_maap.py
+++ b/run_on_maap.py
@@ -35,6 +35,7 @@ import shutil
 from pathlib import Path
 from typing import Dict, List
 import time
+import signal
 
 import click
 from maap.maap import MAAP
@@ -238,10 +239,15 @@ def main(
             print(f"\nMonitoring suspended. Press 'r' to resubmit failed jobs, "
                   f"press Ctrl-C to exit, or wait {timeout} seconds to resume.")
             try:
+                # wait for user input with timeout
+                signal.signal(signal.SIGALRM, lambda s, f: (_ for _ in ()).throw(TimeoutError()))
+                signal.alarm(timeout)
                 answer = input().strip().lower()
+                signal.alarm(0)
                 if answer == "r":
                     return "resubmit"
-                time.sleep(timeout)
+                return "resume"
+            except TimeoutError:
                 return "resume"
             except KeyboardInterrupt:
                 return "exit"