Fail-Closed(失败即关闭)是一种安全设计模式,当系统遇到不确定或异常情况时,默认拒绝执行而非放行。在AI Agent领域,这是v2026.6.6版本引入的核心安全机制。
Fail-Closed源自网络安全领域的经典原则:当防火墙无法判断流量是否安全时,默认应该阻止而非放行。在AI Agent语境下,Fail-Closed意味着:
# v2026.6.6 新行为
$ openclaw exec "npm test" --timeout 60
# 超时后: 立即终止,返回错误码
# 旧行为: 继续等待直到手动干预
# 配置示例
exec:
timeout: 60s
onTimeout: kill # fail-closed: kill | continue
# 沙箱配置
sandbox:
policy: fail-closed # 默认拒绝所有未明确允许的操作
allow:
- /tmp/*
- /home/user/projects/*
deny:
- /etc/passwd
- ~/.ssh/*
# 会话管理
transcripts:
integrity: strict
onCorruption: rebuild # fail-closed: rebuild | ignore
# 损坏检测: SHA-256校验
# 重建机制: 从源数据重新生成
# .github/workflows/ai-review.yml
- name: AI Code Review
uses: openclaw/ai-action@v2
with:
exec-policy: fail-closed
timeout: 120
sandbox: strict
# 如果review超时,构建失败而非跳过
# 确保安全检查不会被绕过
# ~/.openclaw/config.yaml
exec:
defaultTimeout: 30s
failClosed: true
sandbox:
enabled: true
policy: deny-all # 默认拒绝
exceptions:
- tool: "read"
paths: ["/app/**"]
- tool: "write"
paths: ["/tmp/**"]
# MCP连接配置
mcp:
servers:
- name: "database"
endpoint: "https://db.example.com"
failClosed: true
timeout: 10s
retry: 0 # 不重试,直接失败
# 安全优势:
# - 防止SQL注入通过重试放大
# - 快速失败便于问题定位
# - 避免连接池耗尽
| 场景 | Fail-Open | Fail-Closed |
|---|---|---|
| 执行超时 | 继续等待 | 立即终止 |
| 权限不明确 | 允许访问 | 拒绝访问 |
| 会话损坏 | 继续使用 | 重建会话 |
| 安全风险 | 🔴 高 | 🟢 低 |
| 可用性影响 | 🟢 低 | 🟡 中 |
📅 最后更新: 2026-06-13 | 🏷️ 标签: 安全 Fail-Closed OpenClaw v2026.6.6