# Codex Mac 桌面版检查更新失败（520）：服务器端故障已修复

> Mac 上 ChatGPT（Codex）桌面版检查更新失败、日志里是 appcast 520，属于 OpenAI 服务器故障，北京时间 10 月 22 日已修复；仍报错就退出重试或覆盖安装。

- Source: https://www.aifreeapi.com/zh/posts/codex-update-check-failed
- Language: zh
- Published: 2026-10-22
- Updated: 2026-10-22
- Publisher: AI Free API (https://www.aifreeapi.com)

在 Mac 上点菜单栏的「ChatGPT → Check for Updates」，弹出 "Update Error!" 和 "An error occurred in retrieving update information. Please try again later."，系统语言是简体中文时可能显示为「更新错误！」「获取升级信息时出现错误，请稍后再试。」；如果应用日志里同时有 `SUSparkleErrorDomain Code=2001` 和 `server error (520)`，这是 2026 年 10 月中旬 OpenAI 更新服务器的故障，不是你的电脑、网络或安装出了问题。OpenAI 员工在 GitHub 的 [#53891](https://github.com/openai/codex/issues/53891) 里于北京时间 2026 年 10 月 22 日 01:29（UTC 10 月 21 日 17:29）回复 "This is fixed!" 并关闭了问题，修复在服务器端完成，不需要先装新版本。

现在只需要做一件事：按 ⌘Q 彻底退出 ChatGPT（只关窗口不算），重新打开后再点一次检查更新。仍然报错，再按下文"现在还提示更新失败"一节的顺序处理；想先知道自己是不是已经是最新版，看"更新器报错时怎样确认版本"那一节，不依赖更新器也能核对。

关于名字：2026 年 7 月 9 日起，Codex app 并入了 Mac 和 Windows 上的 ChatGPT 桌面版（见 [ChatGPT 更新日志](https://learn.chatgpt.com/docs/changelog)）。所以 Mac 上的应用叫 ChatGPT.app，内部标识仍是 `com.openai.codex`，「关于」窗口里写着 "Powered by Codex & OWL"。下文的"桌面版"指的就是它。

## 哪种"更新失败"才是这次的 520：按弹窗原文对照

更新失败不止这一种。先用你看到的提示对一下表，不是第一行的情况，处理方法完全不同。

| 你看到的 | 说明什么 | 先做什么 |
| --- | --- | --- |
| 「获取升级信息时出现错误，请稍后再试」（英文 "An error occurred in retrieving update information"），日志里是 `Code=2001` 加 `server error (520)` | 这次的更新源故障：应用连更新信息都没拿到 | 已修复；彻底退出后重新检查 |
| 设置 → 通用里有 "In-app updates: Managed"，提示 "Your organization has turned off in-app updates." | 组织管理员按策略关掉了应用内更新，与 520 无关 | 找管理员，由公司的设备管理平台推送新版 |
| 「此更新未正确签名，无法验证其真实性」（"The update is improperly signed and could not be validated"） | 下载到的更新包没通过签名校验，见 [#28369](https://github.com/openai/codex/issues/28369)，截至 10 月 22 日仍未关闭 | 不要关掉校验，从官方地址下载安装包覆盖安装 |
| 「您的macOS版本太旧了」（"Your macOS version is too old"） | 系统低于新版本要求；截至 2026 年 10 月 22 日，最新版要求 macOS 13.0 或更高 | 先升级 macOS |
| 下载进度反复从 0 开始 | 约 684 MB 的更新包在不稳定的网络下没能续传，见 [#51903](https://github.com/openai/codex/issues/51903) | 换稳定的网络，或直接下载官方安装包 |
| Windows 上更新失败，或更新后打不开 | 不是这次故障：520 的报告全部来自 Mac，Windows 版走自己的更新途径（应用内、Microsoft Store、Intune 等） | 更新后启动报 app-server 错误的，看 [Codex app-server 启动失败：按报错原文对症修，先别删 .codex](/zh/posts/codex-app-server-failed-to-start) |

第一行的弹窗本身不显示 520，这个状态码只在日志里出现，而 OpenAI 没有公开桌面版日志的存放位置。不看日志也能判断：弹窗原文对得上、出现在 10 月 13 日到 22 日之间、用的是 Mac，基本就是这次的故障。

## 「获取升级信息时出现错误」加 520：问题出在 OpenAI 的更新服务

日志里那一段大致是这样（查询参数省略）：

```text
SUSparkleErrorDomain Code=2001
A network error occurred while downloading
https://updates.oaistatic.com/codex/app/appcast?...
server error (520)
```

拆开看，每一部分都指向服务器那一侧：

- **Code=2001**：桌面版用开源更新框架 Sparkle 检查更新。在 [Sparkle 的错误码定义](https://github.com/sparkle-project/Sparkle/blob/2.x/Sparkle/SUErrors.h)里，2001 是 `SUDownloadError`，意思是获取更新信息时网络请求失败；如果更新信息拿到了却解析不了，报的会是 1002（`SUAppcastError`）。
- **appcast**：Sparkle 的更新信息地址，返回一份列出最新版本号、下载地址和最低系统要求的 XML。桌面版请求的是 `https://updates.oaistatic.com/codex/app/appcast`，后面带着安装 ID、芯片架构、当前版本、系统版本等参数。
- **520**：Cloudflare 的状态码。按 [Cloudflare 的说明](https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-520/)，它表示源站给 Cloudflare 返回了空的、无法识别的或异常的响应；能做的修复全在网站方，访问者这边没有办法。

所以这三样组合起来的意思是：请求已经到了 OpenAI 的 CDN，是后面的更新服务没有正常应答。GitHub 上的报告里，重启 Mac、清 DNS 缓存都没有用。

![更新请求路径示意：你的 Mac 上的 ChatGPT 桌面版经 Cloudflare 请求动态更新源 updates.oaistatic.com，更新服务应答异常，返回 520，弹窗报 Code=2001；下方标注 Mac 和网络不是原因、故障在服务器端并已于北京时间 10 月 22 日 01:29 修复，静态更新源 appcast.xml 一直返回 200](https://www.aifreeapi.com/posts/zh/codex-update-check-failed/img/update-request-path.webp)

受影响的范围也说明不是个别电脑的问题。报告覆盖了 26.1007.30912 到 26.1016.51333 之间的多个版本，以及 macOS 15.2、26.5.2、26.7.1、27.0、27.0.1 等多个系统版本，都是 Apple 芯片的 Mac，没有 Intel 机型的公开报告。

不少人试过从官方地址下载新版覆盖安装：应用版本号确实变了，可「检查更新」照样报错。有用户在 issue 里分析过应用包：故障期间，静态更新源 `https://persistent.oaistatic.com/codex-app-prod/appcast.xml` 一直返回 200，出问题的只是动态地址 `updates.oaistatic.com`，而正式版只用动态地址，失败时不会退回静态源，所以重装修不好。这是用户的逆向分析，OpenAI 没有确认。

故障还和网络出口有关，但没有规律。[#55084](https://github.com/openai/codex/issues/55084) 里，同一台 Mac 走 IPv6 得到 520、走 IPv4 正常；有人切到手机热点就好了，也有人热点照样失败；还有人好了几天后又复发。这些都是个人报告，OpenAI 没有公布原因。

## 修好了吗：OpenAI 于北京时间 10 月 22 日 01:29 宣布已修复

按 GitHub [#53891](https://github.com/openai/codex/issues/53891) 的记录（时间换算为北京时间）：

- **10 月 13 日晚**（美国当地时间）：最早有用户发现检查更新失败。
- **10 月 14 日 14:42**：#53891 提出，标题是 "[macOS] Update checks fail because appcast endpoint returns HTTP 520"。之后 #54144、#54296、#54364、#54392 作为重复报告并入，IPv6 情形的 #55084 也作为重复关闭。
- **10 月 14 日到 21 日**：新版本陆续发布，报告一直没断，包括手动装上新版后仍然失败的。
- **10 月 22 日 00:04**：OpenAI 员工 Robbie Ostrow 回复已经找到问题，修复很快上线。
- **10 月 22 日 01:22**：有用户回复已经恢复。
- **10 月 22 日 01:29**：Robbie Ostrow 回复 "This is fixed!" 并把 issue 标为完成关闭。
- **10 月 22 日 09:16**：静态更新源里才出现下一个版本 26.1016.61520。

用户确认恢复的时间早于新版本发布，说明修复是在服务器端做的，你不需要先升级应用，更新器本身就应该能用了。截至 2026 年 10 月 22 日，#53891 关闭后没有新回复，openai/codex 里也没有新开的 520 报告。

还不知道的几件事：OpenAI 没有公布故障原因；没有说明是否每台受影响的 Mac 都已自动恢复；也没有说修复后要不要重启应用。所以下一节的第一步是彻底退出再试，而不是等待。

## 现在还提示更新失败：按这个顺序处理

![四步处理示意：1 彻底退出再检查，显示最新版就结束；2 在设置的「通用」页看 In-app updates 是否显示 Managed，有标记就找管理员；3 从官方地址下载 ChatGPT.dmg 覆盖安装，装好回到第 1 步；4 在 GitHub 新开 issue 或用应用内反馈报告，别贴安装 ID；底部红条列出不要关闭校验、修改 ChatGPT.app 或用第三方镜像](https://www.aifreeapi.com/posts/zh/codex-update-check-failed/img/still-failing-steps.webp)

### 第 1 步：彻底退出 ChatGPT，再检查更新

按 ⌘Q，或在菜单栏选「ChatGPT → Quit ChatGPT」。只关窗口不一定会让应用真正退出，OpenAI 的 [Manage app updates 文档](https://learn.chatgpt.com/codex/enterprise/manage-app-updates)也特别提醒了这一点。重新打开后点「Check for Updates」：

- 显示 "You're up to date!"（中文系统可能是「您使用的就是最新版！」）或提示有新版本可下载，说明已经恢复，到此为止。
- 仍然是「获取升级信息时出现错误」，继续第 2 步。

### 第 2 步：看设置里有没有 "In-app updates: Managed"

打开设置 → 通用（Settings → General），找 "In-app updates" 这一行。如果显示 "Managed"，并附有 "Your organization has turned off in-app updates."，说明你所在的 Business 或 Enterprise 工作区用策略关掉了应用内更新。按官方文档，这时「Check for Updates」菜单可能还在，但不起作用；新版本要由公司通过 MDM、Intune 等设备管理平台推送，找管理员处理。

没有这一行，就不是托管的问题，继续第 3 步。

### 第 3 步：用官方安装包覆盖安装

从 OpenAI 文档给出的地址下载 macOS 安装包：`https://persistent.oaistatic.com/codex-app-prod/ChatGPT.dmg`（截至 2026 年 10 月 22 日约 813 MB），打开后把 ChatGPT 拖进「应用程序」文件夹，替换旧版。

GitHub 评论里流传的另一个地址 `https://persistent.oaistatic.com/codex-app-prod/Codex.dmg` 截至 10 月 22 日比 ChatGPT.dmg 旧一个版本，优先用文档里的 ChatGPT.dmg。

覆盖安装能让你马上用上新版，但修不好更新源：故障期间，很多人装完新版后检查更新照样失败。装完之后回到第 1 步再检查一次。

### 第 4 步：还是失败，向 OpenAI 报告

#53891 已经关闭。修复后仍然稳定复现的，在 [openai/codex](https://github.com/openai/codex/issues) 新开一个 issue，或用应用内的反馈功能提交。写清楚版本号和构建号、macOS 版本、芯片类型、出错时间（带时区），以及是否开着代理或 VPN。不要原样贴出日志或请求地址：里面带着你的安装 ID。

### 这几种做法不要用

- 关闭 TLS 证书或更新签名校验，修改、重新签名 ChatGPT.app，或者从网盘和第三方镜像下载安装包。安装包只从上面的官方地址下载。
- issue 里流传过一个绕路办法：把 `~/Library/Application Support/com.openai.codex/production-appcast-bootstrap.json` 里的 `backendAppcastEnabled` 从 true 改成 false，让应用改用静态更新源；因为应用会自己把它改回 true，又加了一个每秒检查一次、再把它改成 false 的后台任务。服务器修好后，这套办法已经没有必要。这个办法从来不是 OpenAI 支持的做法，不要再装。已经装过的，按[原帖](https://github.com/openai/codex/issues/53891)里的移除步骤撤掉：停掉那个 launchd 任务，再把 `backendAppcastEnabled` 改回 true，然后彻底退出、重新打开 ChatGPT，让应用回到默认的更新方式。

## 更新器报错时怎样确认版本：对照静态更新源

更新器坏了的时候，可以自己比对两个数：你装的版本，和 OpenAI 静态更新源里的最新版本。整个故障期间静态更新源都正常，可以放心拿来参照。

**看已安装的版本**：菜单栏「ChatGPT → About ChatGPT」里有版本号。

**看最新版本**：用浏览器打开静态更新源，第一个 `<item>` 里的 `<title>` 就是最新版本号：

- Apple 芯片：`https://persistent.oaistatic.com/codex-app-prod/appcast.xml`
- Intel：`https://persistent.oaistatic.com/codex-app-prod/appcast-x64.xml`

截至 2026 年 10 月 22 日，两个源的最新版都是 26.1016.61520（构建号 21421，北京时间 10 月 22 日 09:16 发布），最低系统要求 macOS 13.0。这个版本号一周会变好几次，以你打开时看到的为准。

习惯用终端的话，下面几行可以直接复制运行（只读，不改任何文件）：

```bash
# 已安装的版本号和构建号（应用不在 /Applications 时换成实际路径）
/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' /Applications/ChatGPT.app/Contents/Info.plist
/usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' /Applications/ChatGPT.app/Contents/Info.plist

# 芯片类型：arm64 是 Apple 芯片，x86_64 是 Intel
uname -m

# 静态更新源里的最新版本（Intel 机型把 appcast.xml 换成 appcast-x64.xml）
curl -s https://persistent.oaistatic.com/codex-app-prod/appcast.xml \
  | grep -m1 -o '<sparkle:shortVersionString>[^<]*' | sed 's/.*>//'
```

两个版本号一样，你就是最新版，即使更新器还在报错也不急着处理；已安装的更旧，按上一节第 3 步用官方安装包覆盖安装。

## 用 curl 测更新源：400、520、200 分别说明什么

有人会自己用 curl 请求更新地址来判断故障有没有恢复。看到的状态码这样理解：

| 请求 | 结果 | 说明什么 |
| --- | --- | --- |
| `curl -s -o /dev/null -w '%{http_code}\n' https://updates.oaistatic.com/codex/app/appcast` | `400`，返回内容里有 `Field required`，缺的是 `installation_id`、`arch`、`app_version` | 正常。更新服务在应答，只是你没带应用才有的参数，这不是本次故障 |
| 同上 | `520`，响应头 `server: cloudflare`，正文 `error code: 520` | 这次故障的样子：Cloudflare 后面的更新服务没有正常应答 |
| `curl -s -o /dev/null -w '%{http_code}\n' https://persistent.oaistatic.com/codex-app-prod/appcast.xml` | `200` | 静态更新源正常，可以用来核对最新版本；但它正常不代表应用用的动态地址也正常 |

截至 2026 年 10 月 22 日，直接请求动态地址返回的是 400。注意，故障期间也有人不带参数请求得到 400，同一台 Mac 上应用带参数的请求却还是 520。所以 400 只能说明服务在线，不能证明你的应用一定能检查成功，最终以应用内「Check for Updates」的结果为准。也不要为了测试去拼一个带安装 ID 的完整请求，没有必要。

## Codex 桌面版检查更新失败的其他疑问

### 修复后需要重启 Mac 吗？

OpenAI 没有说明。故障期间重启 Mac 并不能解决问题，修复后先彻底退出 ChatGPT 再打开、重新检查更新；这样还不行，再试重启，或者直接按上文第 3 步覆盖安装。

### 开 VPN 或者切到手机热点，能解决检查更新失败吗？

不能当作解决办法。故障期间有人开 VPN 后检查成功，同一个人换到另一个出口又失败；有人切手机热点成功，也有人照样报错；还有用户的情况正相反，关掉 VPN 才好。OpenAI 没有把切换网络列为修复方法，现在服务器端已经修好，更用不着。
