Start here. This is the direct spoken answer to practice first.
Overview
An agent that decides its next action still needs application-owned stopping conditions.
I define explicit terminal outcomes such as completed, needs user input, awaiting approval, blocked, failed, or budget exhausted. The runner enforces maximum turns, tool calls, elapsed time, tokens, cost, retries, and parallel branches. It stops repeated or non-progressing behavior and returns a useful status instead of asking the model to continue indefinitely.