The boundary is action
A chatbot answers. An agent changes state. That state might be a file, a ticket, a database row, a browser page, a queued job, or a plan that survives multiple turns. The model is still generating tokens, but the surrounding system converts some of those tokens into actions.
This is why an agent is not defined by which model it uses. Claude, GPT, Gemini, or a local model can all sit behind the same agent loop. The architecture is the important thing: observe the world, decide what to do, act through a tool, observe the result, and repeat until a stop condition fires.
The minimum contract
- Goal: what outcome the agent is trying to produce.
- Model: the reasoning engine that chooses the next move.
- Tools: functions or hosted capabilities that can affect the outside world.
- State: conversation, scratchpad, memory, and run metadata.
- Policy: limits, permissions, approval rules, and stop conditions.
Miss one of those pieces and the system becomes a fancy prompt, not an agent. The embarrassing part is that a lot of products call everything an agent now. Don’t inherit marketing vocabulary. Inspect the loop.
Agency is bounded autonomy
Good agents are autonomous inside a boundary, not magically independent. You decide what they can see, which tools they can call, how much they can spend, how long they can run, and when they must stop for human approval.
That boundary is the product. A risky email-sending agent and a safe email-drafting agent may use the same model and prompt; the difference is the permission layer around the send tool.