Skip to content

ChatGPT Mac App 無限「Reconnecting, waiting for network」——一場三層嵌套的偵錯紀實 ​

ChatGPT Mac App 連線診斷架構圖:SSH 遠端重試、網路排查與 ~/.codex/config.toml 路由綁架三層分析

作者手記:某天下午,我的 ChatGPT 桌面 App 突然壞了。畫面卡在「正在重新連線 5/5 → Reconnecting... waiting for network」無限循環,訊息發出去永遠回不來。這篇文章記錄了我從「以為是網路問題」到挖出真兇的完整過程。如果你也遇到一樣的症狀,可以直接跳到最後的檢查清單。


症狀 ​

  • ChatGPT Mac 桌面 App 一直顯示「Reconnecting... waiting for network」
  • 輸入任何訊息都卡在「正在思考」,永遠沒有回覆
  • 重開 App、重開機都沒用
  • 但是:同一個帳號用瀏覽器開 chatgpt.com 完全正常

看到第四點就該警覺——這通常不是網路問題,是 App 本身的問題。


第一層:遠端連線的無限重試迴圈 ​

重開 App 沒用之後,我開始看 App 的 log。ChatGPT 桌面版(Codex 架構的新版)會把 log 寫在:

~/Library/Logs/com.openai.codex/YYYY/MM/DD/*.log

一翻 log,畫面立刻不同了。裡面不是網路錯誤,而是:

[AppServerConnection] app_server_connection.reconnect_started
  hostId=remote-ssh-codex-managed:macmini reconnectAttempt=61
  errorMessage="user@100.x.y.z: Permission denied (publickey,password,keyboard-interactive)"

真相一:App 一直在嘗試 SSH 連到我的 Mac mini(當遠端主機用),而 SSH 認證失敗。App 每 20 秒重試一次,永遠失敗,永遠重試。介面上那些「Reconnecting」訊息,其實是遠端主機連不上的無限重試,跟網路一點關係都沒有。

修法:

  1. App 內「設定 → 連線 → SSH」把 macmini 的開關關掉,切回本機
  2. 修復遠端本身:在 ~/.ssh/config 補上 Mac mini 的 Host 區塊,並把公鑰裝過去
bash
# ~/.ssh/config 補上這段
Host macmini aioss-mac-mini 100.x.y.z
    HostName 100.x.y.z
    User <username>
    IdentityFile ~/.ssh/id_ed25519_codex_macmini
    IdentitiesOnly yes

# 再把公鑰裝到 Mac mini(會問一次密碼)
ssh-copy-id -i ~/.ssh/id_ed25519_codex_macmini.pub user@100.x.y.z

關掉遠端開關、App 重啟後,log 裡的重試迴圈停了。但畫面還在 Reconnecting。


第二層:網路是清白的 ​

接下來我把「網路壞了」這個假設徹底查了一遍,結論全部正常:

檢查結果
curl chatgpt.com / openai.com✅ 可達(403 是 Cloudflare 擋 curl,不是斷線)
api.openai.com✅ 可達
系統 Proxy✅ 無
macOS 防火牆✅ 關閉
DNS(Tailscale MagicDNS)✅ 解析正常
OpenAI 狀態頁✅ All Systems Operational
App 的 TCP 連線✅ 對 chatgpt.com 有多條 ESTABLISHED

網路層是清白的。但 App 的模型請求一直「Timed out waiting for structured result」——請求送出去,回應永遠不來。

這階段的錯誤動作(我也踩了):重開 App、重置 App 資料(備份 ~/Library/Application Support/Codex 後刪掉重來)、登出重登。都沒用。因為根因不在 App 資料夾裡。


第三層:真兇——被綁架的路由 ​

最後一個線索來自 App 內建 CLI 的健康檢查:

bash
"/Applications/ChatGPT.app/Contents/Resources/codex" doctor

輸出:

✗ reachability  one or more required provider endpoints are unreachable over HTTP
    openai API inference URL = http://127.0.0.1:17841/v1/...  connect failed (required)
⚠ websocket     Responses WebSocket failed
    endpoint = ws://127.0.0.1:17841/v1/...

App 的模型請求全部被導向 127.0.0.1:17841——一個本機埠,而且上面沒有任何程式在聽。

沿著這個位址找,在 ~/.codex/config.toml 裡看到:

toml
# Managed by codex-chatgpt-web: Responses use the local bridge; Voice stays on ChatGPT.
openai_base_url = "http://127.0.0.1:17841/v1"

真相三:我之前裝過一個叫「Codex Web GPT」的第三方工具,它會在 Codex 的設定檔裡把模型路由改成「本機橋接服務」。

ChatGPT 桌面 App 跟 Codex CLI 共用同一個設定檔(~/.codex/config.toml),所以 App 的每一次模型請求都往 17841 送。橋接程式沒開 → Connection refused → App 顯示「Reconnecting」。

這完美解釋了所有現象:

  • 為什麼瀏覽器版正常?(瀏覽器不走這個設定檔)
  • 為什麼重置 App 資料沒用?(設定在 ~/.codex,不在 App 資料夾)
  • 為什麼重登也沒用?(登入沒問題,路線錯了)

修法:註解掉那兩行(先備份),重啟 App:

toml
# openai_base_url = "http://127.0.0.1:17841/v1"

重啟後再跑一次 codex doctor:

✓ websocket    connected (HTTP 101 Switching Protocols)
✓ reachability active provider endpoints are reachable over HTTP
    reachability mode  ChatGPT auth

App 恢復正常。


心法:這類問題的偵錯順序 ​

以後遇到「某某 App 一直 Reconnecting/連不上」,照這個順序查,可以少走很多彎路:

  1. 先二分法:同一個服務,瀏覽器版正常嗎?

    • 正常 → 問題在 App,不在網路,別浪費時間查網路
    • 不正常 → 才開始查網路(DNS → IPv4/IPv6 → proxy → 防火牆)
  2. 看 log,不要猜:

    • ChatGPT 桌面版:~/Library/Logs/com.openai.codex/YYYY/MM/DD/*.log
    • App 內建 CLI 健康檢查:codex doctor(很多 App 有類似 doctor/diagnose 指令)
  3. 注意共用設定檔:ChatGPT App 與 Codex CLI 共用 ~/.codex/config.toml。任何第三方 wrapper(Codex Web GPT、Codex++、CC Switch 等)都可能改寫 openai_base_url,而且它們互相搶路由。這類工具「一次只能有一個」在管路由。

  4. 改任何設定前先備份。所有操作都要可逆。

  5. 「Reconnecting, waiting for network」是結果,不是原因。它只代表「App 連不上它想連的東西」,那個東西可能是遠端主機、本機橋接服務,或真的網路——得靠 log 才知道是哪個。


附錄:本次用到的關鍵指令 ​

bash
# App log 位置
ls -t ~/Library/Logs/com.openai.codex/$(date +%Y/%m/%d)/*.log | head -1

# 看重試迴圈
grep -E "reconnect_started|transport_connect_failed" <log檔案> | tail

# App 內建引擎健檢
"/Applications/ChatGPT.app/Contents/Resources/codex" doctor

# 看某個埠有沒有人在聽
lsof -nP -iTCP:17841

# 看模型路由被改成什麼
grep -n "openai_base_url" ~/.codex/config.toml

# App 強制重啟
pkill -9 -f "/Applications/ChatGPT.app" && open -a ChatGPT

環境備註:本文環境為 macOS 27、ChatGPT 桌面版 26.901.51231(Codex 架構)、Tailscale 網路。版本不同時 log 路徑與選單名稱可能略有差異,但診斷思路不變。