Fail-closed is the correct default for an authorization system. If the component that decides "should this action happen" can't reach the component that knows the policy, the safe answer is no. AgentTrust ID is built that way on purpose: when in doubt, deny.

But fail-closed has a failure mode that is easy to miss, and it is worth naming: a denial that doesn't say why.

Two systems that both "deny"

Imagine two authorization systems. Both deny a write action. The first returns:

denied: action 'email:send' is read-only in this session; elevation required