From ead3ac8f767b77bc84db8d2456e412eab04e2fe9 Mon Sep 17 00:00:00 2001 From: Sylvester Kaczmarek <16242628+sylvesterkaczmarek@users.noreply.github.com> Date: Mon, 17 Aug 2026 21:06:33 +0100 Subject: [PATCH 1/2] fix(retry): reject negative retry counts --- src/agents/retry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/agents/retry.py b/src/agents/retry.py index 5ad40f68ac..91d33a489f 100644 --- a/src/agents/retry.py +++ b/src/agents/retry.py @@ -210,7 +210,7 @@ def retry_policy_retries_all_transient_errors(policy: RetryPolicy | None) -> boo class ModelRetrySettings: """Opt-in runner-managed retry settings for model calls.""" - max_retries: int | None = None + max_retries: int | None = Field(default=None, ge=0) """Retries allowed after the initial model request.""" backoff: ModelRetryBackoffInput | None = None From b9f6a04747e703e83fd72b4230c65f115cb48757 Mon Sep 17 00:00:00 2001 From: Sylvester Kaczmarek <16242628+sylvesterkaczmarek@users.noreply.github.com> Date: Mon, 17 Aug 2026 21:06:40 +0100 Subject: [PATCH 2/2] test(retry): cover retry count validation --- tests/test_retry_count_validation.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 tests/test_retry_count_validation.py diff --git a/tests/test_retry_count_validation.py b/tests/test_retry_count_validation.py new file mode 100644 index 0000000000..928bf42a04 --- /dev/null +++ b/tests/test_retry_count_validation.py @@ -0,0 +1,16 @@ +from __future__ import annotations + +import pytest +from pydantic import ValidationError + +from agents.retry import ModelRetrySettings + + +def test_model_retry_settings_rejects_negative_max_retries() -> None: + with pytest.raises(ValidationError): + ModelRetrySettings(max_retries=-1) + + +def test_model_retry_settings_allows_zero_max_retries() -> None: + settings = ModelRetrySettings(max_retries=0) + assert settings.max_retries == 0