🔒 Fail-Closed执行模式

Fail-Closed(失败即关闭)是一种安全设计模式,当系统遇到不确定或异常情况时,默认拒绝执行而非放行。在AI Agent领域,这是v2026.6.6版本引入的核心安全机制。

📖 定义

Fail-Closed源自网络安全领域的经典原则:当防火墙无法判断流量是否安全时,默认应该阻止而非放行。在AI Agent语境下,Fail-Closed意味着:

⚙️ 核心原理

1. 执行超时 Fail-Closed

# v2026.6.6 新行为
$ openclaw exec "npm test" --timeout 60
# 超时后: 立即终止,返回错误码
# 旧行为: 继续等待直到手动干预

# 配置示例
exec:
  timeout: 60s
  onTimeout: kill  # fail-closed: kill | continue

2. 沙箱策略 Fail-Closed

# 沙箱配置
sandbox:
  policy: fail-closed  # 默认拒绝所有未明确允许的操作
  allow:
    - /tmp/*
    - /home/user/projects/*
  deny:
    - /etc/passwd
    - ~/.ssh/*

3. 会话记录 Fail-Closed

# 会话管理
transcripts:
  integrity: strict
  onCorruption: rebuild  # fail-closed: rebuild | ignore
  
# 损坏检测: SHA-256校验
# 重建机制: 从源数据重新生成

🔧 OpenClaw实战应用

场景1: CI/CD管道中的安全执行

# .github/workflows/ai-review.yml
- name: AI Code Review
  uses: openclaw/ai-action@v2
  with:
    exec-policy: fail-closed
    timeout: 120
    sandbox: strict
    
# 如果review超时,构建失败而非跳过
# 确保安全检查不会被绕过

场景2: 生产环境的工具执行

# ~/.openclaw/config.yaml
exec:
  defaultTimeout: 30s
  failClosed: true
  sandbox:
    enabled: true
    policy: deny-all  # 默认拒绝
    exceptions:
      - tool: "read"
        paths: ["/app/**"]
      - tool: "write"
        paths: ["/tmp/**"]

场景3: MCP服务器交互

# MCP连接配置
mcp:
  servers:
    - name: "database"
      endpoint: "https://db.example.com"
      failClosed: true
      timeout: 10s
      retry: 0  # 不重试,直接失败
      
# 安全优势:
# - 防止SQL注入通过重试放大
# - 快速失败便于问题定位
# - 避免连接池耗尽

📊 Fail-Open vs Fail-Closed 对比

场景 Fail-Open Fail-Closed
执行超时 继续等待 立即终止
权限不明确 允许访问 拒绝访问
会话损坏 继续使用 重建会话
安全风险 🔴 高 🟢 低
可用性影响 🟢 低 🟡 中

💡 最佳实践

✅ 推荐做法:
⚠️ 注意事项:

🔗 相关概念

📅 最后更新: 2026-06-13 | 🏷️ 标签: 安全 Fail-Closed OpenClaw v2026.6.6