Fail-closed(失败即拒绝)

当授权、校验或应答处于不确定状态时,默认拒绝而非放行。

生产方式:人写签发:晓黎学习复核:2026年9月21日被 0 个词条引用

一句话定义

Fail-closed = 当系统无法确定某个操作是否被允许时,选择拒绝而不是放行。

对应的反义模式是 fail-open(失败即放行):不确定时默认允许。

为什么重要

安全系统里最常见的事故来源不是「规则写错了」,而是「规则没能生效时系统仍然继续执行」。

场景Fail-open 的后果Fail-closed 的行为
审批服务不可用危险操作直接执行拒绝,返回「无法确认」
权限服务超时按最宽松处理拒绝
配置缺失用默认值放行拒绝,要求显式配置
策略校验异常跳过校验拒绝并告警

在 Agent Harness 中的体现

DeepSeek Harness 的审批结果集是一个标准范例:

type ApprovalOutcome = 'allowed-once' | 'rejected' | 'cancelled' | 'unavailable'

调用方对四种结果的处理:

结果处理
allowed-once继续执行(仅本次)
rejected拒绝
cancelled拒绝
unavailable拒绝

关键在于 unavailable 的语义:没有应答者、应答者不负责该请求、应答者抛异常、返回不合规的值,全部产生 unavailable,而不是放行。

实现要点

  1. 结果集必须闭合:用枚举而非布尔值,避免「非 true 即 false」的灰区。
  2. 异常必须收敛:任何异常都应映射为拒绝,而不是向上抛出后被当作「未阻止」。
  3. 超时即拒绝:等待授权超时应视为拒绝,而非继续。
  4. 记录拒绝原因:拒绝要有可审计的原因,否则无法区分「策略如此」与「系统故障」。

代价

Fail-closed 会降低可用性。审批服务挂掉时,原本能自动通过的操作也会被拒绝。

缓解方式:

  • 对低风险操作使用宽松策略,只对高风险操作 fail-closed
  • 提供明确的降级路径(如人工审批通道)
  • 用告警暴露「因 fail-closed 被拒」的异常增长

相关

互链

链接来自概念卡正文里的双链,编译时能解到本期词条集的才成为站内链接。

反链(0)

还没有其它词条引用这一页。

出处

路径是本地知识库(Obsidian 库)里的位置,正文与概念卡逐字对应。

  • 概念卡原文Fail-closed(失败即拒绝)03_RESOURCES/概念/fail-closed.md
  • 所属知识地图栏目概念页索引 · Agent 架构与 Harness 治理03_RESOURCES/概念/Index.md
  • 正文引用的知识库笔记第 14 讲 权限与审批02_AREAS/AI开发/Harness Engineering/Agent Harness 课程/14-权限与审批:能力不等于授权.md
  • 正文引用的知识库笔记第 15 讲 沙箱与安全边界02_AREAS/AI开发/Harness Engineering/Agent Harness 课程/15-沙箱与安全边界:Agent能碰到什么.md

编译入库:2026年10月6日。词条由知识库编译而来, 修正要回到概念卡改,再重新编译。