fix(approval): harden YOLO mode env parsing against quoted-bool strings

This commit is contained in:
hharry11
2026-04-27 06:42:32 +03:00
committed by Teknium
parent 158eb32686
commit 24130b7e53
5 changed files with 50 additions and 5 deletions

View File

@@ -19,6 +19,8 @@ import unicodedata
from typing import Optional
from hermes_cli.config import cfg_get
from utils import is_truthy_value
logger = logging.getLogger(__name__)
# Per-thread/per-task gateway session identity.
@@ -802,7 +804,7 @@ def check_dangerous_command(command: str, env_type: str,
# --yolo: bypass all approval prompts. Gateway /yolo is session-scoped;
# CLI --yolo remains process-scoped via the env var for local use.
if os.getenv("HERMES_YOLO_MODE") or is_current_session_yolo_enabled():
if is_truthy_value(os.getenv("HERMES_YOLO_MODE")) or is_current_session_yolo_enabled():
return {"approved": True, "message": None}
is_dangerous, pattern_key, description = detect_dangerous_command(command)
@@ -927,7 +929,7 @@ def check_all_command_guards(command: str, env_type: str,
# --yolo or approvals.mode=off: bypass all approval prompts.
# Gateway /yolo is session-scoped; CLI --yolo remains process-scoped.
approval_mode = _get_approval_mode()
if os.getenv("HERMES_YOLO_MODE") or is_current_session_yolo_enabled() or approval_mode == "off":
if is_truthy_value(os.getenv("HERMES_YOLO_MODE")) or is_current_session_yolo_enabled() or approval_mode == "off":
return {"approved": True, "message": None}
is_cli = os.getenv("HERMES_INTERACTIVE")