fix(tui-gateway): reject sessionless config.set model with 4001

Sessionless model switches (including legacy --global) could persist
profile defaults before session.create; fail closed unless --once.

Co-authored-by: Cursor <cursoragent@cursor.com>
(cherry picked from commit 1c4a29757bbde1304404f26b45b6becb841c069f)
This commit is contained in:
KoNit-K
2026-09-09 17:20:58 +08:00
committed by Teknium
parent 474143da81
commit 75b1b43ec1
2 changed files with 62 additions and 1 deletions
+7 -1
View File
@@ -140,7 +140,13 @@ def _set_model(rid, params, key, value, session):
with _session_profile_runtime_scope(session):
_persist_live_session_runtime(session)
else:
result = _apply_model_switch("", {"agent": None}, value, confirm_expensive_model=confirmed)
# --once keeps its specific 5001; other sessionless model sets 4001 so
# --global cannot persist profile defaults before session.create.
from hermes_cli.model_switch import parse_model_switch_args
if parse_model_switch_args(str(value)).is_once:
result = _apply_model_switch("", {"agent": None}, value, confirm_expensive_model=confirmed)
else:
return _err(rid, 4001, "config.set model requires a live session")
return _kv(rid, key, result["value"], warning=result["warning"],
confirm_required=result.get("confirm_required", False),
confirm_message=result.get("confirm_message", ""), scope=result.get("scope", "session"))