徹底解決 Codex 重連 5 次的問題(僅限 macOS)

作者:土著哥聊AI
日期:2026年6月7日 上午6:30
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

修復 Codex Desktop 重連問題:設定代理環境變量即可

整理版摘要

呢篇文章係作者分享自己同社羣遇到嘅 Codex Desktop 新版重連問題。佢發現每次對話都會不停重連,雖然最終出到結果,但慢到嘔血。作者原本想用 Claude Code 徹底分析,但最後偷懶,直接引用咗前端哥 Liam 喺 X 上公開嘅解決方案。

問題根源係新版 Codex 默認用 WebSocket 協議連線,但呢個桌面 app 唔似瀏覽器咁會自動食系統代理。佢開機嗰陣要睇環境變數先識行代理,如果 HTTP_PROXY 呢類變數無設,佢就以為可以直連,結果搞到 WebSocket 握手超時,不斷重連。成個結論好簡單:只要喺 ~/.codex/.env 嗰度手動寫入代理配置,就可以一勞永逸解決。

  • 新版 Codex Desktop 重連係因為默認用 WebSocket 協議,但唔識自動跟系統代理,搞到握手超時。
  • 解決方法係喺 ~/.codex/.env 手動寫入 HTTP_PROXY 同 HTTPS_PROXY,端口要同系統代理一致。
  • 你可以直接用一條 prompt 叫 Codex 自己分析代理端口並修改檔案,唔使自己揾。
  • 作者提供咗一個 macOS 一鍵腳本,會自動檢測系統代理並更新 .env 檔案,零手動。
  • Windows 用戶可以照用嗰條 prompt,但要自己確認代理端口,或者用其他 Agent 幫手。
值得記低
Prompt

畀 Codex 自己修復重連問題嘅 prompt

幫我修復 Codex Desktop 一直 Reconnecting 的問題。請定位我本機正在使用的代理端口和代理協議,然後創建或更新 ~/.codex/.env,寫入以下代理配置。不要寫死端口,請替換成實際端口;如果文件已經存在,保留其他配置。 HTTP_PROXY=" 或 mixed 端口>" HTTPS_PROXY=" 或 mixed 端口>" 寫入後檢查配置是否正確,並告訴我需要如何重啓 Codex Desktop。

Skill

macOS 一鍵檢測系統代理並寫入 ~/.codex/.env 嘅 bash 腳本

#!/bin/bash # 檢測 macOS 系統代理並更新 ~/.codex/.env ENV_DIR="$HOME/.codex" ENV_FILE="$ENV_DIR/.env" # 讀取系統代理配置 proxy_info=$(scutil --proxy) http_enabled=$(echo "$proxy_info" | awk '/HTTPEnable/{print $3}') http_host=$(echo "$proxy_info" | awk '/HTTPProxy/{print $3}') http_port=$(echo "$proxy_info" | awk '/HTTPPort/{print $3}') https_enabled=$(echo "$proxy_info" | awk '/HTTPSEnable/{print $3}') https_host=$(echo "$proxy_info" | awk '/HTTPSProxy/{print $3}') https_port=$(echo "$proxy_info" | awk '/HTTPSPort/{print $3}') # 構建代理 URL http_proxy="" https_proxy="" if [[ "$http_enabled" == "1" && -n "$http_host" && -n "$http_port" ]]; then http_proxy=" fi if [[ "$https_enabled" == "1" && -n "$https_host" && -n "$https_port" ]]; then https_proxy=" fi # 如果 HTTP 代理和 HTTPS 代理都沒有 if [[ -z "$http_proxy" && -z "$https_proxy" ]]; then echo "❌ 未檢測到系統代理,當前無代理設置。" exit 0 fi # HTTPS 未單獨設置時,複用 HTTP 代理 if [[ -n "$http_proxy" && -z "$https_proxy" ]]; then https_proxy="$http_proxy" fi echo "✅ 檢測到系統代理:" [[ -n "$http_proxy" ]] && echo " HTTP_PROXY=$http_proxy" [[ -n "$https_proxy" ]] && echo " HTTPS_PROXY=$https_proxy" # 確保目錄存在 mkdir -p "$ENV_DIR" # 如果 .env 文件不存在,直接創建 if [[ ! -f "$ENV_FILE" ]]; then { [[ -n "$http_proxy" ]] && echo "HTTP_PROXY=$http_proxy" [[ -n "$https_proxy" ]] && echo "HTTPS_PROXY=$https_proxy" } > "$ENV_FILE" echo "📄 已創建 $ENV_FILE 並寫入代理配置。" exit 0 fi # 文件已存在,更新或追加 update_or_append() { local key="$1" value="$2" if grep -q "^${key}=" "$ENV_FILE"; then sed -i '' "s|^${key}=.*|${key}=${value}|" "$ENV_FILE" echo "🔄 已更新 ${key}" else echo "${key}=${value}" >> "$ENV_FILE" echo "➕ 已追加 ${key}" fi } [[ -n "$http_proxy" ]] && update_or_append "HTTP_PROXY" "$http_proxy" [[ -n "$https_proxy" ]] && update_or_append "HTTPS_PROXY" "$https_proxy" echo "✅ $ENV_FILE 已更新完成。"

整理重點

問題起因:新版 Codex 默認行 WebSocket,唔識食系統代理

升級新版 Codex Desktop 之後,好多人都遇到「重連 5 次」嘅情況。唔係偶然,係次次對話都咁樣。最慘係仲出到結果,但慢到嘔血,浪費時間。作者原本想用 Claude Code 拆解,但最後偷懶,直接引用咗前端哥 Liam 喺 X 上公開嘅分析。

問題根源係新版 Codex 默認用 WebSocket 協議

日誌直接顯示 WebSocket 握手超時。點解會咁?因為 Codex Desktop 係桌面 App,唔似瀏覽器會自動食系統代理。佢開機嗰陣要睇環境變數 HTTP_PROXY、HTTPS_PROXY 先識行代理;如果無設,佢就以為直連得,結果等半天無反應,進入重連循環。

整理重點

手動方案:編輯 ~/.codex/.env 寫入代理端口

首先,喺 Terminal 輸入 scutil --proxy 睇下系統代理設定。例如見到 http 同 https 嘅端口都係 6152。

然後手動創建或編輯 ~/.codex/.env

寫入嘅內容 plaintext
HTTP_PROXY=http://127.0.0.1:6152
HTTPS_PROXY=http://127.0.0.1:6152

編輯完保存,退出 Codex Desktop 再開過,問題就搞掂。呢個方法最直接,適合唔想用腳本嘅人。

整理重點

懶人方案:用 Prompt 叫 Codex 自己搞掂

如果唔想手動揾端口,可以直接將下面條 prompt 貼畀 Codex,叫佢自行分析代理設定並修改 ~/.codex/.env。

畀 Codex 嘅 prompt plaintext
幫我修復 Codex Desktop 一直 Reconnecting 的問題。請定位我本機正在使用的代理端口和代理協議,然後創建或更新 ~/.codex/.env,寫入以下代理配置。不要寫死端口,請替換成實際端口;如果文件已經存在,保留其他配置。

HTTP_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"
HTTPS_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"

寫入後檢查配置是否正確,並告訴我需要如何重啓 Codex Desktop。

注意 prompt 入面嘅端口係佔位符,Codex 會自動偵測實際端口

呢個方案適合唔想鬱手睇系統設定嘅人,畀 Codex 自己搞,你會發現佢好聰明。

整理重點

一鍵腳本:macOS 自動檢測代理並寫入

前端哥 Liam 仲寫咗個 bash 腳本,一鍵搞掂。佢會用 scutil 讀取系統代理,自動填入 HTTP_PROXY 同 HTTPS_PROXY,如果 .env 存在就更新,唔存在就創建。

macOS 一鍵腳本 bash
#!/bin/bash
# 檢測 macOS 系統代理並更新 ~/.codex/.env
ENV_DIR="$HOME/.codex"
ENV_FILE="$ENV_DIR/.env"

# 讀取系統代理配置
proxy_info=$(scutil --proxy)
http_enabled=$(echo "$proxy_info" | awk '/HTTPEnable/{print $3}')
http_host=$(echo "$proxy_info" | awk '/HTTPProxy/{print $3}')
http_port=$(echo "$proxy_info" | awk '/HTTPPort/{print $3}')
https_enabled=$(echo "$proxy_info" | awk '/HTTPSEnable/{print $3}')
https_host=$(echo "$proxy_info" | awk '/HTTPSProxy/{print $3}')
https_port=$(echo "$proxy_info" | awk '/HTTPSPort/{print $3}')

# 構建代理 URL
http_proxy=""
https_proxy=""
if [[ "$http_enabled" == "1" && -n "$http_host" && -n "$http_port" ]]; then
 http_proxy="http://${http_host}:${http_port}"
fi
if [[ "$https_enabled" == "1" && -n "$https_host" && -n "$https_port" ]]; then
 https_proxy="http://${https_host}:${https_port}"
fi

# 如果 HTTP 代理和 HTTPS 代理都沒有
if [[ -z "$http_proxy" && -z "$https_proxy" ]]; then
 echo "❌ 未檢測到系統代理,當前無代理設置。"
 exit 0
fi

# HTTPS 未單獨設置時,複用 HTTP 代理
if [[ -n "$http_proxy" && -z "$https_proxy" ]]; then
 https_proxy="$http_proxy"
fi

echo "✅ 檢測到系統代理:"
[[ -n "$http_proxy" ]] && echo " HTTP_PROXY=$http_proxy"
[[ -n "$https_proxy" ]] && echo " HTTPS_PROXY=$https_proxy"

# 確保目錄存在
mkdir -p "$ENV_DIR"

# 如果 .env 文件不存在,直接創建
if [[ ! -f "$ENV_FILE" ]]; then
 {
 [[ -n "$http_proxy" ]] && echo "HTTP_PROXY=$http_proxy"
 [[ -n "$https_proxy" ]] && echo "HTTPS_PROXY=$https_proxy"
 } > "$ENV_FILE"
 echo "📄 已創建 $ENV_FILE 並寫入代理配置。"
 exit 0
fi

# 文件已存在,更新或追加
update_or_append() {
 local key="$1" value="$2"
 if grep -q "^${key}=" "$ENV_FILE"; then
 sed -i '' "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
 echo "🔄 已更新 ${key}"
 else
 echo "${key}=${value}" >> "$ENV_FILE"
 echo "➕ 已追加 ${key}"
 fi
}

[[ -n "$http_proxy" ]] && update_or_append "HTTP_PROXY" "$http_proxy"
[[ -n "$https_proxy" ]] && update_or_append "HTTPS_PROXY" "$https_proxy"

echo "✅ $ENV_FILE 已更新完成。"

腳本識得自動判斷 HTTPS 代理如果無單獨設定就用 HTTP 嗰個

整理重點

Windows 用戶可以照用 prompt,但要自己揾端口

如果你係 Windows 下用 Codex 都遇到呢個問題,可以用上面條 prompt,但最好先自己查清楚代理端口,再貼畀 Claude Code 或者其它 Agent 幫你執行。千祈唔好傻傻就咁貼,一定要改端口。

Windows 用戶要自己確認 HTTP_PROXY 同 HTTPS_PROXY 嘅端口

作者特別提醒:喺黐貼之前自己查嚇 Windows 嘅代理設定,再替換 prompt 入面嘅端口佔位符,咁就萬無一失。


最近,好多朋友應該都遇到 Codex 重連 5 次嘅問題,我羣組嘅朋友都遇到咗。

圖片

之後我升級完 Codex Desktop 新版本之後都遇到,而且唔係偶然事件,係每次對話都係呢種重連嘅狀態。

如果 Codex 直接唔用得就話好啫,問題係仲可以收到回覆結果,但係慢、麻煩、太浪費時間,呢個先係最令人氣憤嘅地方。

其實本來想用 Claude Code 嚟徹底分析同修復,我覺得問題肯定都唔會特別大,但琴晚返嚟實在太夜,懶咗。

不過我幫你哋破案喇,邊個話 X 上面冇技術高手㗎,以下係前端哥Liam(@jinglian)提供嘅解決方案,不過淨係適用於 macOS 系統

升級到新版本 Codex 之後出現呢個重連 5 次嘅問題係因為默認連接方式被改咗做 WebSocket 協議,日誌入面直接體現嘅係 WebSocket 握手超時

點解會咁呢?

係因為 Codex Desktop 係一個桌面應用程式,佢唔似瀏覽器咁會自動食系統代理。佢啟動嘅時候,需要顯式讀環境變量入面嘅 HTTP_PROXY、HTTPS_PROXY 呢啲,先會行代理。

如果呢啲變量冇設定,佢就以為自己可以直達,結果就係等好耐冇反應,焗住進入重連循環嘅狀態。


以 macOS 做例子

喺終端機入面輸入下面嘅指令睇代理資訊

scutil --proxy
圖片

上面呢張圖顯示嘅 http、https 代理端口都係 6152,可以手動創建,或者編輯現有嘅 ~/.codex/.env,寫入代理變量。

HTTP_PROXY=http://127.0.0.1:6152
HTTPS_PROXY=http://127.0.0.1:6152

編輯完 ~/.codex/.env,儲存之後,退出 Codex Desktop 再重新打開,就可以解決呢個問題。

如果唔想手動整,都可以用下面嘅提示詞,Send俾 Codex,等佢自己分析同解決。

幫我修復 Codex Desktop 一直 Reconnecting 的問題。

請定位我本機正在使用的代理端口和代理協議,然後創建或更新 ~/.codex/.env,寫入以下代理配置。不要寫死端口,請替換成實際端口;如果文件已經存在,保留其他配置。

HTTP_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"
HTTPS_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"

寫入後檢查配置是否正確,並告訴我需要如何重啓 Codex Desktop。

當然,你都可以試下前端哥Liam提供嘅一鍵自動化腳本(淨係適用於 macOS

#!/bin/bash
# 檢測 macOS 系統代理並更新 ~/.codex/.env

ENV_DIR="$HOME/.codex"
ENV_FILE="$ENV_DIR/.env"

# 讀取系統代理配置
proxy_info=$(scutil --proxy)

http_enabled=$(echo "$proxy_info" | awk '/HTTPEnable/{print $3}')
http_host=$(echo "$proxy_info" | awk '/HTTPProxy/{print $3}')
http_port=$(echo "$proxy_info" | awk '/HTTPPort/{print $3}')

https_enabled=$(echo "$proxy_info" | awk '/HTTPSEnable/{print $3}')
https_host=$(echo "$proxy_info" | awk '/HTTPSProxy/{print $3}')
https_port=$(echo "$proxy_info" | awk '/HTTPSPort/{print $3}')

# 構建代理 URL
http_proxy=""
https_proxy=""

if [[ "$http_enabled" == "1" && -n "$http_host" && -n "$http_port" ]]; then
    http_proxy="http://${http_host}:${http_port}"
fi
if [[ "$https_enabled" == "1" && -n "$https_host" && -n "$https_port" ]]; then
    https_proxy="http://${https_host}:${https_port}"
fi

# 如果 HTTP 代理和 HTTPS 代理都沒有
if [[ -z "$http_proxy" && -z "$https_proxy" ]]; then
    echo "❌ 未檢測到系統代理,當前無代理設置。"
    exit 0
fi

# HTTPS 未單獨設置時,複用 HTTP 代理
if [[ -n "$http_proxy" && -z "$https_proxy" ]]; then
    https_proxy="$http_proxy"
fi

echo "✅ 檢測到系統代理:"
[[ -n "$http_proxy" ]]  && echo "   HTTP_PROXY=$http_proxy"
[[ -n "$https_proxy" ]] && echo "   HTTPS_PROXY=$https_proxy"

# 確保目錄存在
mkdir -p "$ENV_DIR"

# 如果 .env 文件不存在,直接創建
if [[ ! -f "$ENV_FILE" ]]; then
    {
        [[ -n "$http_proxy" ]]  && echo "HTTP_PROXY=$http_proxy"
        [[ -n "$https_proxy" ]] && echo "HTTPS_PROXY=$https_proxy"
    } > "$ENV_FILE"
    echo "📄 已創建 $ENV_FILE 並寫入代理配置。"
    exit 0
fi

# 文件已存在,更新或追加
update_or_append() {
    local key="$1" value="$2"
    if grep -q "^${key}=" "$ENV_FILE"; then
        sed -i '' "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
        echo "🔄 已更新 ${key}"
    else
        echo "${key}=${value}" >> "$ENV_FILE"
        echo "➕ 已追加 ${key}"
    fi
}

[[ -n "$http_proxy" ]]  && update_or_append "HTTP_PROXY" "$http_proxy"
[[ -n "$https_proxy" ]] && update_or_append "HTTPS_PROXY" "$https_proxy"

echo "✅ $ENV_FILE 已更新完成。"

如果你係喺 Windows 度用 Codex 都遇到呢個問題:

建議你用你本地其他 Coding Agent,例如 Claude Code,將上面嗰段提示詞貼俾佢,等佢幫你分析修復(但係貼之前自己先查下並取代提示詞入面嘅代理資訊,唔好傻更更就咁貼咗~)

再次多謝前端哥Liam(@jinglian)為大家提供嘅解決方案。


既然睇到呢度,如果覺得唔錯,順手幫手按個「讚」、「在看」、「轉發」三連;如果想第一時間收到推送,都可以俾我加個星標★,非常感謝!



最近,很多朋友應該都遇到了 Codex 重連 5 次的問題,我羣裏的小夥伴也遇到了。

圖片

後來我在升級完 Codex Desktop 新版本後也遇到了,而且並非偶然事件,是每次對話都是這種重連的狀態。

要是 Codex 直接不能用了倒還好,問題是還能得到回覆結果,就是慢、費勁、太浪費時間了,這才是最讓人氣憤的點。

其實本來想用 Claude Code 來徹底分析並修復的,我覺得問題肯定也不會特別大,但昨天回來實在太晚了,犯懶了。

不過我幫你們破案了,誰說 X 上沒有技術高手的,以下是前端哥Liam(@jinglian)提供的解決方案,不過只適用於 macOS 系統

升級到新版本 Codex 後出現這個重連 5 次的問題是因為默認連接方式被改成了 WebSocket 協議,日誌中直接體現的就是 WebSocket 握手超時

為什麼會這樣呢?

是因為 Codex Desktop 是一個桌面應用,它不像瀏覽器那樣會自動吃系統代理。它啓動的時候,需要顯式讀取環境變量裏的 HTTP_PROXY、HTTPS_PROXY 這些,才會走代理。

如果這些變量沒設,它就以為自己能直達,結果就是等半天沒響應,只好進入重連循環的狀態。


以 macOS 為例

在終端裏輸入下面的命令查看代理信息

scutil --proxy
圖片

上面這張圖上顯示的 http、https 的代理端口都是 6152,可以手動創建,或者編輯已有的 ~/.codex/.env, 寫入代理變量。

HTTP_PROXY=http://127.0.0.1:6152
HTTPS_PROXY=http://127.0.0.1:6152

編輯完 ~/.codex/.env,保存之後,退出 Codex Desktop 後重新打開,即可解決這個問題。

如果不想手搓的話,也可以使用下面的提示詞,發送給 Codex,讓它來自行分析並解決。

幫我修復 Codex Desktop 一直 Reconnecting 的問題。

請定位我本機正在使用的代理端口和代理協議,然後創建或更新 ~/.codex/.env,寫入以下代理配置。不要寫死端口,請替換成實際端口;如果文件已經存在,保留其他配置。

HTTP_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"
HTTPS_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"

寫入後檢查配置是否正確,並告訴我需要如何重啓 Codex Desktop。

當然,你也可以試一下前端哥Liam提供的一鍵自動化腳本(只適用於 macOS

#!/bin/bash
# 檢測 macOS 系統代理並更新 ~/.codex/.env

ENV_DIR="$HOME/.codex"
ENV_FILE="$ENV_DIR/.env"

# 讀取系統代理配置
proxy_info=$(scutil --proxy)

http_enabled=$(echo "$proxy_info" | awk '/HTTPEnable/{print $3}')
http_host=$(echo "$proxy_info" | awk '/HTTPProxy/{print $3}')
http_port=$(echo "$proxy_info" | awk '/HTTPPort/{print $3}')

https_enabled=$(echo "$proxy_info" | awk '/HTTPSEnable/{print $3}')
https_host=$(echo "$proxy_info" | awk '/HTTPSProxy/{print $3}')
https_port=$(echo "$proxy_info" | awk '/HTTPSPort/{print $3}')

# 構建代理 URL
http_proxy=""
https_proxy=""

if [[ "$http_enabled" == "1" && -n "$http_host" && -n "$http_port" ]]; then
    http_proxy="http://${http_host}:${http_port}"
fi
if [[ "$https_enabled" == "1" && -n "$https_host" && -n "$https_port" ]]; then
    https_proxy="http://${https_host}:${https_port}"
fi

# 如果 HTTP 代理和 HTTPS 代理都沒有
if [[ -z "$http_proxy" && -z "$https_proxy" ]]; then
    echo "❌ 未檢測到系統代理,當前無代理設置。"
    exit 0
fi

# HTTPS 未單獨設置時,複用 HTTP 代理
if [[ -n "$http_proxy" && -z "$https_proxy" ]]; then
    https_proxy="$http_proxy"
fi

echo "✅ 檢測到系統代理:"
[[ -n "$http_proxy" ]]  && echo "   HTTP_PROXY=$http_proxy"
[[ -n "$https_proxy" ]] && echo "   HTTPS_PROXY=$https_proxy"

# 確保目錄存在
mkdir -p "$ENV_DIR"

# 如果 .env 文件不存在,直接創建
if [[ ! -f "$ENV_FILE" ]]; then
    {
        [[ -n "$http_proxy" ]]  && echo "HTTP_PROXY=$http_proxy"
        [[ -n "$https_proxy" ]] && echo "HTTPS_PROXY=$https_proxy"
    } > "$ENV_FILE"
    echo "📄 已創建 $ENV_FILE 並寫入代理配置。"
    exit 0
fi

# 文件已存在,更新或追加
update_or_append() {
    local key="$1" value="$2"
    if grep -q "^${key}=" "$ENV_FILE"; then
        sed -i '' "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
        echo "🔄 已更新 ${key}"
    else
        echo "${key}=${value}" >> "$ENV_FILE"
        echo "➕ 已追加 ${key}"
    fi
}

[[ -n "$http_proxy" ]]  && update_or_append "HTTP_PROXY" "$http_proxy"
[[ -n "$https_proxy" ]] && update_or_append "HTTPS_PROXY" "$https_proxy"

echo "✅ $ENV_FILE 已更新完成。"

如果你是在 Windows 下使用 Codex 也遇到這個問題:

建議你使用你本地其他 Coding Agent,比如 Claude Code,把上面那段提示詞粘貼給它,讓它幫你分析修復(但在粘貼之前自己先查一下並替換提示詞中的代理信息,別傻傻的就直接粘貼了~)

再次感謝前端哥Liam(@jinglian)為大家提供的解決方案。


既然看到這兒了,如果覺得還不錯,幫忙隨手點個「贊」、「在看」、「轉發」三連;如果想第一時間收到推送,也可給我加個星標★,非常感謝!