目次
開発端末でGitHub CLIへ一度ログインし、そのまま何年も使う。便利な一方で、長期間有効なOAuthトークンが端末、バックアップ、ログなどから漏れれば、手動で失効するまで利用される可能性があります。GitHubは2026年10月21日、GitHub CLI 2.103.0で、有効期限付きアクセス用トークンを自動更新する資格情報を公開プレビューとして追加しました。
本稿はGitHubの公式発表と公式ドキュメントを2026年10月22日に確認した最新機能の導入解説です。GitHub CLIに新たな脆弱性や侵害が見つかったという記事ではありません。また、本サイトでは実際の組織アカウントへ導入試験を行っていません。確認済みの仕様と、Web開発チーム向けの導入手順・評価項目を分けて説明します。
スポンサーリンク
2.103.0で変わったのは資格情報の寿命と更新方法
GitHubの発表によると、GitHub CLI 2.103.0以降では、ログイン時に--expiringを指定すると、有効期限のあるアクセス用トークンと、ローテーションする更新用トークンを保存します。アクセス用トークンが必要になった時点でGitHub CLIが更新を行うため、利用者は毎回ログインし直さずに済みます。アクセス用トークンは数時間以内に使えなくなると説明されています。
重要なのは、2026年10月22日時点では公開プレビューかつ任意参加であることです。既存のログイン状態、手動で渡したトークン、従来の操作は自動では切り替わりません。GitHubは将来、新規ログインの既定にする計画を示していますが、その日付は発表していません。
GitHub Changelog|GitHub CLIの有効期限付き・自動更新OAuthトークン
| 確認項目 | 従来のログイン | 有効期限付き資格情報 |
|---|---|---|
| アクセス用トークン | 既定では長期間有効 | 数時間以内に期限切れ |
| 継続利用 | 同じトークンを利用 | GitHub CLIが必要時に更新 |
| 導入状態 | 既存利用者は変更なし | 公開プレビューで明示的に選択 |
| 漏えい時の考え方 | 手動失効まで利用され得る | アクセス用トークンの有効期間を短くできるが、更新用トークンの保護は残る |
最初に対話操作と自動処理を分ける
この機能を「GitHubで使うトークンをすべて短命化する設定」と捉えると、移行範囲を誤ります。対象はGitHub CLIが対話ログインで管理する資格情報です。GitHub Actionsから渡すGITHUB_TOKEN、環境変数GH_TOKEN、独自に発行したPersonal Access Token、GitHub Appの資格情報は、それぞれ別の寿命と更新方法を持ちます。
本サイトでは、導入前に利用場所を「開発者の端末」「共有の作業端末」「CIやバッチ」「GitHub CLI拡張」「Git操作」の五つへ分けることを提案します。誰が、どのホストへ、どの方法で認証し、トークンを別の処理へ受け渡しているかを一覧にします。gh auth tokenの出力をファイルや別ツールへ保存している処理は、優先的な確認対象です。
スポンサーリンク
開発端末では明示的に試し状態を確認する
一回のログインで試す場合は、GitHub CLIを2.103.0以降へ更新してから、次のコマンドを使います。すべての新規ログインで有効期限付き資格情報を優先したい場合は、設定コマンドを利用できます。
gh --version
gh auth login --expiring
# 今後のログインで有効期限付き資格情報を優先
gh config set expiring_credentials enabled
# 現在の認証状態と期限を確認
gh auth status
--expiringは短命な資格情報の発行をサーバーへ要求します。サーバーが未対応なら、GitHub CLIは通常の有効期限なしトークンへフォールバックし、案内を表示します。したがって、コマンドが成功したことだけで短命化を確認せず、gh auth statusの表示で、更新可能な資格情報か、現在のアクセス用トークンがいつ失効するかを確認します。
公式ドキュメントでは、GitHub.comとGitHub Enterprise Cloudで利用でき、GitHub Enterprise Serverは3.23から発行に対応すると説明されています。それ以前のGHESへ同じ設定を配っても、従来方式へ戻る可能性があります。複数ホストを利用する組織は、ホストごとに結果を記録してください。
Git over HTTPSは資格情報ヘルパーまで合わせる
GitHub CLIのAPI操作が成功しても、git pullやgit pushが別の資格情報ヘルパーに古い値を保持していれば、移行は完了しません。GitHubはHTTPSでGitを使う場合、GitHub CLIを資格情報ヘルパーとして設定するよう推奨しています。
gh auth setup-git
git --version
git fetch
git push --dry-run
あわせてGit 2.46以降が推奨されています。この版以降では、GitHub CLIが有効期限付き資格情報であることを示し、キャッシュ型の資格情報ヘルパーが期限を過ぎて保持しないよう扱えます。古いGitでもGitHub CLIは動作するとされていますが、一度だけ更新を勧める表示が出ます。移行試験ではGitHub CLIだけでなくGitの版、既存ヘルパー、SSHとHTTPSの使い分けも記録します。
スポンサーリンク
スクリプトがトークンを一度だけ読む構成は壊れ得る
最も注意したい互換性は、起動時にgh auth tokenを一度だけ実行し、その文字列を長時間使い回すスクリプトです。有効期限付きのアクセス用トークンをファイル、キャッシュ、別プロセスへ渡すと、処理の途中や次回実行時に期限切れとなる可能性があります。GitHubは、外部処理でトークンが必要なときは、必要になるたびにgh auth tokenから読み直すよう説明しています。
ただし、値を頻繁に表示・受け渡しするほど安全になるわけではありません。標準出力、デバッグログ、プロセス引数、ジョブの成果物へ秘密が残らない設計が必要です。可能なら、個別コマンドの認証をGitHub CLIへ任せ、別プログラムへ生のトークンを渡す経路を減らします。
リリースノートは、GH_TOKENやGITHUB_TOKENで外部から与えたトークンをGitHub CLIが更新することはないと明記しています。CIで環境変数を使う処理は今回の自動更新へ移行したと考えず、GitHub Actionsが発行するトークン、GitHub App、期限付きPATなど、その実行環境に合う方式を別に評価してください。
権限追加の操作でも短命状態を維持する
利用中に追加のOAuthスコープが必要になると、gh auth refresh --scopesを使う場合があります。公式ドキュメントは、有効期限付き資格情報を使う場合、更新時にも--expiringを指定するか、expiring_credentials設定を有効にするよう案内しています。これを行わないと、スコープ変更時に有効期限なし資格情報へ置き換わる可能性があります。
gh auth refresh --expiring --scopes "必要なスコープ"
gh auth status
自動更新は、有効期限が近いアクセス用トークンを交換する処理です。権限を自動的に減らす仕組みではなく、利用者が失った端末の認可を自動で取り消すものでもありません。導入時に許可するスコープを再確認し、不要な認可はアカウント設定から失効します。
短命化しても更新用トークンと端末は守る
アクセス用トークンの寿命を短くすると、単体で漏れた値を利用できる時間は縮みます。一方、GitHub CLIはローテーションする更新用トークンも保存します。端末全体が侵害された場合や、保存先へ継続的にアクセスできる攻撃者がいる場合は、アクセス用トークンの短命化だけで影響を止められるとは限りません。
GitHub CLIは、利用できる場合はOSのキーリングへ資格情報を保存し、利用できない場合はプレーンテキストの設定ファイルへ保存すると公式ドキュメントに記載されています。共有端末やコンテナ、最小構成のLinuxでは、どの保存先が実際に選ばれたかを確認し、ファイル権限、ホームディレクトリの分離、バックアップへの含まれ方を点検します。
資格情報が外部へ出た疑いがある場合は、期限切れを待つのではなく失効と調査を優先します。文字列の削除、端末からのログアウト、GitHub側の認可取り消し、操作履歴の確認は別の作業です。一般的な初動の順序は、既存記事「漏えいしたAPIキーは削除だけで大丈夫?AI開発での失効と差し替えの手順」でも整理しています。同記事は2026年10月15日時点の恒久対策で、今回のGitHub CLI新機能を扱うものではありません。
小規模な試験から既定化を判断する
本サイトでは、全員へ一斉に設定を配る前に、次の順序で試すことを提案します。まず一台の開発端末で対話ログインとAPI操作を確認し、次にGit over HTTPS、GitHub CLI拡張、長時間動くスクリプトを試します。期限の更新が起きるまで状態を観察し、再ログイン要求、401応答、期限切れ値のキャッシュ、秘密のログ出力を確認します。
- GitHub CLI 2.103.0以降とGitの版を資産台帳へ記録する
- 対象ホストがgithub.com、ghe.com、GHES 3.23以降のどれかを確認する
gh auth statusで更新可能性と期限を確認する- Git over HTTPSでは
gh auth setup-gitと既存ヘルパーを検証する gh auth tokenを保存するスクリプトと拡張を検索するGH_TOKENとGITHUB_TOKENは自動更新対象外として別管理する- 失効、端末紛失、更新失敗時の再認証手順を用意する
成功条件は、ログインが継続することだけではありません。短命なアクセス用トークンへ切り替わり、通常業務が止まらず、期限切れの値を別システムが保持せず、資格情報の保存先と失効手順を管理できることです。公開プレビューの間は、GitHub CLIの更新で挙動が変わり得る前提で、対象端末とロールバック方法を限定すると安全に評価できます。
スポンサーリンク
今回の判断
GitHub CLIの有効期限付き資格情報は、開発者の端末に残る長期OAuthトークンの露出時間を短くする現実的な改善です。ただし、CIの環境変数や独自トークンまで自動で短命化する機能ではなく、更新用トークンと端末の保護も必要です。まず対話利用から試し、Gitの資格情報ヘルパーと、トークンを固定値として扱うスクリプトを確認したうえで、組織の既定設定へ進めるのが妥当です。









