
WindowsでGitHub Copilot CLIが無言終了する原因と対策:getCACertificates('system')エラーを最短で切り分ける
Windows 11で「copilot」と打った瞬間に、何も表示されずにコマンドが終了してしまう——ログもエラーも出ないため、原因が見えず時間だけが溶けがちです。結論から言うと、特定の環境ではNode.jsのTLS周りで「システム証明書の読み込み」に失敗し、その例外が表に出ずにCLIが落ちるケースがあります。本記事では、症状の正体、再現・切り分け手順、そして現実的な回避策と恒久対応の方向性をまとめます。
起きている症状:copilotが“静かに死ぬ”
代表的な症状は次のとおりです。
-
Windows 11で
copilotを実行すると、即終了して何も出力されない -
エラーメッセージが出ないため、問題の箇所が特定しづらい
-
しかし、同じ実体スクリプトを
nodeで直接実行すると例外が見えることがある
この「無言終了」が厄介なのは、CLI側が失敗を適切に表示していないためで、ユーザーからすると“動かない”以上の情報が得られません。
根本原因の中身:TLSのシステム証明書取得で例外が発生
直接スクリプトを実行すると、エラーが露出する場合があります。典型例は以下の流れです。
-
Node.jsのTLS実装がWindowsの「システム証明書」を取得しようとする
-
取得したX.509証明書をPEMへ変換する過程で失敗
-
Error: X509 to PEM conversionが発生 -
その結果、CLIが初期化段階で落ちる(または例外が握りつぶされて無言終了)
この問題は、getCACertificates('system') の呼び出し周辺で起きることがあり、特定バージョンのNode.js(例:v24系)とWindows環境の組み合わせで表面化しやすい、という構図です。
まずやるべき切り分け:原因がTLS/証明書かを一発で確認
無言終了を「見える化」するのが最優先です。ポイントは、CLIラッパー経由ではなく、実体を node で起動して例外を出すこと。
-
copilotが参照しているインストール先を確認(npmのグローバル配下) -
実体の
index.jsをnodeで直接実行 -
例外が出れば、TLS/証明書系で落ちている可能性が高い
あわせて、環境情報を確認します。
-
node -v(Node.jsのバージョン) -
npm -v -
where copilot(どの実行ファイルが呼ばれているか)
ここでNode.jsが v24系など新しめの場合、原因の当たりを付けやすくなります。
すぐ効く回避策:Node.jsをLTSへ戻すのが最短ルート
現場で一番成功率が高いのは、Node.jsをLTS(安定版)へ切り替えることです。CLIツールは最新偶数/奇数系の挙動差で壊れることがあり、TLS/証明書の取り回しは特に影響を受けやすい領域です。
-
Node.js v24系で発生しているなら、まずは v22 LTS または v20 LTS に切り替える
-
切り替え後に
copilotを再実行し、無言終了が解消するか確認
Nodeのバージョン切り替えは、Windowsならバージョンマネージャ(例:nvm-windows系)を使うと「検証→戻す」が速くなります。
証明書まわりの代替策:環境変数で“別のCA経路”を与える
LTSへ戻せない事情がある場合は、「システム証明書を読めないなら、別のCAを使わせる」方向で回避できることがあります。代表的には次の考え方です。
-
企業プロキシ/SSLインスペクション環境では、独自CAが絡みやすい
-
OS証明書ストアが壊れている/特殊な証明書が混在していると変換で落ちることがある
-
NODE_EXTRA_CA_CERTSなどでCAを明示して回避できる可能性がある
ただし、これは環境依存が強く、万能ではありません。まずは「Node LTSへ切り替え」を第一候補に置き、次善策として検討するのが安全です。
やってはいけない対処:検証を飛ばした“安全性の無効化”
「とにかく動かす」ために、TLS検証を無効化する系の設定(例:証明書検証を止める環境変数)を適用すると、表面上は動くかもしれません。しかしこれは通信の安全性を落とし、脆弱な状態を作る可能性があります。特に認証情報やトークンを扱うCLIでは避けるべきです。
恒久対応の方向性:CLI側は“落ちるなら落ちるで表示”が必要
今回の厄介さは、原因そのもの以上に「無言終了」にあります。CLIとして望ましいのは次のいずれかです。
-
正常に動作する
-
失敗するなら、例外内容をユーザーに表示する(少なくとも初期化時のtry/catchでstderrへ出す)
利用者目線では、たとえ解決できなくても「どこで何が起きたか」が見えれば、対処に必要な時間が激減します。今回のようなTLS/証明書の不具合は環境差が大きいため、エラーハンドリングの改善が再発防止に直結します。
まとめ:最短で直す手順はこれ
最後に、時間を最小化するための実行順をまとめます。
-
node -vを確認し、Nodeが新しめ(v24系など)なら疑う -
nodeでCLI実体を直接起動して、TLS/証明書系の例外が出るか確認 -
まずは Node.jsをLTS(v22/v20)へ切り替える
-
それでもだめなら、CA経路(
NODE_EXTRA_CA_CERTS等)を検討 -
安全性を落とす回避策は最終手段にし、常用しない
無言終了は“壊れている”のではなく、“壊れ方が見えない”のが本質です。見える化して、まずNodeの安定版へ寄せる——これが最短距離になります。
(関連語句:GitHub、GitHub Copilot CLI、Node.js、npm、Windows 11)