codexfast
v0.14.0
Published
Enable Fast mode, GPT-5.5, /fast, Speed menu, and Plugins in OpenAI Codex.app for custom API users on macOS.
Maintainers
Readme
codexfast - 为 OpenAI Codex.app 开启 Fast mode、GPT-5.5 和 Plugins
一个面向 OpenAI Codex.app 的 macOS patch 脚本,用于在已验证兼容的版本上重新启用被隐藏的 custom API 能力。
codexfast 是一个面向 macOS custom API 用户的 OpenAI Codex.app 单文件 patcher,用来恢复被隐藏的 Fast mode 能力,包括 Settings 里的 Fast 设置项、输入框 /fast 命令、composer 里的 Speed 菜单、必要版本上的 GPT-5.5 模型列表兼容,以及 Plugins 入口。
- Fast 设置项(Settings 中)
/fast输入框命令- Speed 子菜单(composer 中)
- GPT-5.5 模型列表兼容(仅在受支持版本仍需要时)
- Plugins 入口(custom API 用户可用)
npx codexfast已验证兼容:Codex.app 26.506.31421(build 2620)、26.506.21252(build 2575)、26.429.61741(build 2429)、26.429.30905(build 2345)、26.429.20946(build 2312)、26.422.71525(build 2210)、26.422.62136(build 2180、2176)、26.422.30944(build 2080)、26.422.21637(build 2056)、26.417.41555(build 1858)和 26.415.40636(build 1799)。能力定义见 docs/feature-scope.md。
作用
脚本在安装好的 Codex.app 上提供这些菜单动作:
- 查看当前状态 — 检查版本、目标文件,以及当前是否可以安全打补丁
- 开启 custom API 相关能力 — 恢复上面列出的能力集合
- 恢复原始状态 — 回退到原始应用 bundle
- 安装自动修复 watcher — Codex 更新并替换
app.asar后,在受支持版本上自动重新应用补丁 - 卸载自动修复 watcher — 移除 launchd watcher
打补丁流程:解包 app.asar,改写前端资源,重新打包,更新 Info.plist 中的 ElectronAsarIntegrity hash,再做一次本地 ad-hoc 重签名,保持 Codex.app 可以正常启动。
原理
Codex.app 打包后的前端 bundle 里本来就包含 Fast、/fast、Speed、模型列表和 Plugins 相关 UI 路径,但其中一部分路径会因为 custom API 用户的本地 gate 判断而被隐藏或禁用。codexfast 不新增后端服务,也不调用 OpenAI 私有 API;它只在已验证兼容的版本上修改本机安装的 app bundle。
脚本会先从 Info.plist 读取当前安装的 app version 和 build,只有精确命中严格兼容白名单时才允许 apply。对于受支持版本,它会把 Contents/Resources/app.asar 解包到临时目录,在 webview/assets/*.js 里搜索稳定的功能锚点,再用窄范围代码签名替换移除 custom API gate,或强制打开对应的本地 UI 可用性标记。
需要解包再重新打包,是因为 Codex 把 renderer 代码放在 Electron 的 app.asar 归档里;如果直接把散文件放到 Contents/Resources/app,会让 app 处在非标准布局,也容易和之后的自动更新冲突。codexfast 只在临时目录里解包处理,最终替换的仍然是打包后的 app.asar。
替换归档前,脚本会保留恢复路径:app.asar1 归档级备份,以及重新打包 bundle 内的 *.codexfast.bak 文件级备份。重新打包后,它会更新 Info.plist 里的 Electron ASAR integrity hash。由于修改 app.asar 会让原始代码签名失效,脚本随后会执行本地 ad-hoc codesign,让 macOS 可以启动被修改后的 app。这个本地签名可以通过 codesign 校验,但会替换原厂 notarization,因此屏幕录制等 macOS 隐私权限可能需要重新授权。Restore 会按顺序优先使用归档备份,其次使用文件备份,最后再尝试内联恢复规则。
使用方式
仅支持 macOS。需要:Codex.app 安装在 /Applications,命令行可用 Node.js >=18.12.0、npm 和系统自带的 codesign。
运行 patcher:
npx codexfast或在本仓库里直接运行:
./bin/codexfast查看帮助或当前包版本:
npx codexfast help
npx codexfast version脚本会打开一个交互菜单:
1) View current status
2) Enable custom API features
3) Restore original state
4) Install auto-repair watcher
5) Uninstall auto-repair watcher
q) Quit这些动作也可以用非交互命令直接执行:status、apply、restore、install-watcher 和 uninstall-watcher。
命令说明
| 命令 | 用途 |
| --- | --- |
| npx codexfast status | 检查当前安装的 Codex.app,显示检测到的版本、build、兼容性状态和各 patch 目标状态,不修改 app。 |
| npx codexfast apply | 对兼容 build 应用当前支持的补丁集合,创建备份,刷新 Electron ASAR integrity,本地 ad-hoc 重签名,并重置屏幕录制权限记录。 |
| npx codexfast restore | 先移除已安装的 auto-repair watcher,再通过备份或内联恢复规则还原 vendor bundle,必要时重新签名,并在恢复成功后重置屏幕录制权限记录。 |
| npx codexfast install-watcher | 安装当前用户的 macOS launchd auto-repair watcher,监听 app.asar,在受支持的 Codex 更新后运行最新发布版的 repair。 |
| npx codexfast uninstall-watcher | 删除 auto-repair watcher 的 plist 和本地 watcher runtime。这个清理命令不依赖一个健康的 Codex.app 安装。 |
查看状态
先选择 1) View current status。状态检查会读取当前安装的 Codex.app,显示检测到的版本和 build,告诉你兼容性是否为 supported,并列出 app bundle 里找到的 patch 目标。
每次 Codex 更新后都先跑一次查看状态。如果兼容性不是 supported,不要在这个版本上开补丁。
开启功能
当状态显示当前 build 已支持时,选择 2) Enable custom API features。这会开启当前支持的能力集合:
- Settings 里的 Fast 控制项
- composer 里的
/fastslash command - composer 里的 Speed 菜单
- 必要版本上的 GPT-5.5 模型列表兼容
- custom API 用户的 Plugins 入口
第一次开启时脚本会创建备份,更新 app.asar,刷新 Electron ASAR integrity hash,并执行本地 ad-hoc 重签名。由于重签名会改变 macOS 隐私权限识别应用时使用的身份,apply 会重置 Codex.app 的屏幕录制权限记录。脚本完成后重启 Codex.app,并在 macOS 提示时允许“屏幕与系统音频录制”。
关闭或恢复
选择 3) Restore original state 可以关闭补丁。恢复流程会先移除已安装的 auto-repair watcher,再优先把 Codex.app 回滚到备份的原始 vendor bundle,必要时重新签名。恢复成功并重签名后,脚本也会重置 Codex.app 的屏幕录制权限记录,让 macOS 在下次启动时重新询问。
排查问题、测试新的 Codex 更新,或想回到官方原始行为时,都可以先执行恢复。如果恢复后还想继续自动修复,请再显式安装 watcher。
自动修复 watcher
选择 4) Install auto-repair watcher,或运行:
npx codexfast install-watcher这会安装一个当前用户的 macOS launchd agent:~/Library/LaunchAgents/com.codexfast.watcher.plist。它会监听 /Applications/Codex.app/Contents/Resources/app.asar,当 Codex 更新替换这个归档后,自动运行 npx --yes codexfast@latest repair。
watcher 只有在新安装的 version/build 已经命中严格兼容白名单时才会应用补丁。不支持的 build 会静默跳过,并保持 app 不变。
repair 是幂等的。如果 Codex 已经处在 patched 状态,它会报告不需要修改,并保持 app.asar、Info.plist 和应用签名不变,因此 watcher 不会因为自己的修复写入而循环触发。若 Codex 已经在运行,磁盘上的归档被修复后,需要完全退出并重新打开 Codex,前端 bundle 才会重新加载。
移除 watcher:
npx codexfast uninstall-watcher兼容性
本脚本不走官方 API,而是通过匹配前端打包产物的代码特征做补丁,Codex 更新后可能失效。
- 已验证版本:
Codex.app26.506.31421(build 2620) - 已验证版本:
Codex.app26.506.21252(build 2575) - 已验证版本:
Codex.app26.429.61741(build 2429) - 已验证版本:
Codex.app26.429.30905(build 2345) - 已验证版本:
Codex.app26.429.20946(build 2312) - 已验证版本:
Codex.app26.422.71525(build 2210) - 已验证版本:
Codex.app26.422.62136(build 2180、2176) - 已验证版本:
Codex.app26.422.30944(build 2080) - 已验证版本:
Codex.app26.422.21637(build 2056) - 已验证版本:
Codex.app26.417.41555(build 1858) - 已验证版本:
Codex.app26.415.40636(build 1799) - 开启动作 只允许在白名单里的 version/build 上执行
- 自动修复 遇到不支持的 version/build 也会静默跳过,并且不会修改 app
- 查看状态 和 恢复 在任何版本都可用
- GPT-5.5 模型列表补丁只在仍需要兼容补丁的受支持版本上注入 UI catalog 项。
Codex.app26.422.30944及之后的版本预期已经通过官方 app 路径展示 GPT-5.5,因此codexfast会从26.422.30944起跳过这个 apply 目标;你的 custom API provider 仍然必须支持gpt-5.5 - Plugins 会移除受支持版本上打开 Plugins 侧边栏和页面路径所需的 custom API gate;在
26.429.20946、26.429.30905、26.429.61741、26.506.21252和26.506.31421上也会移除安装按钮的聚合 connector-unavailable 阻断,并保留安装弹窗中的插件详情。插件实际行为仍可能取决于插件状态、connector 运行时行为或管理侧限制
每次 Codex 更新后都建议重新跑一次 查看当前状态。
备份与恢复
第一次开启时会留下两份备份:
app.asar1— 归档级备份(原始 bundle)*.codexfast.bak— 文件级回退备份。恢复流程也会识别早期版本留下的旧*.speed-setting.bak后缀。
恢复 会先移除 auto-repair watcher,再优先使用 app.asar1,其次 .bak,最后尝试按内联规则恢复。Codex 未来的自动更新可能覆盖补丁状态。
本地 ad-hoc 重签名能通过
codesign完整性校验,但会替换原本的厂商 notarization。spctl --assess报rejected是预期现象,验证签名请使用codesign --verify --deep --strict --verbose=2 /Applications/Codex.app。
故障排查
脚本一启动就失败 — 确认 /Applications/Codex.app 是否存在,再跑一下 node -v 是否为 18.12.0 或更高版本、npm -v、codesign -h。
自动重签名失败(macOS 拒绝写入) — 手动执行:
codesign --force --deep --sign - /Applications/Codex.appmacOS 反复提示想要录制此电脑的屏幕和音频 — apply 和 restore 会在重签名后重置屏幕录制权限记录。请完全退出 Codex.app,重新打开,并在系统设置提示中允许“屏幕与系统音频录制”。
找不到目标文件 / 版本不被支持 — 不要继续,也不要手动改 bundle。当前构建可能需要重新适配。
Plugins 已可见但某个具体插件仍无法使用 — 请先跑 查看当前状态。在 26.429.20946、26.429.30905、26.429.61741 和 26.506.21252 上,Plugin install availability enabled 表示顶层 connector-unavailable 安装阻断已被 patch,Plugin install modal content enabled 表示安装弹窗空详情卡片的 gate 已被 patch;剩余失败通常来自插件状态、connector 运行时行为或管理侧限制。
GPT-5.5 已可见但请求失败 — UI 项已经存在,但你的 custom API provider 仍需接受 model: "gpt-5.5"。
Codex.app 在之前异常脚本运行后无法打开(残留 Resources/app 或错误的 integrity hash):
- 删除
/Applications/Codex.app/Contents/Resources/app - 将
app.asar1改回app.asar - 重新打开
Codex.app
开源协议
MIT。见 LICENSE。
