What is a ReAct loop AI?
A ReAct loop AI (Reasoning + Acting cycle) is an iterative execution model where an AI agent dynamically alternates between reasoning about a task, calling tools or handing off to sub-agents, observing results, and refining its response until it produces a final answer.
- Dynamic Tool Execution: Unlike rigid decision chains, a ReAct loop chooses actions dynamically based on real-time tool observations.
- In-Loop Triage: Skills and tools are selected inside the execution loop with full conversation context, eliminating extra classification model calls.
- Bounded Step Budgets: Runs execute within strict step limits and termination rules to prevent runaway loops and API cost spikes.
Without a ReAct loop, an AI model can only produce single-shot text. The loop enables agents to interact with external databases, APIs, and sub-agents dynamically.
┌──────────────────────────────────┐
│ │
reason ──> act ──> observe ───────────┘
│
└──> final answer
Without the loop, a model can produce only text in one shot. The loop is what lets it gather information it did not start with, react to what it finds, and correct course.
What counts as a step
In Anter, a run proceeds in steps, and each step is one sub-agent's turn — one or more tool calls, a handoff, or a final answer. Every run ends in exactly one final answer.
Steps are capped. Exceeding the ceiling ends the run with max_steps_exceeded, which usually signals that the routing graph needs simplifying or the budget is too low for the task. See step budget.
Triage inside the loop
Anter's loop is triage-first: skill selection happens inside the loop via a virtual load_skill tool, rather than as a separate classification call before it.
The difference is not cosmetic. A pre-flight classifier decides which specialist knowledge to load before seeing how the conversation develops, and costs an extra model call every time. In-loop triage has full context and costs nothing extra.
Loop, not chain
A fixed chain — always call A, then B, then answer — is not a ReAct loop. The distinguishing property is that the model chooses each next action based on what it just observed. That flexibility is the value, and also why bounded limits and termination reasons matter: an unbounded loop that can choose its own next action is an unbounded cost.