Error: Authentication token found but could not be validated.
トークンはあるが GitHub に拒否された状態。回線の問題だと促されるが、実際は値が無効なことが多い。
エラー文字列
Error: Authentication token found but could not be validated.
⚠️ 標準エラーに出て、終了コードは 1 です。
Error: Authentication token found but could not be validated.
Failed to fetch PAT user login (401): GitHub returned: Bad credentials
Failed to fetch GitHub CLI user login (401): GitHub returned: Bad credentials
Your token may still be valid. Check your network connection and try again.
何が起きているか
トークンは見つかっています。それを GitHub に送ったところ、拒否されました。
🔴 最後の1行に引きずられないこと
Your token may still be valid. Check your network connection and try again. (トークンはまだ有効かもしれません。ネットワーク接続を確認してもう一度お試しください)
⚠️ 401 Bad credentials が返っている時点で、通信は成功しています。 届いた先で「その資格情報は無効だ」と言われた状態です。回線を疑っても直りません。
v1.0.80 で実測しました。無効なトークンを環境変数に入れると、必ずこの文面(ネットワークを疑う案内を含む)が出ます。
⭐ (401) と Bad credentials が出ていたら、原因はトークンの値です。
🔴 Request ID が付いているなら別のエラー
認証エラーには2種類あり、弾かれた場所が違います。
| 出るもの | どこで弾かれたか | 疑うもの |
|---|---|---|
| このページ | GitHub のユーザー照会(401 Bad credentials) |
トークンの値 |
Error: Authentication failed (Request ID: ...) |
Copilot のサービス | トークンの権限(詳細) |
⚠️ Copilot Requests の権限が無いだけの場合は、このページではなく後者が出ます。
どのトークンが使われるか
上から順に見ます。
| 優先順 | 環境変数 |
|---|---|
| 1 | COPILOT_GITHUB_TOKEN |
| 2 | GH_TOKEN |
| 3 | GITHUB_TOKEN |
| 4 | gh auth login で保存された資格情報 |
⚠️ 上のものが優先されます。 古い GITHUB_TOKEN が残っていると、gh でログインし直しても、そちらが使われ続けます。
直し方
1. どのトークンが設定されているか確認する
⚠️ 値そのものを画面に出さないこと。 長さと有無だけで足ります。
Windows(PowerShell)
foreach ($n in 'COPILOT_GITHUB_TOKEN','GH_TOKEN','GITHUB_TOKEN') {
$v = [Environment]::GetEnvironmentVariable($n)
"{0,-22} {1}" -f $n, $(if ($v) { "設定あり({0}文字)" -f $v.Length } else { "なし" })
}
macOS / Linux
for n in COPILOT_GITHUB_TOKEN GH_TOKEN GITHUB_TOKEN; do
v=$(printenv "$n")
printf '%-22s %s\n' "$n" "${v:+設定あり(${#v}文字)}${v:-なし}"
done
2. 古い環境変数を外す
環境変数が残っていると、ログインし直しても効きません。
macOS / Linux
unset COPILOT_GITHUB_TOKEN GH_TOKEN GITHUB_TOKEN
Windows(PowerShell)
Remove-Item Env:COPILOT_GITHUB_TOKEN, Env:GH_TOKEN, Env:GITHUB_TOKEN -ErrorAction SilentlyContinue
⚠️ シェルの設定ファイルやユーザー環境変数に書いてある場合は、そちらも消してください。新しい端末を開くと復活します。
3. ログインし直す
gh auth login
対話セッションの中からでも実行できます。
copilot
/login
4. トークンの「種類」も確かめる
⚠️ ghp_ で始まるクラシックトークンは、値が有効でも受け付けられません。 その場合はこのメッセージではなく Classic Personal Access Tokens (ghp_) are not supported by Copilot. が出ます。
5. CI では有効期限を疑う
CI に置いたトークンは、期限切れや権限変更で無効になっていることがあります。値が入っているかではなく、いま有効かを確認してください。
再発防止
- 🔴
401 Bad credentialsが出たら回線ではなくトークンを見る。 案内文に引きずられない - トークンは環境変数と
ghの両方に散らばりやすい。片方に決める - CI では期限のあるトークンを使い、失効時に気づける形にしておく