RSS Amplifier

Neural toolkit · Jan 13, 2026

When Everything Is an “Agent”, Nothing Is

0
Sign in to vote or save

Krisztian Papp · Neural toolkit

Somewhere in the last two years, agent stopped meaning anything specific.

Every product has “agents”. Every SDK has “agents”. Apparently if you put an LLM call behind a button, congratulations, you shipped an agent platform.

You know this pattern. A word starts with a sharp technical meaning, gets picked up by marketing, by slide decks, by conference talks, and after a while it just turns into background noise.

That’s semantic diffusion in slow motion. And it’s annoying mostly because it makes boring things sound magical and serious things sound boring.

From an engineering perspective, this is not a language‑nerd problem. If agent can mean anything from cron job + LLM call to a long‑running, goal‑directed system with tools, planning and memory, then:

  • architecture diagrams lie,

  • risk discussions go sideways,

  • and teams either over‑engineer or dangerously under‑engineer parts of the system.

So, yes, it’s “just words”. But words are the API of our thinking. If the names are garbage, the designs follow.

Before every pitch deck discovered the word, agent was a pretty decent technical term.

In classical AI and multi‑agent systems, an agent is roughly:

an autonomous entity that perceives its environment, keeps some internal state, and takes actions to pursue goals according to a policy.

Not very sexy. But clear.

Translated into engineer‑speak, you call something an agent only if it has, at minimum:

  1. A goal, not just a task.
    Not “run this function”, but “achieve X under constraints Y”.

  2. Some autonomy in how it proceeds.
    There is an action space and a policy, not just a fixed script.

  3. A closed loop with the environment.
    It acts, sees what happened, updates its state or future actions.

  4. Ability to iterate on a problem.
    It can explore, backtrack, refine plans. It doesn’t just run once and exit.

You can fight about the details (planning vs. purely reactive, model‑free vs. model‑based, whatever), but those four are the backbone.

If you rip out the goals, the autonomy, the feedback, the iteration, what you have left is not an agent.

It’s a workflow with delusions.

Now look at what actually gets sold as an AI agent today.

Half of the time, it’s one of these:

  • a single POST /v1/chat/completions behind some chat UI,

  • a straight line: call LLM → parse JSON → call API → render response,

  • a rigid form‑filling assistant that always calls the same tools in the same order,

  • a cron‑scheduled script that runs an LLM over yesterday’s logs and emails a summary.

These aren’t bad systems. In many cases, they’re exactly what you should build.

They are just not agents.

When you slap the agent label on them, you’re implicitly promising things they cannot do:

  • They don’t have goals, only hard‑coded tasks.

  • They don’t choose between multiple actions; engineers already wired the path.

  • They don’t adapt in any meaningful way beyond the stochasticity of the model.

  • They don’t explore; they just walk the same path over and over.

Calling a workflow an agent because there’s an LLM node in the middle is like calling a SQL script a “knowledge graph engine” because you used a JOIN.

Still technically compute. Still not the same thing.

To keep ourselves sane, it helps to stop throwing everything into the “agent” bucket and admit there are at least three levels here.

The atomic thing you ask a model to do.

“Translate this paragraph.”
“Summarize this PDF.”
“Generate 10 variants of this subject line.”

That’s a task.

One input. One output. No persistent state, no control flow, no planning. You call a model and it spits something out.

Useful? Yes. Agentic? No.

Thanks for reading Neural toolkit! This post is public so feel free to share it.

Share

Now you start gluing tasks together.

Ingest data → clean → embed → store.
Receive ticket → classify → route → suggest response.

This is a workflow.

There is control flow here. It might be a DAG, a BPMN diagram, a homegrown state machine, or a desperate ball of Python and webhooks.

Each step has a contract. Inputs, outputs, happy paths, error paths.

The important part: a workflow does not decide how to solve the problem at runtime. That was already done by the engineer when they designed the workflow.

The logic lives outside the model.

You can absolutely drop LLM calls into some of the nodes. It might look complex and mysterious from the outside. But the LLM is still a component inside a deterministic scaffold.

That is not an agent. That is business logic with a fancy subroutine.

Now the word finally starts to make sense again.

An agent is what you get when you:

  • give the system a goal instead of a fixed script,

  • give it an action space (tools, APIs, environment operations),

  • give it a policy to map state → action,

  • and wire in a feedback loop so outcomes influence future actions.

Suddenly, the system is not just executing a path.

It’s choosing a path.

That doesn’t mean it’s “smart”. It doesn’t magically become safe or robust. But at least the term agent now points to a concrete property: some control logic is delegated to the system itself.

That’s the whole difference:

In a workflow‑centric system, control logic lives in the workflow definition.
In an agentic system, some of that control logic lives in the agent’s policy.

If there is no such delegation, if the system never actually chooses, you can call it whatever you want on the landing page.

It’s not an agent.

If you’re still reading, you probably already agree that the word is a mess. The remaining question is whether it matters enough to care.

From experience: yes, it does. Mostly in the most boring possible ways.

Someone tells leadership: “We have an agent that handles support tickets now.”

What the room hears:

  • it escalates smartly,

  • it learns from past conversations,

  • it can handle novel edge cases.

What actually shipped: a deterministic triage workflow with one LLM call in the middle and a very fast path to human fallback.

As a workflow, this may be perfectly fine. Sensible, even.

But you just burned credibility, because you sold it as an agent. Next time you talk about something that really does have autonomy, nobody will calibrate correctly.

The opposite failure mode is also popular.

You say “we need to build agents”, and suddenly people feel obligated to wrap every single task in a heavyweight agent framework.

You end up with:

  • long tool‑calling chains where a single function call would do,

  • more failure modes than tests,

  • trace logs that look like a fever dream,

  • and latency that makes the whole thing useless in production.

All that to solve a problem that was essentially: “take input, call model, write output”.

Sometimes the boring cron job is the correct answer.

On the other side, once agent starts to mean “chatbot, I guess”, genuinely autonomous components get underestimated.

You propose a long‑running agent that:

  • can execute runbooks,

  • can call internal tools,

  • can adjust its behavior based on system state.

People smile and say “oh, cool, another chatbot”.

No, not cool. Terrifying.

You’ve now smuggled something with actual decision power into production, and everyone is still mentally treating it like a pretty UI over an API.

That’s how you get:

  • no proper monitoring for agent behavior,

  • no guardrails on tool access,

  • and no real safety design, because hey, “it’s just an agent, right?”.

Same word. Completely different risk profile.

If you want a quick test, try running your “agent” through this list.

Answer honestly.

  1. Does it receive a goal, or just a specific one‑shot instruction?
    “Generate a summary for this document” is not a goal. It’s a task.

  2. Can it choose between multiple actions at runtime?
    If the action sequence is hard‑coded, you have control flow, not agency.

  3. Does it maintain any explicit internal state across steps?
    Not just a chat transcript being stuffed back into the prompt. Actual modeled state that influences later choices.

  4. Does it observe the consequences of its actions and adapt its plan?
    A blind retry on error does not count. Changing strategy does.

  5. Can it move a problem forward over multiple steps without a human poking it every time?
    Single‑shot tools with a marketing wrapper are not agents.

If you hit “no” on most of these, you probably have a workflow with LLMs, not an agent.

Which is fine.

Just call it what it is, so the next person reading the design doc doesn’t have to reverse‑engineer your vocabulary.

One reasonably sane approach is to design your systems explicitly around the ladder:

  • Tasks – pure model invocations. Translate, classify, summarize, rank.

  • Workflows – orchestrate tasks, data flow, and deterministic business rules.

  • Agents – small, carefully boxed places where you actually want delegated autonomy.

This has zero hype value.

It does make testing and operations less painful, though.

Tasks and workflows still behave like normal software. Unit tests, integration tests, predictable failure modes.

Agents you test differently. More like you test a policy. You stress them, sandbox them, watch how they explore the space.

The nice side effect: once you stop calling everything an agent, your architecture diagrams get less theatrical and more honest.

And production incidents get a bit easier to debug, because you know exactly which parts of the system are supposed to be deterministic and which parts are allowed to improvise.

At some point you’ll be the person in the room saying “this is not an agent”. It will feel annoying. Do it anyway.

A few tricks that tend to work without starting a terminology war:

  • Offer a better name: “This is basically a triage workflow, let’s call it that.”

  • Anchor it in risk: “If we say ‘agent’, people will assume autonomy and learning. That will bite us when something goes wrong.”

  • Draw the ladder: task → workflow → agent. Ask where this thing actually sits.

Most people don’t care about the word itself.

They care about not getting yelled at later when the system misbehaves.

If a more precise label reduces that risk, they’ll usually take the deal.

For avoidance of doubt: I’m not anti‑agent.

There are places where a true agent is the only sane way forward.

Things like:

  • Tool‑using research assistants that need to search, read, cross‑reference, and refine hypotheses over dozens of steps.

  • Ops copilots that monitor systems, propose interventions, maybe even execute runbooks under constraints.

  • Messy integration bots that juggle multiple flaky third‑party APIs, handle partial failures, and adjust plans on the fly.

Trying to hand‑script every possible path in these domains is either impossible or hilariously expensive.

Delegating some control logic to a policy is exactly the point there.

The problem is not that we build too many agents.

The problem is that we call everything an agent, so we can’t see the real ones anymore.

Semantic diffusion is hard to undo at internet scale. Once a word hits the hype circuit, it never fully comes back.

But you don’t have to fix the internet. You just have to fix your own team.

Inside your docs, your designs, your codebase, you can:

  • call tasks, workflows and agents by their actual names,

  • push back gently when someone wants to rebrand a cron job as an “autonomous agent”,

  • and draw clear API boundaries between hard‑coded control flow and delegated autonomy.

The goal isn’t linguistic purity.

It’s that when someone says “we’re putting an agent into production”, everyone else in the room quietly understands that this means:

some piece of code is about to start making its own decisions with real consequences.

And maybe, just maybe, that deserves a bit more thought than a new CSS class on the chat widget.

No posts

Read the original on tacsiazuma.substack.com

Comments

Nothing yet. Say the first thing.

    Sign in to join the conversation.