An agent is a software system that uses a model together with tools, memory, instructions, and control logic to pursue a goal across multiple steps.
Unlike a single LLM call, an agent can decide what to do next, retrieve context, call tools, inspect results, update state, recover from errors, and continue working until it reaches a stopping condition.
The system around the model that makes this possible is often called the harness. The harness manages the agent loop, tool execution, memory, permissions, context handling, retries, and safety rules. While the model generates reasoning and language, the harness determines how the agent actually operates.
This creates new failure modes beyond model quality alone: bad planning, wrong tool selection, invalid arguments, missing context, runaway loops, unsafe actions, or broken coordination between components.
In production, agent reliability depends on the entire system, not just the model. The harness, tools, context, memory, policies, traces, and evals determine whether the agent consistently behaves the way teams intend.