Retry Is Not Enough: The 3U Framework for Agentic Reliability
2026-04-05
In traditional software, retries fix transient errors. In AI agents, failures are cognitive. Observability after the fact doesn't help when every failure is unique. The 3U framework introduces a new model for reliability: Uncover, Understand, Utilize.
In traditional software, retries fix transient errors. A network blip, a momentary database lock, a timed-out connection. You send the same request again and it works. The retry is the fix.
In AI agents, failures are fundamentally different. They are often cognitive or contextual. The agent hallucinated a non-existent API. It drifted from the original objective. It got stuck in a reasoning loop. It filled its context window with garbage and started producing incoherent output. Sending the same request again doesn't fix any of these problems. It usually makes them worse.
The definition of reliability is no longer just about uptime. It's about outcome.
Why blind retries fail for agents
Traditional retry logic assumes the operation is stateless. You call it again with the same arguments and expect the same behavior. Agents violate this assumption in multiple ways.
First, agents have session memory. If a prompt reached the model before the timeout, retrying with the same prompt creates duplicate context. The agent sees 'Start Research... Start Research...' and gets confused. If the prompt never reached the model but a session was already created, sending 'Continue' makes no sense either because there is nothing to continue from.
Second, the correct recovery action depends on the specific failure mode. A response timeout needs a different retry prompt than a network failure. A hallucination needs prompt modification, not a retry at all. A reasoning loop needs context pruning. A context rot issue needs history summarization.
Traditional frameworks have one tool: do it again. Agents need a diagnostic before they need a prescription.
Why observability alone isn't enough either
In traditional software, observability worked because the ground beneath it was stable. You had static software running deterministic logic. When an error occurred, you could reproduce it. You could look at a trace, find the bug, write a fix, deploy it, and that class of error was gone forever. There was a subclass of errors that were less predictable, things like external dependency failures, scaling bottlenecks, race conditions. But even those followed patterns. You could instrument for them, build dashboards, set alerts, and eventually handle them in code.
The foundation of that entire approach was that the software itself did not change between runs. The code was the code. Monitoring it made sense because the system's behavior was, at its core, reproducible.
With agents, that foundation is gone. The ground on which observability is based is moving, all the time.
Once an agent is decently set up, the prompt is tuned, the tools are connected, the guardrails are in place, the failures you observe in production are almost entirely unpredictable in nature. The agent didn't follow prescribed instructions. A tool call failed mid-chain and the agent tried to work around it in a way nobody anticipated. An API got rate-limited and the agent interpreted the error message as task-relevant content. The direction of thought itself diverged from the objective. The agent stopped without actually completing the task, returning a 200 without a correct response.
These are not bugs you can fix in the next sprint. They are emergent behaviors of a probabilistic system interacting with an unpredictable environment. They will not happen again in the same way. The exact combination of context, tool state, model temperature, and conversation history that produced this specific failure is essentially unrepeatable.
This is the core problem with applying traditional observability to agents: you are building a forensic record of events that will never recur in the same form. By the time you've observed the failure, diagnosed it in your dashboard, discussed it in standup, and shipped a fix, the system has already moved on. The next failure will be different. The next drift will take a different shape. The next hallucination will involve a different tool.
Teams cannot keep up by observing and fixing things after the fact. The cycle of observe, diagnose, fix, deploy assumes a stable system that holds still long enough for the fix to matter. Agents don't hold still.
These failures need to be caught while they are happening. Not after. Not in a post-mortem. Not in a weekly review of error logs. In real-time, as the agent is executing, before the damage propagates downstream.
The shift: from infrastructure stability to cognitive continuity
The future of reliability runtime is not about catching crashes. It's about acting like a monitor sitting beside agents and keeping them on the correct track.
This is no longer just about infrastructure failure. It's about hallucination, drift, loops, context rot, and any probabilistic failure that emerges from intelligent software. The focus moves from infrastructure stability to cognitive continuity.
We need a framework that can detect when an agent is confused even when the code hasn't thrown an exception, diagnose the root cause of that confusion, and apply a targeted recovery strategy instead of a blind retry.
Introducing the 3U framework
We think of three responsibilities that should be the core of any agentic reliability runtime: Uncover, Understand, Utilize.
Uncover
Traditional monitoring sees crashes. Now it's time to see confusion.
The first responsibility of the runtime is to detect that the agent has drifted, even if the code hasn't thrown an exception. Detection targets include:
- Semantic Drift: The agent's outputs are gradually moving away from the original task intent.
- Objective Drift: The agent has lost track of what it was asked to do.
- Confidence Dip: The model's confidence in its own outputs has dropped below acceptable thresholds.
- Loop Detection: The agent is repeating the same actions or reasoning patterns without making progress.
- Resource Spikes: Unexpected increases in token usage, API calls, or compute consumption.
- Context Rot: The context window has filled with low-quality or irrelevant information, degrading output quality.
- Heuristics Failed: Pre-defined behavioral heuristics are being violated.
- Evals Failed: Inline evaluation checks against golden datasets are returning failures.
None of these produce a stack trace. None of these crash the process. All of them mean the agent is failing the user.
Understand
Don't just catch the error. Diagnose the intent.
Once an anomaly is Uncovered, the runtime must effectively diagnose the root cause. A retry here is useless if we don't know why it failed.
- Is this Environmental? The API is actually down. The sandbox ran out of disk. The network is flaky.
- Is this Cognitive? The agent forgot the instructions. It hallucinated a tool that doesn't exist. It misinterpreted the user's request.
- Is this Contextual? The context window is filled with garbage data. Too many failed tool outputs are polluting the history. The conversation has gone on too long without summarization.
The system labels the failure with a specific diagnosis. For example: 'Error: Logic Loop' versus 'Error: Tool Misuse' versus 'Error: Context Overflow.' Each label maps to a different recovery strategy.
Utilize
Apply the specific cure for the specific disease.
This is where agentic durability diverges completely from traditional retry logic. Instead of a generic retry, the runtime utilizes a targeted strategy to get the agent back on track.
- If Logic Loop: Prune the last 3 turns of conversation to remove the bad habit and inject a hint into the system prompt.
- If Context Rot: Trigger a summarization step to compress the history, then restart the task with a clean slate.
- If Hallucination: Force a reflexion step where the agent must critique its last action before proceeding.
- If Tool Misuse: Inject corrected tool documentation into the context and re-prompt with explicit constraints.
- If Environmental: Apply traditional retry with backoff, but only after confirming the environment is healthy again.
- If Objective Drift: Re-inject the original user request and task constraints into the system prompt to realign the agent.
The recovery is proportional to the diagnosis. A network blip gets a retry. A hallucination gets a reflexion step. A context overflow gets a summarization pass. No single strategy fits all failure modes.
The sidecar architecture
The Uncover, Understand, Utilize loop operates as an asynchronous sidecar process. It functions as a silent observer, continuously evaluating the agent's trajectory without blocking the main execution thread or adding latency.
Because this sidecar sits logically above the agent, it remains agnostic to the underlying framework. It functions seamlessly with the Claude Agents SDK without requiring invasive code changes. The sidecar possesses intervention capabilities: it can inject context, modify the prompt, or trigger a replay of specific failed actions.
Since we are monitoring the execution loop, any transient failures can also be re-triggered in traditional durability style. The 3U framework doesn't replace infrastructure-level retries. It extends them with cognitive-level recovery.
The distributed not-to-do list
To further enhance this, we introduce a Distributed Durable 'Not-To-Do' List.
This persistence layer acts as a shared immune system, capturing diagnostics from the Understand phase. It stores learned anti-patterns from both successful and failed runs, ensuring that when an agent learns a lesson once, the entire fleet remembers it forever.
If Agent A hallucinated a specific non-existent API endpoint and the runtime diagnosed and corrected it, that anti-pattern is recorded. When Agent B encounters a similar situation three hours later on a different machine, the runtime already knows not to let it go down that path. The fleet gets smarter with every failure.
This transforms reliability from a per-session concern into an organizational learning system.
Why this matters
Traditional durability says: 'The workflow finished.' Agentic reliability asks: 'Did the agent actually solve the problem?'
The 3U framework shifts the responsibility of recovery from the deterministic durability layer to the intelligence layer itself. It treats the agent not as a black box to be restarted, but as a reasoning system that can be diagnosed, corrected, and improved in real-time.
Retries are still part of the toolkit. But they are now the last resort for environmental failures, not the default response to every anomaly. The default response is to understand what went wrong and apply the right fix.
This is Part 3 of a series on building durable infrastructure for AI agents. In Part 4, we look at what the future of intelligent agent orchestration looks like: warm pools, sticky routing, tiered storage, and predictive scaling.
Exosphere is building the reliability runtime for AI agents in production →