
GitHub CLIのトークンが「期限付き」に——gh auth token を保存しているスクリプトを5分で洗い出す手順
10月21日にリリースされたGitHub CLI v2.103.0で、期限付きで自動更新されるOAuthトークンがパブリックプレビューになりました。漏れても数時間で使えなくなる、という守りの強い仕組みです。一方で、トークンを変数やファイルに保存して使い回している人は、有効にした途端にスクリプトが止まる可能性があります。
結論(3行)
・期限付きトークンは自分で有効にしない限り始まらない(オプトイン)。今すぐ全員が壊れるわけではない
・壊れるのは `gh auth token` の出力を保存して使い回すスクリプトや拡張。期限が切れたトークンを握り続ける
・やることは、保存している箇所を洗い出し、使う場面ごとに呼び直す形へ書き換えること。環境変数で渡すトークンは仕組みの対象外
何が起きたのか
・GitHub CLIが、短命のアクセストークンと、使うたびに入れ替わるリフレッシュトークンの組を扱えるようになりました
・トークンが漏れても、数時間で使えなくなります。再ログインは要らず、ghが裏で自動更新します
・有効にする方法は2つです。ログイン時に `gh auth login --expiring` を付けるか、`gh config set expiring_credentials enabled` で今後のログインすべてに適用します
・v2.103.0以上が必要です。github.com、ghe.com、GitHub Enterprise Server 3.23以上で使えます
・プレビュー提供で、標準の動作はまだ変わりません
よくある質問
Q. アップデートしただけでトークンが期限付きになる?
A. なりません。オプトインで、上の2つのどちらかを行ったときだけです。
Q. 期限付きにすると何が嬉しい?
A. トークンが漏れたときの被害が小さくなります。長期トークンはユーザーが失効させるまで使われ続けますが、短命のトークンは数時間で無効になります。AIエージェントやCIにGitHubへの権限を渡す機会が増えた今、守りを足す意味は大きいです。
Q. 自分のスクリプトは壊れる?
A. `gh auth token` の出力を保存して使い回していれば、壊れる可能性があります。保存しておらず、毎回ghを呼ぶだけなら影響は小さいはずです。
Q. 環境変数 GH_TOKEN で渡しているけど?
A. その場合は更新の仕組みを通りません。期限付きの恩恵も、期限切れの問題も、基本的には別の話になります。
Q. 結局、何をすればいい?
A. 有料部分に、洗い出しの手順と、書き換えの考え方、有効にする順番をまとめました。