What breaks in production, and how do we see it before the user does?
A system that passed every eval still meets a production environment full of stale data, ambiguous tool results, and untrusted retrieved content it was never tested against — operate is the stage that catches what ships anyway.
What actually happens at this stage
Everything in this stage is a variant of the same problem: production has inputs and conditions the build and evaluate stages didn't see, and the system needs a way to notice when it's operating outside what it was actually tested for, rather than answering confidently anyway. That's not a criticism of the eval suite — no eval set covers every future input — it's the reason observability exists as a distinct discipline from evals rather than a smaller version of the same thing.
Two of the most common operate-stage failures are really the same defect at different layers: an agent that loses track of its own progress, and a tool call that fails silently. An unbounded agent loop keeps retrying a failed approach because the failed attempt sits in context looking exactly like fresh information to reason from — the fix is an explicit step and token budget enforced by the harness, not the model, with a forced terminal state when the budget runs out. Silent tool failure is the same root cause one layer down: a tool that returns HTTP 200 with an error buried in the body gives the model no structural reason to distinguish "nothing matched" from "something broke," so it reports the absence of data as a fact.
Retrieval-specific failures compound because they're invisible until the source and the index diverge: a stale index keeps serving a document that was deleted months ago because nothing ever told the index the source changed, and a chunk boundary that splits a table or procedure in half means the answer that's definitely in the document never makes it into any single retrieved chunk. Both look, from the outside, like "the model got it wrong" — they're actually upstream data problems that no amount of prompt tuning fixes.
Prompt injection via retrieved content deserves specific attention once an agent can both retrieve untrusted text and call real tools, because the model reads one undifferentiated stream of tokens with no privileged channel marking "instruction from us" apart from "text we retrieved." A document in your own knowledge base that reads like a command is functionally indistinguishable to the model from an instruction in the system prompt. There is no complete model-level fix for this today — the actual defense is least-privilege tool scoping and a human checkpoint before anything irreversible, so a successful injection has a small blast radius instead of a catastrophic one.
The operational discipline that ties all of this together is trace-first observability: capturing every prompt, retrieval, and tool call so a regression is a specific span to inspect, not a vague complaint that "the AI got worse." Set up before launch, it's what turns each of the failure modes above from an open-ended incident into a named, detectable, fixable pattern — and it's the same infrastructure the evaluate stage's after-ship half depends on, not a separate system bolted on later.
The common mistake
The most common mistake at this stage is treating a production incident as a one-off prompt fix rather than asking which of these named failure modes it actually was — which means the same defect quietly recurs a few weeks later under a different symptom, because the underlying cause (an unbounded loop, a silent tool failure, a stale index) was never actually addressed.
How do you know this stage is finished?
- Every agent loop has an enforced step/token budget and a forced terminal state, not an open-ended run.
- Tool responses carry an explicit, checkable status the model can branch on — no error-in-a-200-body.
- Retrieval index freshness is tracked as a metric, with a defined tombstone path for deleted source documents.
- Every tool is scoped to least privilege, and irreversible actions have a human checkpoint.
- Trace-first observability is live before launch, not added after the first incident.
What backs this up
Insights
- Why Your AI Agent Works in the Demo and Stalls in Production
The production-stall pattern behind several of this stage's named failure modes.
- Prompt Injection Is a Data Problem: A Threat Model You Can Ship Against
The full threat model behind the injection failure mode below.
Patterns
- Trace-first observability
The single piece of infrastructure every failure mode above is easier to catch with in place.
Failure modes
- Stale index serves deleted content
The retrieval-freshness failure this stage's ingest checkpoint exists to catch.
- Chunk boundary splits the answer
A retrieval defect that looks like a model mistake from the outside.
- Unbounded agent loop
Why "it ran for 40 minutes and produced nothing" needs a budget, not a better prompt.
- Tool argument hallucination
What a loose tool schema lets a model invent when it can't recall a real value.
- Silent tool failure
The other half of the unbounded-loop problem, one layer down: a tool that fails without saying so.
- Context overflow drops the task
What a naive truncation strategy quietly deletes first — usually the instructions.
- Injection via retrieved content
The specific threat that makes least-privilege tool scoping non-negotiable.
Glossary
- Observability
What turns "the AI got worse" into a specific, inspectable span.
- Prompt Injection
The attack this stage's tool-scoping discipline exists to bound, not eliminate.
- Data Processing Agreement (DPA)
What actually names your model provider as a processor of the personal data this stage's guardrails protect.
- Data Residency
Where the data this stage is protecting is actually processed, checked per provider, not assumed from your primary region.
More
- AI Security Review
The full checklist InfoSec, privacy, risk, and procurement run against a system operating in production — prepare it before you book the review, not after a rejection.
- The Delivery Record
What this stage's own discipline actually catches, evidenced from this site's own build history rather than argued in the abstract.
Questions on this stage
What comes up before and during operate.
01 How do we stop an agent that runs forever?
A hard step and token budget enforced by the harness, not the model — with a forced terminal state (success, failure, or escalation) when the budget is hit. The model has no reliable internal sense of "I've tried this six times, stop."
02 Can a document in our own knowledge base actually hijack our agent?
Yes, if the agent can retrieve untrusted content and call real tools — the model can't structurally tell an instruction from retrieved text. Scope every tool to least privilege and require a human checkpoint on anything irreversible; there's no complete model-level fix.
03 Why does our AI cite a policy we deleted months ago?
Your index was built once at ingest and nothing ever told it the source changed. Move to change-data-capture ingest and add tombstones for deletes so the index doesn't silently drift from the source.
A Ship Audit checks your actual system against every stage of this handbook and hands back a written, prioritized plan.