The agent discourse you read is about coding agents. Multi-hour autonomous runs. Devin, Codex, Claude Code in plan mode, Cursor’s agent fleets. Long prompts. Multi-step reasoning. Conversational. Interactive. Capable of going rogue.

The agents I actually have running in production are nothing like that.

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.

— Antoine de Saint-Exupéry

The Inventory

Four agents I built between February and April this year. All single-purpose. All shipping.

  • A plain-English explainer. Takes the previous diagnosis. Outputs exactly three lines: one deadpan sentence in plain words with no jargon and no AI marketing voice, a one-word type tag, and an action with a priority. Copies to clipboard. No follow-up. No interaction. Built because half the value of an investigation is being able to forward a one-line summary to someone who isn’t going to read three paragraphs.
  • A board monitor. A daily agent. Walks a kanban board, lists items past SLA per column (5 days In Progress, 2 days Peer Review, 3 days Deployed to DEV, 5 days Deployed to SIT), flags unassigned P0s and P1s. Output as Critical / Warning / Info tiers. No remediation. Just the report.
  • A triage bridge. Takes an incoming incident. Asks four questions if context is missing. Creates a properly priced GitHub issue via the work CLI. Embeds the originating ticket ID in the body so future automation can sweep stale tickets and sync status back. Done.
  • A brief generator. Given a workstream folder, produces a one-page HTML brief for board, leadership, or product audiences from a fixed ten-section template (TL;DR, status bar, timeline, asks panel, risks, team grid, footer, etc.). Refuses to generate a brief for engineering on the grounds that engineering reads the architecture doc. The broader thesis is in briefs as code; the boring-agent point is that the template is the deterministic output shape and the LLM only fills the slots.

Reasoning capacity required across all four: roughly zero. Each one defers to a fixed shape and lets the LLM be the part that fills the slots.

The Pattern

These agents share the same shape, and the shape is unfashionable.

  • Short prompts. 30 to 50 lines each. Procedural, not generative. No chain-of-thought, no exploratory reasoning. The LLM is told what to do, not asked what to think.
  • Deterministic output formats. The explainer emits exactly three lines in a fixed grammar. The board monitor emits a tiered list. The triage bridge emits a confirmation. The brief generator fills a fixed ten-section template. The output shape is contracted, not negotiated.
  • CLI-driven. Each agent delegates to a real shell command. The work CLI manages the kanban. pbcopy handles the clipboard. The agent orchestrates tools that already work; it does not reinvent the work.
  • Fire-and-forget. No back-and-forth. No “let me think about that further.” Input arrives, output leaves, agent stops.
  • Single-purpose. Each agent has exactly one job. The explainer does not also triage. Triage does not also monitor. The narrowness is the value.

The unifying instinct is to remove the LLM from as much of the loop as possible. The LLM is the part that drifts, hallucinates, and burns tokens. The CLI is the part that already works. The agent is the smallest possible amount of LLM glue that lets the CLI handle the rest.

The Contrast

A coding agent in plan mode looks nothing like this. Long prompts. Multi-step reasoning. Stateful sessions. Tool-search. Interactive clarification. Long-horizon planning. The model is doing most of the work, and the harness is mostly there to feed it more context and let it run longer.

A triage agent does the inverse. The prompt does most of the work, and the model is mostly there because regex would be insufficient and a script would be brittle. Different species. Different shape. Different success metrics.

This is the same pattern as the rest of programming. Different tools for different jobs. The conversational long-horizon agent is right when the work is genuinely exploratory. The three-line deterministic agent is right when the work is “do this exact thing, in this exact format, every time.”

Most days at most jobs, the work is the second one.

Why This Lane Is Underwritten

Triage agents do not write essays about themselves. Nobody tweets a screenshot of “the agent told me an issue has been stuck in deployment for ten days.” There is no demo video. The output is boring. The win is small. The deltas accumulate quietly across weeks of not-having-to-remember.

But these are the agents already in production at most places that have anything in production. The flashy long-horizon coding agents are still figuring out what they are. Triage agents already know.

The other reason this lane is quiet: the time-to-value is hours, not weeks. Each of the four agents above was built in roughly an afternoon, each in response to a specific recurring annoyance. I keep forgetting to check the board. I keep having to translate technical findings to non-technical stakeholders. I keep manually creating GitHub issues from inbound tickets and forgetting to cross-reference, so stale ones drift forever. I keep rewriting the same kind of one-page brief for leadership. No grand narrative. Just a small recurring tax that an agent now pays.

The deterministic output is the agent

Write the prompt only after you have done the workflow by hand five-plus times. The output format crystallises during the manual repetition; the LLM just becomes the part that reaches the format reliably. If you cannot describe the agent’s output in three sentences, you are not ready to write it yet.

The Counter

Three honest pushbacks worth airing.

  • “These aren’t agents, they’re scripts with a prompt.” Yes. That is the point. Calling everything that calls an LLM an “agent” inflates the category to uselessness. If the mass-market agent discourse is about long-horizon autonomy, triage agents belong in a different category and should probably get a different name. They tend to do better when held to the lower standard.
  • “Anyone could write these.” Also yes. Most people haven’t. The bottleneck is not capability. It is noticing the recurring tax for long enough to write the agent that pays it. The threshold to act is high, the gain after acting is modest, and so it sits.
  • “They won’t scale to harder problems.” True. Don’t try to make a three-line explainer solve a database race condition. Use vitest. Triage agents are right at exactly one tier of difficulty, which happens to be the tier most ops work lives at.

Closing the Lane

The marquee agents are still figuring out what they are. The boring agents already know. They run in the background, output in their fixed format, and stop. They do not improvise. They do not reason about their own role. They do not ask for tools they do not have.

If you have a recurring annoyance that takes ten minutes a week and is the same shape every time, there is a 30-line prompt that pays the tax for you. The LLM is the smallest possible part of the solution. The CLI you already wrote is the largest. The agent is the formatting glue between them.

Boring agents ship. The loud ones are still arguing about plan mode.