GitHub Copilot CLI のエラー

Error: Classic Personal Access Tokens (ghp_) are not supported by Copilot.

結論

`ghp_` で始まる旧来のトークンは受け付けられない。値が正しくても、種類が理由で拒否される。

確認した版 GitHub Copilot CLI v1.0.80
確認日 2026年8月22日
最終更新 2026年8月22日
根拠 実機で確認

エラー文字列

GitHub Copilot CLI
Error: Classic Personal Access Tokens (ghp_) are not supported by Copilot.

⚠️ 標準エラーに出て、終了コードは 1 です。

Error: Classic Personal Access Tokens (ghp_) are not supported by Copilot.

The GITHUB_TOKEN environment variable contains a classic PAT.
Please use a Fine-Grained Personal Access Token or another authentication method.

To fix this, you can:
  • Replace the token in GITHUB_TOKEN with a fine-grained PAT
  • Unset GITHUB_TOKEN and run 'gh auth login' to authenticate
  • Unset GITHUB_TOKEN and start 'copilot', then use the '/login' command

何が起きているか

トークンのではなく種類が理由で拒否されています。

GitHub の個人アクセストークンには2種類あります。Copilot CLI が受け付けるのは後者だけです。

種類 接頭辞 Copilot CLI
クラシック ghp_ 🔴 受け付けない
ファイングレインド github_pat_ ⭐ 使える
gh auth login の資格情報 gho_ / ghu_ ⭐ 使える

⚠️ そのトークンが有効かどうかは関係ありません。 権限を足しても、作り直しても、ghp_ である限り同じメッセージが出ます。

なぜ気づきにくいか

  • 他のツールでは動く。 ghgit push も GitHub API もクラシックトークンを受け付けます。「このトークンで他は全部動いているのに」となりがちです
  • メッセージが出るまで、どの変数が読まれたか分からない。 上の例では GITHUB_TOKEN ですが、実際に読まれた変数名がそのまま入ります
  • CI の共通設定に古い ghp_ が置きっぱなしのことがあります

どの変数が原因かは、メッセージが名指ししてくれます。 3つとも消す必要はありません。

直し方

1. どの変数に入っているか確認する

⚠️ 値そのものを画面に出さないこと。 接頭辞だけで種類は判別できます。

Windows(PowerShell)

foreach ($n in 'COPILOT_GITHUB_TOKEN','GH_TOKEN','GITHUB_TOKEN') {
  $v = [Environment]::GetEnvironmentVariable($n)
  if ($v) { "{0,-22} {1}..." -f $n, $v.Substring(0, [Math]::Min(4, $v.Length)) }
  else    { "{0,-22} なし" -f $n }
}

macOS / Linux

for n in COPILOT_GITHUB_TOKEN GH_TOKEN GITHUB_TOKEN; do
  v=$(printenv "$n")
  printf '%-22s %s\n' "$n" "${v:+${v:0:4}...}${v:-なし}"
done

ghp_ で始まっていたら、それが原因です。

2A. ファイングレインドのトークンに置き換える

GitHub の Settings → Developer settings → Personal access tokens → Fine-grained tokens で新しく作ります。

⚠️ クラシックの権限をそのまま移せません。 ファイングレインドはリポジトリと権限を個別に選ぶ方式です。対象リポジトリと、必要な権限を明示的に指定してください。

export GITHUB_TOKEN=github_pat_xxxxxxxx
$env:GITHUB_TOKEN = "github_pat_xxxxxxxx"

2B. トークンをやめて gh の認証を使う(手元の端末ならこちらが簡単)

環境変数を消してからログインします。

unset GITHUB_TOKEN
gh auth login
Remove-Item Env:GITHUB_TOKEN -ErrorAction SilentlyContinue
gh auth login

⚠️ 環境変数が残っていると gh でログインし直しても効きません。 環境変数のほうが優先されます。

2C. 対話セッションからログインする

unset GITHUB_TOKEN
copilot

起動したら次を打ちます。

/login

3. 恒久的に消す

シェルの設定ファイルやユーザー環境変数に書いてあると、新しい端末を開くたびに復活します。

[Environment]::SetEnvironmentVariable("GITHUB_TOKEN", $null, "User")

macOS / Linux~/.bashrc / ~/.zshrc / ~/.profile の該当行を消してください。

grep -n 'GITHUB_TOKEN\|GH_TOKEN\|COPILOT_GITHUB_TOKEN' ~/.bashrc ~/.zshrc ~/.profile 2>/dev/null

4. CI の場合

ワークフローに直接書かれているか、リポジトリまたは組織のシークレットに入っています。

GitHub Actions が自動で渡す GITHUB_TOKENghp_ ではありません。 自動のものをそのまま使っているなら、このエラーは出ません。自分で上書きしている箇所を探してください。

似ているが別のエラー

メッセージ 違い
Error: Authentication token found but could not be validated. 種類は正しいが、値が無効詳細
Error: No authentication information found. トークンも gh の資格情報もどこにも無い

再発防止

  • 🔴 ghp_ は Copilot CLI では使えない。 権限を足しても直らない
  • トークンは環境変数と gh の両方に散らばりやすい。片方に決める
  • CI では、自動で渡される GITHUB_TOKENわざわざ上書きしていないかを確認する

この手順で直りませんでしたか?

環境を添えて報告いただければ、追加の原因を検証してこのページに反映します。

エラーを報告する