Emirates Lab Contact
Engineering · Journal · 4 min read

Building patient agents.

Most agent failures are not reasoning failures — they are patience failures. How I design agent loops that wait, verify, and refuse to hallucinate progress.

When an agent fails in production, the post-mortem almost never finds a reasoning failure. The model did not misunderstand tax law or forget what an invoice is. What it did was subtler and more human: it declared victory before checking, guessed instead of looking, retried without reading the error, or — the cardinal sin — narrated progress it had not made. After enough of these post-mortems you stop asking "how do we make the agent smarter?" and start asking the better question: how do we make it patient?

The anatomy of impatience

Impatience is not a bug in one model; it is the default temperament of the whole species. Language models are trained to be helpful, and helpfulness has a shape: a complete, confident answer, delivered now. Left to itself, that instinct serves conversation and sabotages operation. An agent embedded in a workflow inherits it in four forms.

Completion pressure. The model has been rewarded, millions of times, for producing answer-shaped text. When a task is nearly done — or worse, nearly impossible — the pull toward writing "Done. I have updated the records." is enormous, independent of whether any records were updated.

Guessing over looking. Checking costs a tool call; guessing is free. A model that knows the answer is "probably in the March folder" will often act on probably rather than spend the call to confirm. Probability is a fine way to bet and a terrible way to operate machinery.

The blind retry. An action fails; the agent tries the same action again, slightly rephrased, like a tourist repeating a sentence louder. The error message — which names the actual problem — goes unread.

Sunk-cost momentum. Fifteen steps into a plan, evidence arrives that the plan is wrong. Abandoning it means admitting the fifteen steps were waste. Agents, like people, prefer to keep digging.

Seven habits of patient machinery

01Verification is a step, not a virtue. Every consequential action is followed by an independent check that it did what it claimed — a read-back, a diff, a probe. Crucially, the agent does not grade its own homework: verification uses different evidence than the action produced. "The API returned 200" is not verification; the record actually containing the new value is.

02Waiting is a first-class state. Real work has latency: builds run, approvals queue, systems sync. A patient agent can say "not yet" and mean it — poll with backoff, park a task, resume on a signal — instead of treating every silence as an invitation to improvise.

03Idempotence before autonomy. Before an agent may act unsupervised, its actions must be safe to repeat and possible to reverse. A ledger of side effects — what was created, changed, sent — turns "what did it do?" from an investigation into a query. Only after actions are idempotent do we widen the leash.

04Abstention is a success mode. The most valuable sentence a production agent can produce is "I could not verify X, so I stopped." We design for it explicitly: escalation paths that are cheap to trigger, prompts that reward honest halting, and metrics that count a correct abstention as a win. If your dashboard punishes the agent for stopping, you have built a machine that lies under pressure — and it will choose the worst possible day to prove it.

05Read the error. Actually read it. Failures branch on the content of the failure, not on its existence. A timeout, a permission denial, and a validation error deserve three different responses. The blind retry is banned; every retry must state what changed and why the next attempt should fare better.

06Bounded loops, with receipts. Every loop carries a budget — attempts, tokens, wall-clock — and every iteration records what it tried and what it learned. When the budget is spent, the agent surrenders the receipts, not a shrug. A supervisor (human or machine) can then decide with evidence rather than optimism.

07The plan is a hypothesis. Plans are written to be falsified. At fixed intervals the agent re-derives the plan from current state — not from what the plan says should be true. The fifteen sunk steps get no vote.

The junior engineer test

Everything above describes a person you have worked with. The difference between a good junior engineer and a great one is rarely raw intelligence; it is that the great one checks before claiming, reads the stack trace before retrying, says "I don't know yet" without shame, and tells you the build is red before you find out in the demo. We promote people for patience. We should hire agents on the same criterion.

There is a commercial point hiding in the engineering one. Impatient agents demo brilliantly — speed and confidence are exactly what a demo rewards — and then bleed trust in production, one hallucinated "done" at a time. Patient agents demo slower and compound: every honest abstention, every verified action, every caught error deposits a little more permission to automate the next thing. The fastest agent, measured over a quarter rather than a sprint, is the one whose work you never have to undo.

We ship machinery, not demos. Machinery waits for the bolt to seat.

— Catalina Jorquera Velis · Emirates Lab, London
← Back to the Journal