What is fail closed?

A fail-closed control blocks an action when it cannot reach a decision, because it crashed, timed out or lacked data, instead of letting the action through.

Share

A fail-closed control blocks an action when it cannot reach a decision, because it crashed, timed out or lacked data, instead of letting the action through.

Why it matters

AI agent guardrails such as approval checks, policy hooks and permission rules often fail open by default: if the check errors, the agent carries on. An attacker who can make a guard crash, time out or see truncated input then gets past it without ever beating its logic.

Example

On 8 October 2026 Claude Code 2.1.295 added an onFailure: "block" option so hooks that fail to start, time out or exit unexpectedly deny the action, and fixed guards receiving silently truncated input (release notes). Days earlier Microsoft's Agent Framework switched approvals to fail closed (python-1.20.0).

How to defend against it

  • List every guard that must block, and set it to deny on error or timeout (checklist).
  • Test guards with malformed, oversized and deeply nested input.
  • Alert on guard errors, not just on denials.

Policy enforcement point, approval fatigue, repo-planted agent config.

Sources

From AgentSec Brief, the daily brief on securing agentic AI. Subscribe free at https://www.agentsecbrief.com