GitHub Copilot CLI で "Session token expired" が出たときの対処法
製造ビジネステクノロジー部の小林です。
先日、GitHub Copilot CLI を使っていると、こんなエラーに遭遇しました。
`Session token expired and the request could not be retried. Please resend your message.`

このエラーが出た後は何を入力しても受け付けられない状態になります。
当初は /clear でセッションをリセットして対応していましたが、これだと会話履歴が消えてしまい、次のセッションでコンテキストを一から説明し直す必要があって不便でした。
改めてエラーの原因を調べたところ、対処法はシンプルでした。
原因は 2 つ
調査したところ、以下のいずれかが原因と考えられます。
| 原因 | 説明 |
|---|---|
| 認証トークンの失効 | GitHub の OAuth トークンなどの有効期限が切れた |
| セッション状態の不整合 | CLI 内部のセッション状態にズレが生じた?(接続一時断、再接続時など) |
公式ドキュメントにはトークンの有効期限に関する詳細な記載はありません。ただし、GitHub の公式リポジトリの Issue #2818 で、報告者が「セッショントークンは約 1 時間で切れる」と報告しています。
なお、この Issue は v1.0.35-3 で一度 Closed されています。同バージョンからトークン失効時に自動リフレッシュ&リトライが行われるようになり、通常はメッセージを再送しなくてもよくなったとのことです。
ただし、リフレッシュ自体が失敗した場合はまだエラーが表示される可能性があるとのことで、筆者の環境ではこのケースが発生していると考えられます。
2 つのコマンドで解決
コマンド一覧
| コマンド | 役割 | 実行方法 |
|---|---|---|
/restart |
現在のセッションを保持して CLI を再起動 | チャットに /restart と入力 |
/login |
認証トークンを再取得 | チャットに /login と入力 |
対処フロー
まず /restart を試し、それでも解決しない場合は /login を実行します。
/restart とは
セッション履歴を維持したまま、CLI プロセスの内部状態だけをリセットします。アプリを再起動するような感覚で使えます。
/keep-alive ではダメ?
「/keep-alive で解決できるのでは?」と思いましたが、これは別の目的のコマンドでした。
コマンド一覧
| コマンド | 役割 |
|---|---|
/restart |
現在のセッションを保持して、CLI を再起動 |
/login |
認証トークンを再取得 |
/keep-alive on |
PC のスリープによる処理中断を防止(トークン失効とは無関係) |
/clear |
セッション履歴をリセット(エラー対策ではなく、別用途) |
/keep-alive はあくまで PC のスリープによる処理中断を防ぐ機能であり、トークン失効には対応していません。
おまけ 400 Invalid input... エラーについて
同じ時期に 400 Invalid input... というエラーも発生しました。

Session token expired と同様に /restart → /login の順で試したのですが解消せず、最終的に /clear でセッションごとリセットして対応しました。
こちらのエラーについては原因の特定まではできていません。解決方法や詳しい原因をご存知の方がいれば、ぜひこちらから教えていただけると嬉しいです!
追記
こちらの400 Invalid input...エラーについても /restart コマンドを実行することで解消できました。原因は引き続き調査してみます!
まとめ
| 状況 | 対処方法 |
|---|---|
Session token expired が出た |
/restart → 解消しなければ /login |
400 Invalid input... が出た |
/clear でセッションをリセット(履歴は削除される) |





