diff --git a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/FunctionInvokingChatClient.cs b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/FunctionInvokingChatClient.cs
index 6b1d3b3e905..0a8673dc91d 100644
--- a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/FunctionInvokingChatClient.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/FunctionInvokingChatClient.cs
@@ -61,7 +61,7 @@ public partial class FunctionInvokingChatClient : DelegatingChatClient
private readonly ActivitySource? _activitySource;
/// Maximum number of roundtrips allowed to the inner client.
- private int _maximumIterationsPerRequest = 10;
+ private int _maximumIterationsPerRequest = 40; // arbitrary default to prevent runaway execution
/// Maximum number of consecutive iterations that are allowed contain at least one exception result. If the limit is exceeded, we rethrow the exception instead of continuing.
private int _maximumConsecutiveErrorsPerRequest = 3;
@@ -142,7 +142,7 @@ public static FunctionInvocationContext? CurrentContext
///
///
/// The maximum number of iterations per request.
- /// The default value is 10.
+ /// The default value is 40.
///
///
///
diff --git a/test/Libraries/Microsoft.Extensions.AI.Tests/ChatCompletion/FunctionInvokingChatClientTests.cs b/test/Libraries/Microsoft.Extensions.AI.Tests/ChatCompletion/FunctionInvokingChatClientTests.cs
index 1379cef8bf0..b4ce2f1546c 100644
--- a/test/Libraries/Microsoft.Extensions.AI.Tests/ChatCompletion/FunctionInvokingChatClientTests.cs
+++ b/test/Libraries/Microsoft.Extensions.AI.Tests/ChatCompletion/FunctionInvokingChatClientTests.cs
@@ -36,7 +36,7 @@ public void Ctor_HasExpectedDefaults()
Assert.False(client.AllowConcurrentInvocation);
Assert.False(client.IncludeDetailedErrors);
- Assert.Equal(10, client.MaximumIterationsPerRequest);
+ Assert.Equal(40, client.MaximumIterationsPerRequest);
Assert.Equal(3, client.MaximumConsecutiveErrorsPerRequest);
Assert.Null(client.FunctionInvoker);
}
@@ -55,7 +55,7 @@ public void Properties_Roundtrip()
client.IncludeDetailedErrors = true;
Assert.True(client.IncludeDetailedErrors);
- Assert.Equal(10, client.MaximumIterationsPerRequest);
+ Assert.Equal(40, client.MaximumIterationsPerRequest);
client.MaximumIterationsPerRequest = 5;
Assert.Equal(5, client.MaximumIterationsPerRequest);