Field note
Why Agent Failures Become Infrastructure Problems
Agent reliability breaks down when execution, authority, and recovery are treated as application concerns instead of infrastructure concerns.
Agent failures rarely stay inside the prompt boundary.
The visible error may look small: a bad tool call, a malformed argument, a repeated action, a stale assumption, a missing confirmation. In production, that error moves through systems with credentials, side effects, queues, memory, retries, and human expectations attached. The failure becomes larger because the runtime gives it room to become larger.
Reliable agent systems start with a different premise: the model is not the control plane. The model proposes actions. The surrounding infrastructure decides what can execute, what must be verified, what requires escalation, what can be retried, and what must stop.
Failure Moves Through Infrastructure
Agent failures become infrastructure problems when a reasoning error crosses into a system with authority. A wrong answer is contained when it remains text. A wrong action is not contained when it can update records, spend money, change permissions, trigger messages, or mutate production state.
The Prompt Boundary Is Not an Execution Boundary
Prompts can describe expected behavior, but they do not enforce it. They are instruction surfaces, not control surfaces. Once an agent has access to tools, files, credentials, and queues, the runtime becomes responsible for containment.
The operational question is simple: what happens when the model is persuasive, fast, and wrong?
Side Effects Change the Failure Mode
Side effects turn mistakes into system events. The agent may recover semantically in the next step while the external system has already changed. A retry may look harmless in the trace and still duplicate a write. A tool call may pass schema validation and still violate business logic.
This is where reliability leaves the interface and enters the execution layer.
Authority Has to Be Typed
Every agent action carries an authority profile. Reading a document, sending a message, changing a record, issuing a refund, deploying code, and writing to a database are not equivalent operations. They differ in reversibility, blast radius, audit requirements, and tolerance for ambiguity.
Policy Before Tool Use
A production runtime should make those differences explicit before the model acts.
type ExecutionPolicy = {
action: string;
authority: "read" | "write" | "external";
reversible: boolean;
requiresApproval: boolean;
maxAttempts: number;
idempotencyKey?: string;
};
function canExecute(policy: ExecutionPolicy, context: RuntimeContext) {
if (policy.requiresApproval && !context.approved) return false;
if (context.attempts >= policy.maxAttempts) return false;
if (policy.authority !== "read" && !context.idempotencyKey) return false;
return context.scope.allows(policy.action);
}
This kind of policy is not decoration. It is the layer that prevents a fluent system from becoming an uncontrolled one.
Permission Is Not Memory
Boundaries should exist before the model acts, not after an incident review. They should be enforced by the runtime, not remembered by a prompt. Prompts can describe intent. Infrastructure has to enforce permission.
A reliable agent runtime separates suggestion from execution. The model can propose an action, but the system must decide whether that action is allowed, observable, reversible, and safe to retry.
Runtime Control Is the Trust Layer
Agent reliability depends on runtime control: the machinery that tracks state, checks permissions, gates execution, records decisions, and provides recovery paths when something breaks.
Durable State Makes Failures Legible
Without durable state, failures become ambiguous. A team cannot tell which actions executed, which assumptions were used, which tool outputs were trusted, or which retries changed external state. The system may appear intelligent while remaining operationally opaque.
The archive matters because production failures are often historical questions:
- What did the agent know?
- What did it decide?
- What was it allowed to do?
- What actually happened?
- What can be reversed?
If those questions cannot be answered, the system is not ready for meaningful autonomy.
Recovery Is a Runtime Capability
Recovery cannot depend on the model remembering every constraint after a failure. The runtime needs explicit pause, inspect, replay, cancel, and compensate paths. It also needs enough event history to reconstruct why a boundary was crossed or why execution stopped.
Reliability Compounds Below the Interface
The interface is where users notice failure. The infrastructure is where reliability is built.
The Minimum Runtime Surface
Stronger prompts, evaluations, and model upgrades help. They are not enough. Agentic systems need execution boundaries that are native to the runtime:
- scoped credentials for tool access
- typed tools with explicit authority levels
- durable state for decisions and side effects
- approval gates for irreversible actions
- idempotency for retried operations
- audit logs for post-incident reconstruction
- recovery semantics for cancellation and compensation
The Control Plane Is the Product Boundary
The serious work is making autonomy legible and constrained. When agent failures become infrastructure problems, the response cannot be more optimism at the application layer. The response is a trust layer that makes action observable, bounded, and recoverable.