diff --git a/cli.py b/cli.py index 76e10e29f4..966c63c0bf 100644 --- a/cli.py +++ b/cli.py @@ -2145,7 +2145,10 @@ class HermesCLI: elif CLI_CONFIG.get("max_turns"): # Backwards compat: root-level max_turns self.max_turns = CLI_CONFIG["max_turns"] elif os.getenv("HERMES_MAX_ITERATIONS"): - self.max_turns = int(os.getenv("HERMES_MAX_ITERATIONS")) + try: + self.max_turns = int(os.getenv("HERMES_MAX_ITERATIONS", "")) + except (TypeError, ValueError): + self.max_turns = 90 else: self.max_turns = 90 diff --git a/tests/cli/test_cli_init.py b/tests/cli/test_cli_init.py index d2d6398b96..bf1f347e50 100644 --- a/tests/cli/test_cli_init.py +++ b/tests/cli/test_cli_init.py @@ -75,6 +75,11 @@ class TestMaxTurnsResolution: cli_obj = _make_cli(env_overrides={"HERMES_MAX_ITERATIONS": "42"}) assert cli_obj.max_turns == 42 + def test_invalid_env_var_max_turns_falls_back_to_default(self): + """Invalid env values should not crash CLI init.""" + cli_obj = _make_cli(env_overrides={"HERMES_MAX_ITERATIONS": "not-a-number"}) + assert cli_obj.max_turns == 90 + def test_legacy_root_max_turns_is_used_when_agent_key_exists_without_value(self): cli_obj = _make_cli(config_overrides={"agent": {}, "max_turns": 77}) assert cli_obj.max_turns == 77