AI agents in delivery: where they pay off and where they do not
If you can draw the flowchart in advance, it is a workflow. Agents only when the path depends on what gets discovered along the way.
"AI agent" has become an umbrella term for very different things, and that imprecision costs money. Teams build complex orchestration for problems a fixed pipeline would solve better, cheaper, and with less chance of failing at 3am.
A workflow and an agent are not the same thing
The distinction Anthropic proposes in its agent engineering work is the most useful one available today:
- Workflow: the LLM runs inside predefined code paths. You decide the sequence; the model fills in the steps.
- Agent: the LLM directs its own path, picks its tools, and decides when it is done.
Workflows are predictable, cheap to debug and easy to test. Agents are flexible and expensive, in tokens, in latency, and in how hard they are to investigate when they go wrong.
The recommendation that comes with the distinction is blunt: use the simplest thing that works, and add autonomy only when the problem genuinely demands it.
Start with the workflow, almost always
Most software delivery tasks have a known sequence. Generating release notes from commits, classifying and routing a ticket, updating a changelog, translating documentation. None of that needs an agent choosing strategy: it needs a chain with validation between steps.
The rule of thumb: if you can draw the flowchart in advance, it is a workflow. If the path depends on what gets discovered along the way, then it is a candidate for an agent.
The patterns that actually show up
Four recur in practically every serious project:
- Chaining. One call's output becomes the next call's input, with a programmatic check between them. The check is what stops an error from propagating.
- Routing. A cheap call classifies, and each class goes to a specialised prompt or model. Saves money and improves quality at the same time.
- Parallelisation. Running the same analysis from different angles and aggregating, or splitting independent work. Lowers perceived latency.
- Evaluator and optimiser. One generates, another critiques against explicit criteria, iterating a few times. Works well when there is an objective criterion, and becomes an expensive infinite loop when there is not.
Tools are the part that decides the outcome
An agent is only as good as the tools you give it and how well they are described. A badly named tool, with an ambiguous parameter or an unhelpful error message, produces an agent that tries the same thing five times.
It is worth treating tool definitions with the care of a public API: names that say what they do, parameters with types and descriptions, errors that explain how to recover. The Model Context Protocol standardises exactly that connective layer between application, context and tools, which reduces coupling between your agent and any single vendor.
What benchmarks say about reality
It is worth calibrating expectations against SWE-bench, which evaluates models on real issues from real repositories instead of synthetic exercises. When it was published, it exposed a wide gap between performance on demo tasks and performance on production code with history, dependencies and implicit context.
The numbers have improved a lot since, but the structural lesson holds: well-bounded, verifiable tasks go well; tasks that require understanding the intent behind an entire system go badly. That should guide where you point an agent first.
Where agents pay off in the delivery cycle
The cases with the best risk-to-return ratio share three traits: machine-verifiable results, limited scope, and a low cost of being wrong.
Repetitive mechanical migrations with tests covering the behaviour. Triaging CI failures by correlating logs and commits. Generating tests for legacy code with no coverage, where the test passing is the objective criterion. Investigating a vulnerable dependency, with the proposed upgrade validated by the suite.
What does not pay off today: letting an agent open PRs straight into production without review, or work unsupervised on core code that has no test coverage.
What this means for your team
Pick one repetitive task with a machine-verifiable success criterion and implement it as a workflow first. Measure time saved and hit rate for two or three weeks.
Promote it to an agent only if the fixed pipeline is failing because it cannot anticipate the paths. And before that, invest in the tools and the logging: without a trace of which tool was called, with which arguments and with what result, you will not be able to debug or improve anything.
References
The sources behind this article, so you can check them and dig deeper.
- 1Building Effective AI AgentsAnthropic Engineering, 2024
- 2Model Context Protocol: specification and documentationModel Context Protocol
- 3SWE-bench: Can Language Models Resolve Real-World GitHub Issues?Jimenez et al. (arXiv:2310.06770), 2023
- 4State of AI-assisted Software Development 2025DORA / Google Cloud, 2025
Read next
RAG for a knowledge base: what survives production
Filling the context window can make the answer worse even with the right passage inside it. Position matters more than volume.
Read the articleEvals in CI: testing what is not deterministic
Equality assertions fail when the right answer can be written ten ways. Change the question the test asks and the suite becomes useful again.
Read the articleA prompt is code: version it, review it, test it
An instruction is probabilistic guidance. Code is a guarantee. Confusing the two is the most expensive mistake in an LLM application.
Read the article