LatentEval

Glossary

Graceful degradation (AI agents)

Graceful degradation in an agent system is the behavior of returning a reduced but still correct result when a component the run depended on fails, giving up scope, freshness or confidence instead of the whole request, and declaring in the response what was given up.

Graceful degradation in an agent system is the behavior of returning a reduced but still correct result when a component the run depended on fails, instead of failing the whole request or answering as though nothing broke. The reduction is a deliberate narrowing: fewer sources consulted, a cached lookup in place of a live one, a cheaper model, an answer that names what it could not check. A degradation path counts as graceful only when the caller can tell the reduced answer apart from the full one, which is where agent systems part company with every field the pattern was borrowed from.

Most systems this pattern came from announce it.

A browser that cannot play a video shows a still image, and a service shedding load returns a 503 or a visibly thinner payload. An agent’s degraded answer is a paragraph of the same length and register as the full one, so degradation has to be carried in the response rather than inferred from it. Our own pre-registered run of a premium tier’s refusal rescue is the case in point. With the premium tier’s refusal rescue switched on, 20 of 28 low-effort calls were quietly re-served by the cheaper Opus 4.8, and the pass rate with rescue on held at 96.4% (27 of 28, 95% CI 82.3–99.4%). The substitution kept the answers correct and stayed invisible, since it surfaced only for a caller logging which model had replied, and a dashboard files that under success.

Degradation sits one step downstream of containment in the same graph. Containment rate scores whether a fault crossed a boundary; graceful degradation scores what the system served once a boundary held and a capability went missing behind it. The gate that removed it is usually a breaker that stopped calling a failing dependency or a partition that would lend no more of the shared pool, and both leave open what the caller gets back. Answer that badly and one agent’s error becomes another’s trusted input with a confident wrapper on top. Specify and test the degraded response as an output in its own right.

How to measure graceful degradation

A single degradation rate will not carry the claim, because the event has three possible endings and only one is the ending you designed for. Inject the component failure you are building against: a tool that times out, a retriever that returns nothing, a sub-agent that refuses. Run many trials, then sort each run into three buckets: reduced and correct, reduced and wrong, or hard failure with no answer at all. Report all three shares over one denominator, the injected failures, since a rise in the first can come out of either of the others. Each is a proportion, so each carries a confidence interval rather than a bare percentage. A reduced and wrong answer travels downstream with the full answer’s authority, so count that bucket separately and read it as a containment failure.

Instrument at the boundary where the degraded path is chosen, usually the wrapper around the failing call, and stamp the response with which path served it so the buckets can be counted at all. Runs that end with no answer also leave the denominator of every other rate you publish, so the degraded share belongs beside how many requests came back answered and the distortion a shrinking denominator introduces. Degrading by declining the hard requests posts a better pass rate on the ones you kept. The flagship profiler is designed to fail one dependency on purpose, replay the run across many trials, and report all three shares with a bootstrap interval on each. Until that instrument ships, the three-way split is a measurement you take on your own degraded paths, and the reporting standard it would follow is already in force across what this site has measured and published. For what a degraded step costs end to end, the system reliability calculator multiplies the per-step rates along the chain.

Graceful degradation vs fallback chain

A fallback chain is the ordered list a router walks when its first choice fails or refuses: try model A, then model B, then a cached answer, then a canned response. It lives in configuration and runs to completion whether or not anything useful comes out the far end. Graceful degradation is a property of the result that chain produced, judged on whether the reduced answer was still correct and still legible as reduced.

The chain and the verdict on what it produced can point opposite ways. A chain can be long, well ordered and fully exercised while every step of it degrades badly, when the second model answers in a format the caller cannot parse. A system can also degrade gracefully with no chain at all, by returning the partial result it already holds with the missing piece named, which is often all a breaker leaves available once it has cut the calls off. The chain records what was tried; the three-way split records what the caller got, and only the second says anything about quality.

Graceful degradation vs failing closed

Failing closed means the system stops and says so. The retriever is down, so the agent declines to answer rather than answering from memory, and the caller gets an error it can route on.

Choosing between them is a claim about which errors your users can absorb, and agent stacks carry one extra reason to fail closed, because a degraded answer is cheap to produce and expensive to detect. Degrading to the model’s parametric knowledge while staying silent about the missing retrieval removes the signal that would have prompted a check, and the answer arrives with the confidence it would have carried with sources behind it. Where a partial answer has standalone value, a summary of the three sources that did load beats a blank page. Degradation removes content in both cases, and in neither of them does it remove the declaration. Two counts carry that: how often the system chose to degrade, and how often the degraded answer failed a check the full answer would have passed.

Progressive enhancement works because the reduction is visible on the page

The front-end meaning came first and is still the canonical one. MDN defines graceful degradation as a design philosophy for building against the newest browsers that “falls back to an experience that while not as good still delivers essential content and functionality in older browsers” (MDN Web Docs, as of 2026-08). Progressive enhancement runs the same axis from the other end, starting from content that works everywhere and layering capability on where the browser supports it. MDN’s own note is that in practice the two complement each other, and neither displaces the other.

The ordering discipline itself ports cleanly to agent systems. The assumption underneath it fails here, since it rests on the user seeing the difference. A page without rounded corners announces its own reduced state to anyone looking at it, and a still image cannot be mistaken for the video it replaced. An agent that drops two of five sources emits the same well-formed paragraph either way, so the degraded state has to be written into the payload as a field the caller reads. In a browser, a degradation path is finished when the fallback renders. In an agent stack it is finished when the caller can tell what was served and score it, a higher bar than the borrowed word carries with it.

Containment says the fault stopped at a boundary, and the degraded-mode split says what the system handed back from the far side of it, so a fault that got far enough to break something needs both readings recorded. Which of the surrounding resilience patterns survive the move from services to agents is audited pattern by pattern, and the full account of how one wrong-but-plausible output becomes a system failure is traced from trigger to containment. Run the injection on a schedule, and count the three endings on a denominator you chose rather than one an incident chose for you.