Claude Code 在終端機一直連線逾時,未必是程式或帳號出了問題;常見原因是終端機沒有使用 Clash 代理、代理連接埠填錯,或流量被分流規則送到直連。本文依序檢查 Clash 代理是否可用、為 Claude Code 設定代理環境變數、確認分流策略命中情形,並用實際請求區分網路問題與登入、權限問題。不同作業系統與終端機的設定方式略有差異,請先確認 Clash 用戶端目前使用的混合代理連接埠,再套用對應指令。
先確認 Clash 代理連接埠正常
Claude Code 在終端機執行時,不一定會自動沿用瀏覽器或作業系統的系統代理。即使瀏覽器可以連上網站,也不能直接推斷命令列程式已經走代理。Clash Verge、Clash Verge Rev 或使用 Mihomo 核心的用戶端,通常會提供「混合代理」連接埠,常見預設值是 7890,但設定可能已被使用者或設定檔修改,應以用戶端顯示的實際值為準。
先打開 Clash 用戶端,確認核心已啟動,至少有一個可用節點,並在設定或一般頁面找到 Mixed Port、混合端口或 HTTP 代理連接埠。若用戶端只顯示 HTTP 與 SOCKS 兩個連接埠,也可以使用 HTTP 代理連接埠設定 HTTP_PROXY 和 HTTPS_PROXY。常見對應如下:
| Clash 設定項目 | 常見值 | 用途 |
|---|---|---|
| Mixed Port | 7890 | 同一連接埠接受 HTTP 及 SOCKS 代理請求,適合多數命令列程式 |
| HTTP Port | 7890 或 7891 | 供 HTTP 代理環境變數使用,實際值依用戶端設定為準 |
| SOCKS Port | 7891 或 7890 | 供 SOCKS 用戶端使用;除非工具明確支援,否則不要把 SOCKS 位址填入 HTTP 變數 |
在同一台電腦上執行 Claude Code,代理主機通常填 127.0.0.1。若 Clash 只監聽區域網路位址,或 Claude Code 執行在容器、虛擬機器或 WSL 中,127.0.0.1 可能指向另一個網路環境,而不是執行 Clash 的主機。這種情況要確認代理監聽位址、防火牆及虛擬網路轉送方式,不要單純反覆更換節點。
為 Claude Code 設定終端機代理
Claude Code 通常會讀取終端機程序繼承到的代理環境變數。設定時應同時指定 HTTP 與 HTTPS 代理,因為請求網址雖然是 HTTPS,建立連線時仍會透過 HTTP CONNECT 方式使用 HTTP 代理。以下範例假設 Clash 的 HTTP 或混合代理連接埠是 7890;若你的用戶端顯示不同數字,請替換連接埠。
macOS 與 Linux
在 Bash、Zsh 等常見 Shell 中,可先於目前終端機工作階段設定變數,再從同一個終端機啟動 Claude Code。這種方式只影響目前 Shell 及其子程序,關閉視窗後通常就會失效,適合先測試設定是否正確。
export HTTP_PROXY=http://127.0.0.1:7890 export HTTPS_PROXY=http://127.0.0.1:7890 export http_proxy="$HTTP_PROXY" export https_proxy="$HTTPS_PROXY" claude
部分程式只讀取小寫變數,部分程式只讀取大寫變數,因此同時設定大小寫可以減少相容性問題。若希望每次開啟終端機都套用,可將這幾行放進實際使用的 Shell 啟動檔,例如 ~/.zshrc 或 ~/.bashrc,再重新開啟終端機或載入設定檔。不要把這類設定誤放到其他 Shell 的設定檔,否則新終端機可能仍然沒有代理變數。
如果只想讓單次命令走代理,也可以在命令前指定變數。這種寫法不會永久修改 Shell 設定;但環境變數仍會傳給該命令啟動的子程序,所以不要在共用電腦或不可信任的腳本中輸出完整環境內容。
HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 claude
Windows PowerShell
Windows PowerShell 可用 $env: 設定目前工作階段的環境變數。請在執行 Claude Code 的同一個 PowerShell 視窗中設定並啟動程式。若透過另一個終端機、IDE 工作區或工作排程器啟動 Claude Code,那個程序未必會繼承此視窗中的設定,需要在實際啟動程式的環境中重新設定。
$env:HTTP_PROXY = "http://127.0.0.1:7890" $env:HTTPS_PROXY = "http://127.0.0.1:7890" $env:http_proxy = $env:HTTP_PROXY $env:https_proxy = $env:HTTPS_PROXY claude
使用 Windows 命令提示字元時,可在目前視窗以 set 設定變數,再呼叫 claude。PowerShell 的 $env: 語法不可直接貼到命令提示字元;反過來,命令提示字元的 set 寫法也不是 PowerShell 的環境變數指令。
set HTTP_PROXY=http://127.0.0.1:7890 set HTTPS_PROXY=http://127.0.0.1:7890 claude
如果使用 NO_PROXY,請只把確定需要直連的主機加入其中;若其中包含 Claude Code 連線所需的網域,請求就可能繞過 Clash。排查期間可以先檢查是否存在會影響代理的 NO_PROXY 設定,再按實際需求調整。不要為了讓程式「看起來有代理」而同時混用多個未知代理工具,否則代理鏈路、憑證與路由結果會更難判斷。
檢查 Clash 分流規則與策略
終端機環境變數只負責把請求送到 Clash,最後是否使用代理節點,仍由 Clash 的路由規則決定。若規則將相關連線匹配為 DIRECT,即使終端機已經正確連上 Clash,也可能因目前網路環境無法直連而逾時。反之,若整個終端機流量都被設為代理,可能影響套件管理器、內網服務或本地開發工具。較穩妥的做法是先在 Clash 的連線記錄中查看目標網域、命中規則及策略組,再依結果修改。
Claude Code 的請求可能涉及 Anthropic 的 API 服務,也可能因登入流程、帳戶頁面或產品調整而連到其他相關網域。不要只根據一次錯誤訊息猜測全部請求目的地;應以 Clash 連線頁面中實際出現的主機名稱為準。若採用規則模式,可將確認需要代理的網域規則放在較寬泛的直連規則之前,並把策略組名稱替換成自己設定檔中的實際名稱。
rules: - DOMAIN-SUFFIX,anthropic.com,PROXY - DOMAIN-SUFFIX,claude.ai,PROXY - MATCH,DIRECT
上述範例中的 PROXY 必須是設定檔內已存在的代理策略組名稱;若你的策略組叫「🚀 節點選擇」或使用其他名稱,就要原樣填入,否則設定可能無法載入。規則採由上而下比對,因此特定網域規則必須排在會先匹配它的廣泛規則之前。也要留意設定檔可能由訂閱或覆寫腳本管理,直接修改後若更新訂閱就被還原,應改用用戶端支援的覆寫或自訂規則功能。
不熟悉 YAML 的使用者可以先不要直接編輯設定檔。於 Clash Verge 或 Clash Verge Rev 中查看目前模式、策略組及連線記錄,手動選擇可用節點後再重試,能快速確認是否為分流或節點問題。若只有特定網域需要代理,應避免長期使用全域模式;若暫時切換全域模式進行診斷,完成後記得還原,並確認不是把內網或其他不需要代理的流量一併導向遠端節點。
驗證連線並定位錯誤
設定完成後,建議先驗證終端機能否透過指定代理建立 HTTPS 連線,再啟動 Claude Code。這能把「Shell 沒讀到變數」與「Claude Code 登入或服務端回應問題」拆開處理。macOS 與 Linux 可用 curl,Windows PowerShell 建議明確執行 curl.exe,避免部分環境把 curl 對應成 PowerShell 命令別名。
curl -x http://127.0.0.1:7890 -sS -o /dev/null -w "HTTP %{http_code}\n" https://api.anthropic.com
Windows PowerShell 可將測試命令中的 curl 改為 curl.exe。收到 HTTP 狀態碼不代表登入完成或 API 呼叫已獲授權,但表示 DNS、TCP、TLS 與 HTTP 請求至少已走到遠端服務回應階段;若命令直接顯示連線逾時、無法連上代理或名稱解析失敗,則應回到 Clash 連接埠、節點與規則檢查。測試時若伺服器回傳 401、403 或其他錯誤,也不能單憑狀態碼判定代理失效,還要看請求是否出現在 Clash 連線記錄,以及錯誤是否來自認證、帳戶權限或服務政策。
| 觀察到的現象 | 較可能的原因 | 建議檢查 |
|---|---|---|
| 立即顯示無法連到代理 | Clash 未啟動,或代理連接埠填錯 | 確認核心狀態、Mixed Port 與監聽位址 |
| 請求逾時,Clash 沒有連線記錄 | Claude Code 未繼承環境變數,或程式位於不同網路環境 | 在同一終端機檢查變數,確認 WSL、容器或 IDE 的網路位置 |
| Clash 有連線但顯示直連 | 規則命中直連策略,或相關網域沒有自訂代理規則 | 查看命中規則與策略組,調整規則順序 |
| 連線走代理但仍逾時 | 目前節點不可用、出口網路不通或遠端服務無回應 | 更換節點測試,檢查測速結果與服務狀態 |
| 已收到 HTTP 回應但 Claude Code 仍報錯 | 登入、帳戶權限、API 設定或程式版本問題 | 檢查 Claude Code 的錯誤細節與官方帳戶設定 |
完成網路測試後,請在設定好代理變數的同一個終端機啟動 Claude Code,重新執行登入或原本失敗的操作。若透過 VS Code 等整合式終端機使用,請確認它是在設定變數之後啟動;已開啟的應用程式不一定會取得後來新增的系統環境變數,必要時完全關閉並重新開啟。若終端機測試成功但 Claude Code 仍失敗,記錄錯誤時間、狀態碼與 Clash 命中策略即可,不要公開貼出存取權杖、Cookie、私有訂閱連結或完整環境變數。
整體排查順序可以記成:先確認 Clash 核心與本機代理連接埠,再在啟動 Claude Code 的終端機設定代理變數,接著依連線記錄確認實際命中的規則與策略,最後才檢查登入和帳戶回應。這種分層檢查能避免把所有逾時都歸咎於節點,也能快速找出究竟是代理未生效、流量走錯路,還是請求已抵達服務但遭遇其他限制。