
OpenClaw 24h 更新快报(2026-04-18):Codex OAuth、Gateway 安全漏洞、macOS 重启故障
过去24小时,OpenClaw 代码库迎来一轮高密度的安全与稳定性修复。Codex 认证体系完成集中化改造,彻底消除了 OpenClaw 自身凭证与本地 .codex 状态的分裂问题;Gateway 层修复了一个严重的部署令牌占位符绕过漏洞,CVSS 4.0 评分达 9.3;macOS 重启助手的 launchctl stderr 丢弃 bug 导致了真实的生产故障,补丁增加了可观测的持久日志。此外,多个渠道集成的静默错误问题得到改善,OpenRouter 模型兼容性也有更新。
Codex 认证体系集中化与安全加固
过去24小时最大的变化来自认证层:PR #68284 将 Codex OAuth 的所有权统一收归 OpenClaw canonical auth store。在此之前,OpenClaw canonical auth、运行时 .codex 引导路径和 Codex harness 使用的 host 环境凭证三套并存,导致 OAuth 状态漂移、健康检查与运行时决策不一致。
改造后,openai-codex profile 成为唯一权威来源,.codex 目录仅保留一次性导入用途,codex-cli 与 Codex app-server 均通过生成的私有 CODEX_HOME 运行,不再读取 host 上的真实 .codex。OpenClaw 本身也不会向 .codex 写入任何数据。
同期合入的 PR #68396 则从安全角度补强了 OAuth 刷新与 Codex CLI bootstrap 流程:临近过期的 OAuth 凭证现在被正确判定为不可用、刷新争夺时增加了有界的等待策略、local callback 超时后降级为手动输入而非无限等待。安全影响涉及令牌处理逻辑的变更,但修复了之前 split-brain 导致的潜在凭证混乱风险。
Gateway 部署令牌占位符绕过漏洞(Critical)
PR #68404 修复了一个评分为 Critical 的安全漏洞。官方部署指南(GCP、Hetzner)告诉运维人员在绑定到 LAN 时设置 OPENCLAW_GATEWAY_TOKEN=change-me-now,但 Gateway 启动时的弱口令检测逻辑只拒绝另一个 sentinel 值 change-me-to-a-long-random-token,而非 change-me-now。这意味着任何人都可以拿着这个公开的 bearer token 向 Gateway 的 /v1/chat/completions、/v1/responses 或 /tools/invoke 端点发起请求,并获得完整的默认操作员权限。
CVSS v3.1 为 9.8,CVSS v4.0 为 9.3。修复后启动时会正确拒绝部署文档中默认的占位符 token。
macOS 重启助手 stderr 丢弃导致真实故障
PR #68492 修复了一个长期存在的 macOS 更新脚本 bug:该脚本将所有 launchctl 命令的 stderr 重定向到 /dev/null,并将最后的 fallback kickstart 用 || true 包裹。这导致 bootstrap/kickstart 失败时脚本仍以 exit 0 退出,更新程序报告成功但 Gateway 实际已下线。据报告,某生产环境因此出现了约25分钟的消息服务中断(跨越 Telegram、Discord、Feishu 渠道),期间没有任何错误日志留存。
修复将 stderr 改为写入 ~/.openclaw/logs/update-restart.log,移除 || true 吞掉的错误,并在启动失败时返回非零 exit code。新增了专项回归测试来锁定该行为。
多个渠道集成的静默错误问题改善
Slack 和 Telegram 两个渠道的集成在本次更新中都修复了"静默吞掉错误"的问题。
PR #68594 修复了 Slack thread starter/history 解析函数中 bare catch {} 吞掉所有异常的问题——包括认证失败、rate-limit 拒绝、scope 错误(not_in_channel、channel_not_found)和网络抖动。修复后这些错误通过 logVerbose 记录到日志中,调用方行为不变(仍返回 null / []),但运维人员现在可以在 verbose 日志中看到真实原因。
PR #68588 则修复了 Telegram 频道分页回调的一个 bug:Telegram 对无法编辑的旧消息返回永久错误(如 message can't be edited),但回调处理器此前将所有编辑失败都包装为 TelegramRetryableCallbackError 后重试,导致该消息永久留在 failedUpdateIds 中,水印无法前进,后续新消息被阻塞。修复后永久性编辑错误被正确识别为"已完成"而非"失败",水印正常推进。
OpenRouter 兼容性与模型解析改进
PR #68579 和 PR #68577 分别修复了 OpenRouter 的兼容别名解析和 reasoning_details 输出解析问题,确保 OpenRouter 上的模型(包括免费交互别名)在 OpenClaw 运行时解析器中被正确映射和识别。
其他重要修复
PR #68607 修复了 Gemini 2.5 Pro 的 thinkingBudget=0 被错误发送的问题:该模型仅在 thinking 模式下工作,API 明确拒绝 Budget 0 is invalid,但嵌入式运行器的清理函数此前只处理负值,未处理零值。修复后当模型为 gemini-2.5-pro 系列时,零值 budget 会被移除,并当其是 thinkingConfig 中唯一键时顺带移除空对象。
PR #68480 将 active-memory 的 timeoutMs 上限从 60 秒提升至 120 秒,此前文档中出现了 120 秒示例但运行时会强制截断。
PR #68517 修复了 stale-gateway 清理逻辑错误杀死父进程的问题:清理逻辑此前只排除了调用者自身的 PID,而非其完整祖先链,导致 openclaw-weixin sidecar 的清理步骤会杀死其父 Gateway,引发无界的重启循环。
PR #68207 扩展了 SSRF 策略白名单,对配置的 CDP 主机名自动放行,无需手动维护。
PR #68482 修复了 delivery.mode=none 时 Cron 任务错误关闭 message tool 的问题,确保此类场景下消息路由和线程创建能力得以保留。
本轮更新整体以安全加固和渠道稳定性提升为主基调,Codex 认证体系完成了关键的集中化改造。


评论