CPA + Codex 配置避坑指南 前言 本文记录了配置 CLI Proxy API (CPA) 与 Codex 集成时遇到的各种坑,希望能帮助后来者少走弯路。 环境信息 系统 : macOS (Apple Silicon) CPA 版本 : v6.9.29 Codex 版本 : 0.121.0 代理工具 : ClashX / Clash Verge 核心问题:502 Bad Gateway 症状 Codex 启动后尝试连接 API 时,反复出现: Unexpected status 502 Bad Gateway: Unknown error, url: http://localhost:8321/v1/responses 根本原因 系统代理拦截了 localhost 请求! ClashX/Clash Verge 等代理工具默认会拦截所有 HTTP 请求,包括 localhost 和 127.0.0.1 。当 Codex 尝试访问本地 CPA 服务时,请求被代理转发,导致: 请求无法直接到达本地服务 代理返回 502 错误 日志中看不到任何请求记录(因为请求根本没到达目标服务) 解决方案 方法 1:设置 NO_PROXY 环境变量(推荐) # 添加到 ~/.zshrc 或 ~/.bashrc export NO_PROXY="localhost,127.0.0.1" # 应用配置 source ~/.zshrc 重要: 必须在新终端中启动 Codex,才能加载新的环境变量。 方法 2:配置代理绕过规则 在 ClashX/Clash Verge 中添加绕过规则,让 localhost 不走代理。 其他常见问题 1. API Key 不匹配 (401 Unauthorized) 症状: Unexpected status 401 Unauthorized: {"error":"Invalid API key"} 原因: Codex 使用了自己的 API key(格式如 sk-sub-Pack6n6X... ),而不是配置文件中的 api_key 。 解决方案: 将 Codex 使用的 key 添加到 CPA 配置中: # ~/cpa-config.yaml api-keys: - "your-custom-key" - "sk-sub-Pack6n6X_yKXdwEwPB2mT0iGkcQyE4IMMHe-kCN7TIy4L-gf" # Codex 的 key 重启 CPA: pkill -f "cpa.*config" ~/.local/bin/cpa -config ~/cpa-config.yaml > /tmp/cpa.log 2>&1 & 2. 端口被占用 症状: Error: listen EADDRINUSE: address already in use 127.0.0.1:8321 原因: 旧的 shim 进程还在运行 LaunchAgent 自动重启服务 解决方案: # 查找占用端口的进程 lsof -nP -iTCP:8321 -sTCP:LISTEN # 停止进程 kill -9 <PID> # 禁用自动启动 launchctl unload ~/Library/LaunchAgents/com.linkunkun.codex.cliproxy-shim.plist 3. 旧版本冲突 症状: Homebrew 安装的旧版本 cliproxyapi 自动重启。 解决方案: # 停止 Homebrew 服务 brew services stop cliproxyapi # 卸载旧版本 brew uninstall cliproxyapi # 清理配置 rm -rf /opt/homebrew/etc/cliproxyapi* rm -f ~/Library/LaunchAgents/homebrew.mxcl.cliproxyapi.plist 4. Shim 是否必需? 答案:不需要! 早期以为需要 shim 来转换请求格式,但实际上: CPA 原生支持 /v1/responses 端点 直接连接 CPA 更简洁高效 推荐配置: # ~/.codex/config.toml [model_providers.custom] name = "custom" wire_api = "responses" base_url = "http://localhost:8317/v1" # 直接连 CPA api_key = "your-api-key" 完整安装步骤 1. 安装 CPA # 下载最新版本 curl -L -o /tmp/cpa.tar.gz https://github.com/router-for-me/CLIProxyAPI/releases/download/v6.9.29/CLIProxyAPI_6.9.29_darwin_arm64.tar.gz # 解压并安装 cd /tmp tar -xzf cpa.tar.gz mkdir -p ~/.local/bin mv cli-proxy-api ~/.local/bin/cpa chmod +x ~/.local/bin/cpa # 添加到 PATH echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc source ~/.zshrc 2. 配置 CPA # 复制示例配置 cp /tmp/config.example.yaml ~/cpa-config.yaml # 编辑配置 vim ~/cpa-config.yaml 关键配置项: port: 8317 # 管理密钥 remote-management: secret-key: "your-admin-password" # API keys api-keys: - "your-api-key" 3. 启动 CPA nohup ~/.local/bin/cpa -config ~/cpa-config.yaml > /tmp/cpa.log 2>&1 & 4. 配置 Codex # ~/.codex/config.toml model_provider = "custom" model = "gpt-5.4" [model_providers.custom] name = "custom" wire_api = "responses" base_url = "http://localhost:8317/v1" api_key = "your-api-key" 5. 配置代理绕过(关键!) # 添加到 ~/.zshrc echo 'export NO_PROXY="localhost,127.0.0.1"' >> ~/.zshrc source ~/.zshrc 6. 测试 # 测试 CPA curl http://localhost:8317/v1/models -H "Authorization: Bearer your-api-key" # 在新终端启动 Codex codex 调试技巧 1. 查看 CPA 日志 tail -f /tmp/cpa.log 2. 查看 Codex 日志 tail -f ~/.codex/log/codex-tui.log 3. 检查端口占用 lsof -nP -iTCP:8317 -sTCP:LISTEN 4. 测试 API 连接 curl -v http://localhost:8317/v1/responses \ -H "Authorization: Bearer your-api-key" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-5.4","input":[{"role":"user","content":[{"type":"input_text","text":"test"}]}]}' 5. 检查代理设置 # 查看环境变量 env | grep -i proxy # 查看活动连接 lsof -nP -iTCP | grep codex | grep ESTABLISHED 常见错误排查流程 502 Bad Gateway ↓ 检查是否有代理 (lsof -nP -iTCP | grep codex) ↓ 有代理 → 设置 NO_PROXY ↓ 无代理 → 检查服务是否运行 ↓ 401 Unauthorized ↓ 检查 Codex 使用的 API key (查看日志) ↓ 将 key 添加到 CPA 配置 ↓ 重启 CPA 总结 配置 CPA + Codex 的最大坑就是 系统代理 。记住: 设置 NO_PROXY 环境变量 在新终端启动 Codex 直接连接 CPA,不需要 shim 将 Codex 的 API key 添加到 CPA 配置 遵循这些原则,可以避免 90% 的问题。 参考资源 CPA GitHub CPA 文档 管理界面 最后更新 : 2026-04-18 作者 : 基于实际踩坑经历整理 5 个帖子 - 3 位参与者 阅读完整话题
首先感谢这位佬无私的馈赠 想问问领到json的 你们上传cpa后报401吗 4 个帖子 - 3 位参与者 阅读完整话题
如题,我3个账号用cpa(不然聊天记录不共享)的api接入codex,但是发现用api没法开始codex的/fast,这应该怎么办?难道用ccs再加一个解析本地会话记录的东西吗 2 个帖子 - 2 位参与者 阅读完整话题
model_provider = "cliproxyapi" model = "gpt-5.4" model_reasoning_effort = "xhigh" service_tier = "fast" 上面是我codex 模型配置,我看cpa日志,是不会用gmini和claude的供应商,有啥办法在codex会话里面切换或者让cpa自动切换吗 随便再问一下,cpa里面ai供应商的那个前缀配置怎么用啊 2 个帖子 - 2 位参与者 阅读完整话题
开通账号的plus后,我在cpa上通过oauth登陆,cpa这边认证成功了,为什么这里还是现实free,额度是空呢。 3 个帖子 - 3 位参与者 阅读完整话题
cpa里面挂了一些plus账号,生成的key先挂在cc switch中,vs code中用codex,一会儿能用一会儿不能用。报错codex报401,cc swtich报502。cpa日志里400 401 各种日志都有。 用了几天,一会儿能用一会儿不能用的。大多场景发生在所有账号额度用完,下5小时额度出来的时间节点,各种报错。 17 个帖子 - 11 位参与者 阅读完整话题
这样是不是没问题 cpa就只用来看使用量 然后在vscode登录使用 2 个帖子 - 2 位参与者 阅读完整话题
之前10号左右用站内佬的注册机搓了三百多个号授权到CPA上 前两天封杀后还剩下一百多个 想问下授权的号有效期是多久 CPA会不会自动更新令牌 如果不会的话怎么批量更新令牌 1 个帖子 - 1 位参与者 阅读完整话题
这是为啥?你们有遇到吗?使用cpa,提示429额度用完,不知道会不会刷新呢 1 个帖子 - 1 位参与者 阅读完整话题
需要给ClaudeCode和LLM两者同时破限。学习资料: Claude破限脚本 - 开发调优 / 开发调优, Lv1 - LINUX DO 发一个破限好的codex的提示词,方便大家codex写注册机之类的 - 开发调优 / 开发调优, Lv1 - LINUX DO 1 个帖子 - 1 位参与者 阅读完整话题
RT我CPA里面的四个Plus账号有三个都收到了,是不是不能反代了,他说下一步就要封号了 佬友们快去看看 奥特曼要干嘛!!! 7 个帖子 - 6 位参与者 阅读完整话题
同一台服务器 + 相同的网络 + 相同的请求内容 + 一样的请求链路 4.15号左右开始,发现CPA反代超级慢 账号都是Team + Plus 为什么速度差距这么大? 测速图片如下 16 个帖子 - 13 位参与者 阅读完整话题
站内有很多脚本清理401的,但每次都要找到文件然后打开终端运行脚本,感觉有点麻烦。可能适合服务器定时调用,但我是本地开发不太想在本机弄定时任务。就根据站内的方法改写了个油猴插件,安装之后在该页面会出现账号统计,以及清理工具。 一直在纠结是否要加禁用的功能,因为很多脚本都有禁用额度耗尽的,而且禁用了之后没有恢复开启,额度刷新也不会开启,手动开启也很慢。现在的号不如之前容易弄,能等到额度刷新也不想把号废了,而且现在古法插件注册的号存活率还蛮高的。 关于账号耗尽账号是否要禁用可以查看该issue,cpa内置已经考虑了额度耗尽调过移除队列和恢复之后重回队列的逻辑。因此禁用额度耗尽的账号属于负优化,所以我增加了一个一键启用的功能,帮大家把被禁用的账号全部启用。 github.com/router-for-me/CLIProxyAPI codex认证文件,在额度用完是否需要关闭? 已打开 01:36AM - 08 Apr 26 UTC 已关闭 05:41PM - 12 Apr 26 UTC aicloud-cpu 开源作者们,你们好! codex认证文件,在额度用完是否需要关闭? 如果不关闭,轮询会不会跳过这个额度已经用完的认证文件? 如果关闭了,系统自动刷新toke … n的时候会不会跳过不刷新? 脚本内容太长没办法直接贴进来,大家自行下载吧。 clear_401.user.js.7z (16.6 KB) 2 个帖子 - 2 位参与者 阅读完整话题
render部署的cpa遇到Access blocked by Cloudflare. This usually happens when connecting from a restricted region (status 403 Forbidden), u rl: https://www.xxxx.top/v1/responses , cf-ray: 9ee0d216d8856e64-HKG 现在在本机使用codex会报错,尝试过切换网络、切换节点依然报错,直接访问网页是正常的。然而换了机器后是可以正常连接的。怀疑是被render的cf通过tls指纹给ban了。有佬友遇到过知道怎么解决吗? 1 个帖子 - 1 位参与者 阅读完整话题
买的谷歌号 想拿来放cpa里反代点claude-opus-4-6用 结果弹了这个验证 各位佬友有遇到过的吗 接完码会不会以后再弹二次手机号验证 9 个帖子 - 8 位参与者 阅读完整话题
如题,楼主古法自动注册了若干个codex账号,导入CPA, 发现只能导入45个 ,超过这个数量的账号都没法导入成功了,没找到哪里有配置在限制。 各位佬友有遇到过这种情况吗? 5 个帖子 - 4 位参与者 阅读完整话题
cpa里导入json一刷新就是 Token refresh attempt 2 failed: token refresh failed with status 403: {“error”:{“code”:“unsupported_country_region_territory”,“message”:“Country, region, or territory not supported”,“param”:null,“type”:“request_forbidden”}} 求教佬友们怎么解决 1 个帖子 - 1 位参与者 阅读完整话题
最新版本cpa,号池刷新还有额度,但是显示429 3 个帖子 - 3 位参与者 阅读完整话题
试了一下any善人的4.7,提示要开1M上下文 7 个帖子 - 5 位参与者 阅读完整话题
在印尼实体服务器部署中转供内部5人使用,购买的是max20账号。 4月13号认证pro账号,不够用,4月14号中午升级为max20,分发了账号,大家在国内自己的电脑接入使用,晚上7点被退款; 4月15号开第二个账号购买max20,使用国内同一个服务器、同一个账号,用了不到30分钟封号了。 求大佬指点长久一点的使用方法。 3 个帖子 - 2 位参与者 阅读完整话题