開発環境では「ブラウザーは接続できるのに、コードは失敗する」という錯覚が起こりがちです。主な原因はプロキシの適用範囲が異なることです。ブラウザー拡張はブラウザーのリクエストだけを管理し、システムプロキシがコンテナに引き継がれないこともあります。IDEプラグインが独自のネットワークスタックを使う場合もあります。正しく確認するには、Webページが開けるかを起点にするのではなく、リクエストを発生させたプロセスから外側へ追跡します。
コマンドラインとローカルランタイム
まずターミナルプロセスが環境変数を読み取っているか確認し、次に使用しているSDKがシステムプロキシに従うかを調べます。ランタイムによっては接続プール、証明書、ドメイン解決を独自に処理するため、環境変数が存在しても想定した回線を通っているとは限りません。テストには実際の認証情報を含まない最小リクエストを使い、エラーの種類から問題が解決、ハンドシェイク、認証、レスポンス読み取りのどの段階で起きているかを判断します。
HTTPS_PROXY=http://localhost:PORT
AI_API_KEY=YOUR_API_KEY
run-your-command
IDEプラグインとエディター内ターミナル
エディターのメインプロセス、プラグインホスト、内蔵ターミナルは異なる環境を持つことがあります。プロキシを変更した後は、関連プロセスを再起動してプラグインログを改めて確認します。コード補完は使えるのにチャットが使えない場合は、機能ごとにアクセスするAPIが異なる可能性があります。すべてのリクエストが失敗する場合は、まずエディターレベルのプロキシ、証明書、ネットワーク権限を確認します。
CIと自動化タスク
CIランナーは通常、開発用PCのネットワーク環境を引き継ぎません。ランナー側で外向きの経路を明示的に設定し、キーはプロジェクトが提供するシークレット変数機能に保存します。ログに完全なリクエストヘッダー、契約情報、アクセス認証情報を出力しないでください。タスクに再試行機能がある場合は、ネットワーク障害とプラットフォームが返す業務エラーを分けて扱い、無効なリクエストを繰り返し送らないようにします。