Agentic workflows vs autonomous agents: which should you build?
Not every AI feature should be an autonomous agent. Many of the most useful ones are plain, boring workflows with a language model doing one or two steps: summarise this, classify that, draft a reply. The choice between a fixed chain and an open loop decides how predictable, how cheap and how safe your system is. This post compares the two, shows when each wins, covers triggers, failure handling, approvals and cost control, and ends with a way to decide.
Key takeaways
- A workflow fixes the path and lets the model fill in steps; an autonomous agent lets the model choose the path.
- Use a workflow when the steps are known, repeatable and need predictable cost and behaviour.
- Use an open agent loop when the path genuinely depends on what it finds along the way.
- Hybrids work well: a fixed outer flow with a bounded agent step inside.
- Put approvals, retries and budgets in the structure, not in the prompt.
The difference: who chooses the next step#
In an agentic workflow, you decide the sequence of steps in advance. Some steps call a model, such as extracting fields or writing a draft, but the order is fixed in code or configuration. Step two always follows step one.
In an autonomous agent, the model runs in a loop: it looks at the goal and the state so far, picks a tool, observes the result and repeats until it decides it is done. The path is not known in advance and may differ every time.
Neither is better in general. A workflow trades flexibility for predictability. An agent trades predictability for the ability to handle situations you did not anticipate. Most real systems sit somewhere on the spectrum between them, and the skill is putting each task in the right place.
When a fixed chain beats an open loop#
If you can write down the steps on a whiteboard, build the workflow. It will usually be cheaper, faster and easier to debug. Signs a workflow is the right fit:
- The steps rarely change. Every Monday: pull open issues, group them, post a summary.
- The inputs are structured. A webhook delivers a known payload; you need to classify it and route it.
- Mistakes are expensive. Fewer decisions for the model means fewer chances for it to go off script.
- You need to explain what happened. A fixed sequence produces a clear trace: step three failed, here is why.
- Cost must be predictable. Each run makes a known number of model calls.
A useful habit is to start with a workflow, and only give the model more freedom at the specific steps where a fixed rule keeps failing. It is much easier to loosen a strict design than to tighten a loose one after an incident.
When you actually need an autonomous agent#
An open loop earns its cost when the work is exploratory. Debugging a failing build, researching a question across several sources, or untangling a messy inbox request can require different actions depending on each result. Writing a rule for every branch would be endless.
Choose an agent when:
- The number and order of steps depends on what is discovered.
- The task is requested ad hoc by a person, who can watch and steer.
- A wrong step is cheap to undo, or sits behind an approval.
- You are willing to accept variable cost and time.
Be honest about the price. Each loop iteration is another model call, and context grows as the transcript grows. Without limits, a confused agent can wander. If you choose an agent, bound it with caps on steps, tool calls, time and spend, and expect to invest in the harness around it.
Triggers: schedules, webhooks and people#
How a run starts shapes which design fits. There are three common triggers:
- Schedule. "Every weekday at 8:00" is a natural workflow. The same job, the same shape, no one watching, so predictability matters most.
- Webhook. An event arrives from another system, like a new support ticket or a merged pull request. Event-driven runs are usually triage, enrichment or routing, which are classic workflow jobs.
- A person asking. A live request in chat is the best fit for an agent, since the person can clarify and correct.
Unattended triggers deserve extra care. Nobody is there to notice a bad run, so you need logs, notifications on failure and a hard stop on writes that need a human decision. A webhook can also be called repeatedly or with unexpected payloads, so make handlers idempotent and validate input before any model sees it.
Hybrid designs: a fixed outer flow with a bounded agent inside#
The most practical systems combine both. The outer structure is a workflow, so triggers, ordering, approvals and budgets are explicit. One or two inner steps are small agents with a narrow job and strict limits.
{
"trigger": { "type": "schedule", "cron": "0 8 * * 1-5" },
"steps": [
{ "id": "fetch", "tool": "issues.list", "args": { "state": "open" } },
{ "id": "triage", "llm": "Group by theme and flag urgent ones", "input": "fetch" },
{ "id": "post", "tool": "chat.post_message", "risk": "write", "input": "triage" }
]
}Here the fetch and post steps are deterministic, the triage step uses the model, and the write at the end is flagged so it can wait for approval. If triage needs more freedom, say to look up related documents, you can replace that one step with a capped agent loop, and the rest of the flow stays predictable.
This also tells you where to invest. Put your evaluation effort on the model steps, and your reliability effort on the plumbing between them.
Failure handling, approvals and cost control#
Whichever design you pick, build these in at the structural level:
- Failure handling. Decide per step what happens on error: retry with backoff, skip, or stop the run. Record which step failed and why. In a workflow this is a property of each step; in an agent, the harness must enforce it.
- Approvals. Mark risky steps so a person confirms them. In a workflow you can see exactly where approval sits. Make sure the run can pause, resume after approval and not repeat steps that already succeeded.
- Cost control. Count model calls per run, set a ceiling, and alert when a run approaches it. Use smaller models for simple steps such as classification, and reserve the capable one for hard steps. Cache results that do not change between runs.
- Observability. Log every step's input, output and duration in a form a non-engineer can follow.
The common theme is that safety belongs in structure you can inspect, not in an instruction the model may or may not follow.
A quick way to decide#
Ask five questions about the task:
- Can I list the steps today? If yes, lean workflow.
- Does it run unattended on a schedule or event? If yes, lean workflow.
- Does the path depend on what it finds? If yes, consider an agent for that step.
- What is the worst thing one wrong step could do? If it is serious, add an approval or remove the freedom.
- Do I need predictable cost? If yes, bound the loops or avoid them.
Then start at the simplest design that could work and add autonomy only where evidence says you need it. Evidence means real runs that failed because the path was too rigid, not a hunch that agents are more impressive.
How Setu approaches this#
Setu supports both styles. Your agent can work interactively through a private MCP endpoint, and you can also build workflows that run on schedules or webhooks, or start from ready-made recipes. In workflows, writes still wait for approval, so an unattended run cannot quietly change things. Per-app rules (go ahead, ask, never) apply by risk level, and the activity log records what ran in plain language.
Workflows can use apps such as GitHub, Slack, Notion, Linear, Gmail, Google Calendar and Google Sheets. Browse the workflow templates, see common solutions or read the concepts to get started.
Frequently asked questions#
What is the difference between an agentic workflow and an AI agent?
In a workflow, you define the sequence of steps and the model handles some of them. In an autonomous agent, the model decides which step or tool to use next in a loop until it finishes.
When should I use a workflow instead of an autonomous agent?
Use a workflow when the steps are known, runs repeat on a schedule or event, mistakes are costly or you need predictable cost and clear traces. Reserve agents for exploratory work.
Can a workflow include an AI agent step?
Yes. A common hybrid is a fixed outer workflow with one bounded agent step inside, limited by step, time and spend caps, while risky writes elsewhere in the flow still require approval.
How do you control the cost of AI agents?
Cap steps, tool calls and spend per run, use smaller models for simple steps, keep contexts short, cache stable results and alert when runs approach their budget. Fixed workflows make costs easier to predict.
Build the workflow first, add autonomy where it pays
Use Setu to run your agent across your apps and to schedule workflows with approvals on every write. Start with the quickstart or pick a template.
Keep reading.
-
Harness engineering
How to evaluate AI agents that use tools (without fooling yourself)
A practical guide to evaluating tool-using AI agents: task suites, mocked vs real tools, fixtures, outcome and trajectory checks, flaky runs and release gates.
-
Security and control
OAuth for AI agents: handling tokens without leaking them
How to use OAuth safely with AI agents: authorization code with PKCE, least-privilege scopes, refresh rotation, token storage, revocation and reauth flows.
-
Agent engineering
12 ways AI agents misuse tools, and how to fix each
Twelve tool-calling failure modes, from hallucinated arguments to retry storms and prompt injection, each with its symptom and a harness-level fix.