OpenAI Codex CLIをClashで使う設定方法と接続トラブル対策
Codex CLIをターミナルで快適に使うには、認証やAPI通信を安定させる設定が重要です。Clashを使った基本設定と、よくある接続エラーの確認方法を紹介します。
Codex CLIとClashを組み合わせる前に知っておきたいこと
OpenAI Codex CLIは、ターミナルからコードの読解、修正、テスト実行、リポジトリ内の調査などを行うための開発者向けツールです。ブラウザだけで利用するサービスとは異なり、CLIは端末上の認証処理、APIまたは関連サービスへのHTTPS通信、Gitやパッケージマネージャーの通信を個別に発生させます。そのため、ブラウザでウェブページを開ける状態でも、Codex CLIだけがログインに失敗したり、リクエストの途中でタイムアウトしたりすることがあります。
Clashを組み合わせる場合の基本方針は、端末全体を無条件にグローバルプロキシへ切り替えることではありません。Codex CLIの認証とAPI通信に必要なドメインだけをプロキシグループへ送り、国内のパッケージレジストリや社内ネットワーク、ローカルホストは直接接続に残す構成のほうが、速度と再現性を保ちやすくなります。特に開発環境では、Git、npm、pip、Docker、SSHなどが同時に動くため、すべてを同じ出口へ送ると別の問題を作る可能性があります。
なお、Clashは認証情報を発行するツールではありません。OpenAIアカウントのログイン状態やAPIキー、利用権限、組織設定は別途正しく準備する必要があります。Clashはあくまで通信経路を制御する役割を担い、認証エラーをネットワーク設定だけで解決することはできません。
最初に切り分けるべき3つの層
トラブルが起きたら、①Clashノードへ接続できるか、②認証用ドメインへHTTPS接続できるか、③Codex CLIのアカウントまたはAPI権限が有効か、の順に確認します。この順番を飛ばして設定ファイルを何度も変更すると、原因が分かりにくくなります。
事前準備:クライアント、カーネル、環境変数を確認する
デスクトップでClash Verge、Clash Verge Rev、Clash for Windows、ClashXなどを使う場合は、まずクライアントのバージョン情報を開き、実際に動作しているカーネルを確認します。TUN、fake-ip、rulesの拡張構文を利用するなら、mihomoまたはClash Meta系カーネルを採用したクライアントが扱いやすいです。画面上で「Clash」と表示されていても、内部のカーネルによって利用できる設定項目が異なるため、名称だけで判断しないでください。
- ノードを確認する。ClashのProxies画面で、利用するノードを選択し、テスト機能で遅延と接続状態を確認します。ノード名が表示されていても、実際のHTTPS接続が成功するとは限りません。
- 混合ポートを確認する。代表的なローカルポートは
7890ですが、クライアントによって異なります。SettingsやGeneralに表示されているHTTPまたはMixed Portを実際に確認してください。 - APIキーを環境変数へ保存する。APIキーをコマンドラインの引数、設定ファイル、シェル履歴に直接書かないでください。認証方式がブラウザログインの場合も、ブラウザとCLIの通信経路が一致しているかを確認します。
- 既存のプロキシを整理する。VPN、別のローカルプロキシ、開発用のHTTP_PROXY設定が同時に有効だと、通信が二重化されます。検証中はClash以外の経路を一度停止します。
環境変数を使う方式では、Codex CLIを起動するシェルにプロキシを明示します。Windows PowerShellの例は次の通りです。値は実際の環境に合わせて置き換え、キーはサンプルのまま使用しないでください。
$env:HTTPS_PROXY="http://127.0.0.1:7890"
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:ALL_PROXY="socks5://127.0.0.1:7891"
$env:NO_PROXY="localhost,127.0.0.1,::1"
codex
macOSやLinuxでは、ターミナルで次のように設定できます。HTTPプロキシしか用意していない場合は、HTTPS_PROXYとHTTP_PROXYの両方を同じMixed Portへ向けます。SOCKSポートが実際に有効か分からない場合、まずMixed Portだけを使うほうが確認しやすいでしょう。
export HTTPS_PROXY="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="socks5://127.0.0.1:7891"
export NO_PROXY="localhost,127.0.0.1,::1"
codex
Clashの基本設定:Codex関連通信を専用グループへ振り分ける
Codex CLIだけを安定したノードへ送るには、専用のプロキシグループを作り、認証やAPI通信に関係するドメインを明示的に割り当てます。実際のエンドポイントはCLIのバージョン、ログイン方式、提供される機能によって変わる可能性があるため、下記は構成の考え方を示す例です。利用していないサービスのドメインを無制限に追加するのではなく、Clashのログで実際に発生した接続先を確認してから増やしてください。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
proxy-groups:
- name: CODEX
type: select
proxies:
- "安定ノード"
- DIRECT
rules:
- DOMAIN-SUFFIX,openai.com,CODEX
- DOMAIN-SUFFIX,auth.openai.com,CODEX
- DOMAIN-SUFFIX,api.openai.com,CODEX
- DOMAIN,localhost,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,DIRECT
この例では、OpenAI関連のドメインを CODEX グループへ送ります。DOMAIN-SUFFIX,openai.com はサブドメインを広く対象にするため分かりやすい一方、必要以上の通信までプロキシへ送ることがあります。より厳密にしたい場合は、Clashの接続ログに表示された認証・API・更新用のドメインを個別の DOMAIN ルールへ置き換えます。
ルールは上から下へ評価され、最初に一致した行で処理が終了します。LAN用のアドレス帯やlocalhostを先にDIRECTへ送るのは、開発サーバー、Docker、社内APIへのアクセスを誤って外部ノードへ送らないためです。最後の MATCH,DIRECT は、未確認の通信までプロキシに送らない保守的な例です。海外のパッケージレジストリなどもCLIから利用する場合は、必要なドメインだけ別途ルールを追加してください。
認証用ドメインを推測だけで固定しない
ログイン画面が表示されても、認証完了時に別のホストへリダイレクトされることがあります。ClashのLogsで接続先、ポート、処理結果を確認し、必要なホストがDIRECTへ落ちていないか、または別のルールに先取りされていないかを見直してください。
実践手順:Clashを経由してCodex CLIを起動する
ここでは、既にCodex CLIがインストールされ、Clashに有効なサブスクリプションとノードが登録されている前提で確認します。OSやCLIのリリースによってログインコマンドの表示は異なるため、画面に提示された現在のコマンドを優先してください。
- Clashを起動し、Profilesで使用する設定を選択します。Proxies画面で
CODEXグループを開き、接続テストで正常なノードを選びます。 - SettingsまたはGeneralでHTTP/Mixed Portを確認します。例として
127.0.0.1:7890を使いますが、実際のポートが7890でない場合は読み替えてください。 - ターミナルから
curl -I -x http://127.0.0.1:7890 https://api.openai.comを実行し、Clashのログに接続が現れることを確認します。HTTPステータスが401や404でも、TLS接続自体が成立していれば経路確認としては役立ちます。 - HTTPS_PROXY、HTTP_PROXY、必要ならALL_PROXYを設定し、NO_PROXYにはlocalhostと127.0.0.1を指定します。既存の環境変数があれば、古いポート番号が残っていないか確認します。
- Codex CLIのログインまたは認証操作を実行します。ブラウザが開く方式では、認証ページを開いた時刻にClashのログを確認し、関連する接続がCODEXグループへ入っているかを見ます。
- 認証後、短い読み取り専用の依頼を実行します。いきなり大規模な編集やテスト実行を行わず、応答、遅延、ログの3点を確認します。
- 動作が安定したら、プロジェクト単位のシェル設定やターミナルプロファイルへ必要な環境変数だけを移します。共有端末ではAPIキーを平文で保存しないでください。
テスト中にClashのConnections画面を開いておくと、CLIがどのドメインへ接続しているかを把握できます。接続が一瞬で消える場合は名前解決またはTLS開始前の問題、接続が長時間残る場合はノードの遅延、サーバー応答、タイムアウト設定を疑います。CLIの表示だけで判断せず、Clashのログと端末側のエラー時刻を照合することが重要です。
接続エラーの原因と確認方法
Codex CLIのエラー文は、認証、ネットワーク、サーバー側の制限を完全には区別しないことがあります。次の表を使って、エラーが発生する位置を切り分けてください。
| 症状 | 確認する場所 | 対処 |
|---|---|---|
| 接続拒否、connection refused | 環境変数のポート、ClashのMixed Port、Clashの起動状態 | 127.0.0.1のポート番号を一致させ、古いプロキシ設定を削除する |
| 名前解決失敗、DNS error | ClashのDNS設定、TUN、ログの域名解決結果 | DNSをClashへ集約し、fake-ip利用時は除外設定との競合を確認する |
| タイムアウト、EOF | ノード遅延、接続ログ、プロキシグループの選択 | 別ノードへ切り替え、TUNとシステムプロキシの二重化を解消する |
| 401、403、invalid API key | APIキー、アカウント、利用権限、組織設定 | キーを再発行または再設定し、Clashのルール変更だけで解決しようとしない |
| 429、rate limit | 利用量、リクエスト頻度、アカウントの制限 | リクエストを減らし、利用枠と課金状態を確認する |
| 認証後にCLIへ戻れない | ブラウザのリダイレクト、localhost、ファイアウォール | localhostをDIRECTにし、ローカルコールバック用ポートを他アプリと競合させない |
環境変数とシステムプロキシの優先関係
ブラウザが使えるのにCLIが使えない場合、最初に確認したいのは環境変数です。Clashのシステムプロキシをオンにしていても、CLIがその設定を自動利用するとは限りません。逆に、HTTPS_PROXYが設定されていると、システムプロキシをオフにしてもCLIだけがClashへ接続し続けることがあります。PowerShellでは Get-ChildItem Env: | Select-String PROXY、macOSやLinuxでは env | grep -i proxy を実行して、設定値を一覧表示できます。
不要な設定を一時的に解除する場合、PowerShellでは Remove-Item Env:HTTPS_PROXY、macOSやLinuxでは unset HTTPS_PROXY HTTP_PROXY ALL_PROXY を使います。大文字と小文字を別々に参照する実装もあるため、同名の小文字変数が残っていないかも確認してください。
DNS、TLS、TUNの確認
Clashのルールログにドメインが表示されない場合、CLIがプロキシ環境変数を読んでいないか、独自のネットワーク処理で直接接続している可能性があります。端末全体を確実に取り込みたい場合はmihomoのTUNモードを検討できます。TUNを有効にするときは管理者権限、仮想ネットワークアダプター、DNS hijack、IPv6の扱いを確認してください。システムプロキシとTUNを同時に使う構成では、同じ通信が二重に処理されることがあるため、まず片方だけで検証します。
TLS証明書エラーが出る場合は、端末の日時、Clashのシステムプロキシ、企業ネットワークのHTTPS検査、カスタムCA証明書の有無を確認します。証明書検証を無効化して回避する設定は安全性を下げるため、常用しないでください。正しい時刻へ戻し、必要な社内CAを適切なOSまたはCLIの信頼ストアへ登録する方法を優先します。
安全に運用するための設定とログ管理
Codex CLIはソースコード、環境変数、設定ファイル、テスト結果などを扱うため、通信が成功することだけでなく、何を送信するかも確認が必要です。プロジェクトに秘密鍵、アクセストークン、顧客データが含まれる場合は、CLIの利用ポリシーと対象ファイルを事前に確認してください。不要な秘密情報をワークスペースへ置かず、環境変数やOSの資格情報管理機能を利用します。
- APIキーをログに出さない。デバッグログやシェルの実行履歴にAuthorizationヘッダーが出ていないか確認します。キーをチャット、スクリーンショット、設定ファイルへ貼り付けないでください。
- Clashのログレベルを戻す。調査中だけdebugを使い、解決後はinfoまたはwarnへ戻します。長時間の詳細ログには接続先やエラー情報が残る場合があります。
- 開発用ポートを公開しない。
allow-lan: falseとloopbackバインドを基本にし、LAN内の他端末からClashのMixed Portや外部コントロールポートへ接続できる状態を避けます。 - プロジェクトごとに分離する。業務コードと個人の検証用ディレクトリを分け、不要なファイルを同じワークスペースへ置かないようにします。
Clashの接続ログで確認すべきなのは、接続先ドメイン、使用ルール、選択された策略グループ、接続の成否、発生時刻です。APIキーやCookieなどの秘密値をログへ書き出す必要はありません。障害を報告するときは、これらの秘密情報を伏せたうえで、CLIのバージョン、カーネル名、OS、ポート番号、再現手順を整理すると、原因を特定しやすくなります。
よくある質問
ClashのシステムプロキシをオンにするだけでCodex CLIは使えますか?
必ず使えるとは限りません。CLIがOSのプロキシ設定を参照する実装なら動作しますが、環境変数を優先する実装や、独自のネットワーク処理を行う場合は HTTPS_PROXY などを明示する必要があります。Clashのログに通信が現れるかを確認してください。
APIキー認証とブラウザログインでClash設定は変わりますか?
通信経路の基本は同じですが、ブラウザログインでは認証ページ、リダイレクト先、localhostのコールバックが追加されることがあります。認証関連の接続がプロキシへ入り、localhostだけがDIRECTになるようにログを確認します。APIキーを使う場合は、キーの有効性や利用権限も別途確認してください。
Codexだけをプロキシに送り、他の通信を直接接続できますか?
可能です。OpenAI関連のドメインを専用グループへ割り当て、LAN、localhost、社内ドメインを先にDIRECTへ置きます。ただし、実際に必要なドメインはバージョンや機能で変わるため、Clashのログで確認してルールを段階的に追加してください。
設定後もタイムアウトする場合、最初に何を試すべきですか?
まずノードを変更し、次に curl でClash経由のHTTPS接続を確認します。その後、環境変数のポート、DNS解決、TUNとシステムプロキシの二重化、端末時刻の順に確認してください。401や429ならネットワークではなく、認証情報または利用制限の問題である可能性が高いです。
Clashの導入と基本操作を確認する
まだクライアントを導入していない場合は、対応OSのダウンロードページでクライアントを選び、インストール後にプロファイル、ノード、プロキシモードの順で設定してください。Codex CLIの検証では、まず通常のHTTPS接続が安定している状態を作ることが重要です。
Clash クライアントをダウンロード
通信振り分けを行うには、まずクライアントが通信を引き継ぐ必要があります。ダウンロードセンターでお使いのプラットフォームのクライアントを選び、チュートリアルに戻ってシステムプロキシまたは TUN の引き継ぎを完了させてください。