fix(cli): remove input() from /tools disable that freezes the terminal (#3918)

input() hangs inside prompt_toolkit's TUI event loop — this is a known
pitfall (AGENTS.md). The /tools disable and /tools enable commands used
input() for a Y/N confirmation prompt, causing the terminal to freeze
with no way to type a response.

Fix: remove the confirmation prompt. The user typing '/tools disable web'
is implicit consent. The change is applied directly with a status message.
This commit is contained in:
Teknium
2026-03-30 02:53:21 -07:00
committed by GitHub
parent efae525dc5
commit 0e592aa5b4

20
cli.py
View File

@@ -2789,22 +2789,12 @@ class HermesCLI:
print(f" MCP tool: /tools {subcommand} github:create_issue") print(f" MCP tool: /tools {subcommand} github:create_issue")
return return
# Confirm session reset before applying # Apply the change directly — the user typing the command is implicit
verb = "Disable" if subcommand == "disable" else "Enable" # consent. Do NOT use input() here; it hangs inside prompt_toolkit's
# TUI event loop (known pitfall).
verb = "Disabling" if subcommand == "disable" else "Enabling"
label = ", ".join(names) label = ", ".join(names)
_cprint(f"{_GOLD}{verb} {label}?{_RST}") _cprint(f"{_GOLD}{verb} {label}...{_RST}")
_cprint(f"{_DIM}This will save to config and reset your session so the "
f"change takes effect cleanly.{_RST}")
try:
answer = input(" Continue? [y/N] ").strip().lower()
except (EOFError, KeyboardInterrupt):
print()
_cprint(f"{_DIM}Cancelled.{_RST}")
return
if answer not in ("y", "yes"):
_cprint(f"{_DIM}Cancelled.{_RST}")
return
tools_disable_enable_command( tools_disable_enable_command(
Namespace(tools_action=subcommand, names=names, platform="cli")) Namespace(tools_action=subcommand, names=names, platform="cli"))