.NET API
TraconRunBudgetExceededException
Tracon.Abstractions.dllThrown when a run tree’s budget runs out: its token or cost budget between two model turns, or a workflow step or function node that the budget refuses to start.
public sealed class TraconRunBudgetExceededException : TraconException, ISerializable- Inheritance
- object ← Exception ← TraconException ← TraconRunBudgetExceededException
- Implements
- ISerializable
- Inherited Members
- TraconException.ErrorType, Exception.GetBaseException(), Exception.ToString(), Exception.GetType(), Exception.TargetSite, Exception.Message, Exception.Data, Exception.InnerException, Exception.HelpLink, Exception.Source, Exception.HResult, Exception.StackTrace, object.GetType(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Remarks
Section titled “Remarks”Thrown by the wrapper installed inside the tool-call loop, one layer
before the raw provider client; Microsoft Agent Framework’s
function-invoking client does not catch it, so it propagates out of
AIAgent.RunAsync/RunStreamingAsync and fails the run.
This is a different fault from AgentRunBudget refusing to reserve a new child run (AgentRunBudget.TryReserveRun): for agent delegation that refusal is returned to the model as an ordinary tool result and the calling agent can recover; this exception ends the run that hit it.
A workflow step has no calling model to recover, so there the refused
reservation throws this exception too, and the workflow run ends
Failed with the same class as any other budget exhaustion.
A workflow function node is refused the same way, at its start, when the tree’s cost or time budget is already spent (the token budget does not stop a node). The message says “Could not start function node” and names the setting to raise. A node that is already running is never stopped by it, and the refusal is not retried.
A tool call is refused at its start when the tree’s token, cost or time budget is spent. The exception does not leave the tool: its message becomes the tool’s result (“… The tool call did not start.”), a streaming run records the call as failed, and the run ends at its next model call. A tool call that has started is never stopped.
Constructors
Section titled “Constructors”TraconRunBudgetExceededException()
Section titled “ TraconRunBudgetExceededException()”Creates a new error.
public TraconRunBudgetExceededException()TraconRunBudgetExceededException(string)
Section titled “ TraconRunBudgetExceededException(string)”Creates a new error.
public TraconRunBudgetExceededException(string message)Parameters
Section titled “Parameters”message string
The error message.
TraconRunBudgetExceededException(string, Exception)
Section titled “ TraconRunBudgetExceededException(string, Exception)”Creates a new error.
public TraconRunBudgetExceededException(string message, Exception innerException)Parameters
Section titled “Parameters”message string
The error message.
innerException Exception
The underlying error.
Fields
Section titled “Fields”RunBudgetExceededErrorType
Section titled “ RunBudgetExceededErrorType”The stable value written to TraconException.ErrorType.
public const string RunBudgetExceededErrorType = "run_budget_exceeded"Field Value
Section titled “Field Value”Properties
Section titled “Properties”ErrorType
Section titled “ ErrorType”Gets the stable error type name written to the run record.
public override string ErrorType { get; }Property Value
Section titled “Property Value”Remarks
Section titled “Remarks”Defaults to the full name of the exception type, so today’s behaviour does
not change. A derived type overrides this member when the record has to be
machine readable — for example TraconContentFilteredException
writes content_filtered. Reports and alert rules can rely on this
stable name instead of an assembly name.
The value is written to RunError.Type and carries no secret.