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 Port7890同一連接埠接受 HTTP 及 SOCKS 代理請求,適合多數命令列程式
HTTP Port7890 或 7891供 HTTP 代理環境變數使用,實際值依用戶端設定為準
SOCKS Port7891 或 7890供 SOCKS 用戶端使用;除非工具明確支援,否則不要把 SOCKS 位址填入 HTTP 變數

在同一台電腦上執行 Claude Code,代理主機通常填 127.0.0.1。若 Clash 只監聽區域網路位址,或 Claude Code 執行在容器、虛擬機器或 WSL 中,127.0.0.1 可能指向另一個網路環境,而不是執行 Clash 的主機。這種情況要確認代理監聽位址、防火牆及虛擬網路轉送方式,不要單純反覆更換節點。

先測本機代理:開啟 Clash 的連線或流量頁面,再從終端機發出一個測試請求。如果 Clash 面板完全沒有相應連線,問題多半在環境變數、連接埠或終端機的網路命名空間;如果看得到連線但請求失敗,才進一步檢查節點、規則與遠端服務回應。

為 Claude Code 設定終端機代理

Claude Code 通常會讀取終端機程序繼承到的代理環境變數。設定時應同時指定 HTTP 與 HTTPS 代理,因為請求網址雖然是 HTTPS,建立連線時仍會透過 HTTP CONNECT 方式使用 HTTP 代理。以下範例假設 Clash 的 HTTP 或混合代理連接埠是 7890;若你的用戶端顯示不同數字,請替換連接埠。

macOS 與 Linux

在 Bash、Zsh 等常見 Shell 中,可先於目前終端機工作階段設定變數,再從同一個終端機啟動 Claude Code。這種方式只影響目前 Shell 及其子程序,關閉視窗後通常就會失效,適合先測試設定是否正確。

macOS、Linux 暫時設定
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 設定;但環境變數仍會傳給該命令啟動的子程序,所以不要在共用電腦或不可信任的腳本中輸出完整環境內容。

macOS、Linux 單次啟動
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,那個程序未必會繼承此視窗中的設定,需要在實際啟動程式的環境中重新設定。

PowerShell 暫時設定
$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 的環境變數指令。

Windows 命令提示字元
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 中查看目前模式、策略組及連線記錄,手動選擇可用節點後再重試,能快速確認是否為分流或節點問題。若只有特定網域需要代理,應避免長期使用全域模式;若暫時切換全域模式進行診斷,完成後記得還原,並確認不是把內網或其他不需要代理的流量一併導向遠端節點。

不要盲目停用憑證驗證:連線逾時通常應先檢查代理位址、連接埠、節點與規則,不應以關閉 TLS 憑證檢查作為常規解法。若網路環境存在 HTTPS 檢查或自訂憑證,請依組織的正式文件處理,切勿把帳號憑證或 API 金鑰貼到公開日誌。

驗證連線並定位錯誤

設定完成後,建議先驗證終端機能否透過指定代理建立 HTTPS 連線,再啟動 Claude Code。這能把「Shell 沒讀到變數」與「Claude Code 登入或服務端回應問題」拆開處理。macOS 與 Linux 可用 curl,Windows PowerShell 建議明確執行 curl.exe,避免部分環境把 curl 對應成 PowerShell 命令別名。

透過 Clash 測試 HTTPS 連線
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 的終端機設定代理變數,接著依連線記錄確認實際命中的規則與策略,最後才檢查登入和帳戶回應。這種分層檢查能避免把所有逾時都歸咎於節點,也能快速找出究竟是代理未生效、流量走錯路,還是請求已抵達服務但遭遇其他限制。