A chatbot answers. A tool does one thing when you call it. An agent decides which tool to call, in what order, until the task is done or it gives up. That third part is the whole difference, and it is also where most disappointment comes from.
The three shapes, concretely
Ask a chatbot "what is the capital of France" and it answers. That is a lookup with better grammar.
Give a tool a file path and it returns the contents. That is a function call: the same input always produces the same output, and nothing happens until you invoke it.
Give an agent "fix the failing test in this repo" and it has to find the test, read the code, form a hypothesis, edit something, run the suite, read the error, and try again. No single step was specified. That is what you are paying for — and what makes failures confusing.
Why agents fail differently
A tool fails visibly. An agent fails plausibly: it produces a diff that looks right, a summary that reads well, or a test that passes for the wrong reason. The failure mode is not an error message, it is confidence.
This is why every serious agent workflow ends with a check the agent cannot fake: running the tests, opening the page, comparing against a spec. If you cannot verify the result cheaply, do not delegate the task.
The delegation test
Before handing something to an agent, ask three questions.
**Can I describe the goal without describing the steps?** If you need to spell out every action, you want a script, not an agent.
**Can I check the result in under a minute?** If verification takes longer than doing the task, delegation is theatre.
**What happens if it is subtly wrong?** If the answer is "we ship it", it is not ready for an agent.
Where this leaves you
Agents are best at work that is tedious rather than hard: finding the three places a rename should have reached, writing the test you were going to skip, reading a stack trace across six files. They are worst at decisions where the cost of a confident mistake is high and verification is expensive.
Next: prompts that survive contact with reality — what actually changes model output.