←  WritingShaochen Jia

August 2026  ·  7 min

Your agent probably isn't an agent

I built something autonomous, then had to decide whether to call it an AI agent. The honest answer took a 2×2 and one uncomfortable test.

I was writing a line for my résumé and got stuck on one word. The thing I wanted to describe wakes itself up every three hours, signs back into a university system, works out what has changed since last time, fetches it, turns lecture recordings into text, and files the results. Nobody starts it. Nobody watches it. It has been doing this for months.

Is that an AI agent? It calls a language model. It runs on its own. Every instinct said yes, write “AI agent,” that is what the word is for. And then I imagined the interview question that follows — tell me about your agent architecture — and realised I did not have a good answer, because the honest one is that the model does almost nothing.

Where the model actually sits

The system uses a language model in exactly two places. It writes a summary on top of each transcript. And when the transcript source blocks our IP address, it asks a model to read the video from the provider’s side instead, because that request comes from their servers rather than ours.

That is the whole of it. The model never decides what to fetch. It never decides whether a section is week 4 or week 11, whether a file has changed, whether a failure is worth retrying, or when to run. Those are all deterministic decisions in code I wrote. If you deleted every model call tomorrow, the system would lose its summaries and one fallback path — and would go on waking up, crawling, deciding and acting exactly as before.

The autonomy was never coming from the model. It was coming from the loop.

Two questions, not one

The word “agent” is being asked to carry two independent properties at once, and that is why it has stopped meaning anything. The properties are: who starts the work, and who owns the control flow. They vary independently.

Control flow is codeControl flow is a modelStarts itselfAutonomous, deterministic. Industrial automation, a monitoring system, the thing I built. Decides for itself, but every decision is one someone wrote down.Autonomous, model-driven. A scheduled job that hands a goal to a model and lets it plan its own steps. This is the thing most people mean.You start itA script. You run it, it does exactly what it says.A chat assistant, a copilot, most products currently described as AI. Smart, but it does not act until you ask.

Current usage has collapsed all four boxes into the top-right one and then quietly redefined the word so that the presence of a model is what makes something an agent. That gets it backwards. A model in the control flow is one implementation choice. Autonomy is the property that actually changes how a system behaves, how it fails, and what it costs you to operate.

The test I ended up using

Here is the question that settled it for me, and I think it generalises:

If you removed the language model, would it stop being autonomous — or would it just stop being clever?

If the answer is it stops running, the model is your control flow and you have built a model-driven agent. Say so; it is a real and difficult thing to build well. If the answer is it keeps running, just dumber, then the model is a tool your system calls, in the same category as an HTTP client or a PDF parser. It is a very good tool. It is not the thing that makes the system an agent.

Mine fails the second way. So I describe it as an autonomous agent, and I do not describe it as an AI agent. That costs me the fashionable phrase and buys me an answer I can defend for as long as anyone wants to push on it.

Why the distinction earns its keep

This is not vocabulary policing. The two kinds of system fail in ways that have nothing in common, and if you have mislabelled yours you will go looking for the wrong failures.

A model-driven agent fails by being confidently wrong. It takes a plausible-looking action that was never correct, and the trouble is that the reasoning reads fine. You defend against that with constrained tools, approval gates, and evaluation sets.

A deterministic autonomous system fails by being confidently silent. It runs perfectly and quietly does less than you think. Mine did exactly this: for weeks it reported a whole class of recoverable failures as permanent, and because it never crashed and never logged anything alarming, there was nothing to notice. You defend against that with honest failure reporting and by checking that every state your code can describe is a state it can actually reach.

Those are different disciplines. Calling both of them “agents” does not just blur a word — it points you at the wrong defence.

What I would keep

I am not arguing that nobody should say “AI agent.” If a model is genuinely deciding what happens next, that is precisely the right phrase and the interesting engineering is in the parts nobody puts on a slide: what the model is allowed to call, what happens when it picks wrong, how you know it picked wrong.

What I am arguing is that the phrase should cost something to use. Right now it is free — attach a model to anything and the label comes with it. When a word applies to everything, it stops telling anyone anything, including the person writing it on their own résumé. It took me a 2×2 and one honest test to work out which half of the phrase I had actually earned.

I earned “autonomous.” I did not earn “AI.” Being able to say which is which turned out to be worth more than the buzzword.