"Agent" has become the default word for anything with a model in it. That is a problem, because agents and workflows fail in completely different ways, and picking the wrong one costs you either reliability or months of work.
The actual distinction
A workflow has a fixed shape. Step one, then step two, then a branch, then step three. A model may write text or classify something along the way, but the path is decided by you, in advance.
An agent chooses its own path. You hand it a goal and a set of tools, and it decides which tool to call, reads the result, and decides again — looping until it thinks it is done.
That freedom is the whole point of an agent, and it is also the entire problem: a system that decides its own next step can decide wrong, and can do it in a different way every time you run it.
The test
Ask one question: can I draw the flowchart?
If you can write down every branch — even twenty of them — build the workflow. It will be faster, cheaper, testable, and when it breaks the logs will tell you exactly where.
If you genuinely cannot, because the next step depends on what the previous step found in a way you cannot enumerate, an agent is the right tool. That case is real, but it is rarer than the marketing suggests.
Where the flowchart test bites
Consider "read the incoming email, work out what the customer wants, and act on it". That sounds agentic. Write it out and it usually is not:
- Classify the email into one of six intents — one model call, fixed output shape.
- Extract the fields that intent needs — one model call, JSON schema.
- Branch on the intent — a switch node.
- Do the thing — six ordinary branches, one per intent.
Two model calls, a switch, and six deterministic paths. Testable, cheap, and when it goes wrong you know which of the six branches did it. The agent version of the same feature is a loop that occasionally issues a refund it should not have.
If you do need an agent
Three things make the difference between a demo and something you can leave running:
- Narrow tools. "Update the CRM record" is a good tool. "Run arbitrary SQL" is a liability. The tool boundary is your safety boundary, because the model will eventually call everything you give it.
- A step ceiling. Cap the loop. Without one, an agent that misreads a result will happily burn a hundred calls rediscovering the same dead end.
- A human gate on anything irreversible. Refunds, emails to customers, deletions. Approval steps are not a lack of ambition, they are what makes the thing deployable.
The honest summary
Agents are a genuine capability and worth learning. They are also slower, more expensive, harder to test and less predictable than the workflow most problems actually need. Reach for one when the flowchart test fails — not because the word is on the job description.
Both approaches are covered in the catalogue, including the boring parts that keep them running. See the courses.