From 0be07b0553a7fd59bfd95038b0bcc20b7cf85152 Mon Sep 17 00:00:00 2001 From: Alex Fournier Date: Thu, 23 Jul 2026 13:41:47 -0700 Subject: [PATCH] fix(middleware): hide Relay control flag Signed-off-by: Alex Fournier --- hermes_cli/middleware.py | 3 ++- tests/hermes_cli/test_plugins.py | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/hermes_cli/middleware.py b/hermes_cli/middleware.py index f5833aa12e7a..a3b472a45636 100644 --- a/hermes_cli/middleware.py +++ b/hermes_cli/middleware.py @@ -132,7 +132,8 @@ def apply_tool_request_middleware( trace: List[Dict[str, Any]] = [] session_id = str(context.get("session_id") or "") - if session_id and not context.pop("skip_relay", False): + skip_relay = bool(context.pop("skip_relay", False)) + if session_id and not skip_relay: from agent import relay_runtime relay_args = relay_runtime.apply_tool_request_intercepts( diff --git a/tests/hermes_cli/test_plugins.py b/tests/hermes_cli/test_plugins.py index 3fdb6d1812d2..b540f70bd107 100644 --- a/tests/hermes_cli/test_plugins.py +++ b/tests/hermes_cli/test_plugins.py @@ -189,6 +189,32 @@ class TestPluginDiscovery: assert result.changed is True assert result.trace == [{"source": "same-payload"}] + def test_tool_request_middleware_hides_internal_skip_relay_flag( + self, + monkeypatch, + ): + observed = [] + + def middleware(**kwargs): + observed.append(kwargs) + return {"args": kwargs["args"]} + + manager = types.SimpleNamespace( + _middleware={"tool_request": [middleware]}, + invoke_middleware=lambda kind, **kwargs: [middleware(**kwargs)], + ) + monkeypatch.setattr("hermes_cli.plugins.get_plugin_manager", lambda: manager) + + apply_tool_request_middleware( + "read_file", + {"path": "README.md"}, + session_id="", + skip_relay=True, + ) + + assert len(observed) == 1 + assert "skip_relay" not in observed[0] + def test_execution_middleware_post_next_call_error_does_not_retry(self, monkeypatch): calls = []