diff --git a/hermes_cli/gateway.py b/hermes_cli/gateway.py
index 9ee1d892b59b..5d3c29268d9d 100644
--- a/hermes_cli/gateway.py
+++ b/hermes_cli/gateway.py
@@ -1086,10 +1086,7 @@ def generate_launchd_plist() -> str:
KeepAlive
-
- SuccessfulExit
-
-
+
StandardOutPath
{log_dir}/gateway.log
@@ -1199,7 +1196,7 @@ def launchd_stop():
target = f"{_launchd_domain()}/{label}"
# bootout unloads the service definition so KeepAlive doesn't respawn
# the process. A plain `kill SIGTERM` only signals the process — launchd
- # immediately restarts it because KeepAlive.SuccessfulExit = false.
+ # would immediately restart it because KeepAlive is now unconditional.
# `hermes gateway start` re-bootstraps when it detects the job is unloaded.
try:
subprocess.run(["launchctl", "bootout", target], check=True, timeout=90)