GitHub CLIのトークンを期限付きにする方法|gh auth loginの新しいオプションの使い方と気をつけること

GitHub CLIのトークンを期限付きにする方法。GitHub CLI v2.103.0以降にし(gh --versionで確かめる)、gh auth login --expiringでサインインし直す。サインインのたびに期限付きを選ぶならexpiring_credentialsを有効にする。HTTPSでgitを使うならgh auth setup-gitを実行し、gitは2.46以降が勧められている。トークンはgh auth tokenで使うたびに読み直し、結果を保存して使い回さない

GitHub CLI(gh)で、時間がたつと使えなくなるトークンを使えるようになりました。2026年10月21日(日本時間22日)に出たGitHub CLI v2.103.0からの機能で、いまは公開プレビューです。自分で選んだ人だけに使われ、何もしなければこれまでと変わりません。

gh でGitHubにサインインしていて、トークンが漏れたときの被害を小さくしたい人は、まず gh --version で v2.103.0以降か確かめ、gh auth login --expiring でサインインし直します。

GitHubのDocsによると、gh はふつう、期限のないトークンでサインインします。このトークンが漏れると、自分で取り消すまで使われ続けるおそれがあります。期限付きのトークンにしておけば、漏れたアクセストークンは数時間のうちに使えなくなります。

目次

結論:期限付きにする手順

  • GitHub CLIをv2.103.0以降にする
  • gh auth login --expiring でサインインし直す
  • サインインのたびに期限付きを選ぶなら、設定の expiring_credentials を有効にしておく
  • HTTPSでgitを使うなら、gh auth setup-git を実行しておく(gitは2.46以降にするよう勧められています)
  • スクリプトで gh auth token の結果を保存して使い回しているなら、使うたびに読み直すように変える
  • 2026年10月24日10時28分(日本時間)時点の公式の内容です。

期限付きのトークンとは

期限付きを選ぶと、gh は2つのトークンをしまいます。

トークン 役割
アクセストークン GitHubを操作するときに使う。数時間で期限が切れる
リフレッシュトークン 新しいアクセストークンをもらうために使う。使うたびに新しいものに入れ替わる

アクセストークンが要るときは、gh が裏で新しいものに取り替えます。そのため、サインインし直さなくても使い続けられます。毎日の使い方で、新しく打つコマンドはありません。

GitHubは、これから先のリリースで、新しくサインインするときは期限付きを標準にする予定だとしています。

使えるところ

  • GitHub.comと、GHE.com(GitHub Enterprise Cloud)で使えます。
  • GitHub Enterprise Serverは、Changelogによると、GHES 3.23から期限付きのトークンを出します。それより前のバージョンでは、選んでもこれまでどおり期限のないトークンになります。
  • 期限付きに対応していないサーバーでは、gh は期限のないふつうのトークンに切り替え、そのことを知らせるメッセージを出します。

マニュアルでは、--expiring は「期限付きを希望する」という指定で、必ずそうなるとは限らないとしています。サーバーの設定によっては、指定しなくても期限付きになることもあります。

期限付きにする方法

1. GitHub CLIのバージョンを確かめる

期限付きのトークンは、v2.103.0以降で使えます。いまのバージョンは次のコマンドで確かめられます。

gh --version

2026年10月24日10時28分(日本時間)時点の最新は、10月24日5時24分(日本時間)に出たv2.103.2です。v2.103.1では、どちらにするかを決めていない人が gh auth login を使うと、--expiring があることを知らせるようになりました。

2. 期限付きでサインインする

1回のサインインで選ぶときは、--expiring をつけます。

gh auth login --expiring

サインインのたびにつけなくても期限付きを選ぶようにするには、次の設定をします。

gh config set expiring_credentials enabled

この設定をしたあとで、ある1回だけ期限のないトークンにしたいときは、--expiring=false をつけてサインインします。

3. 期限付きになったか確かめる

gh auth status

トークンが自動で取り替えられるものか、いまのアクセストークンがいつ切れるかが表示されます。トークンそのものは、ふだんは隠れています。期限が切れたか、切れかけているトークンは、このコマンドを打ったときに取り替えられます。取り替えずにいまの状態だけを見たいときは、--no-refresh をつけます。

gitで使うときの設定

HTTPSでgitを使っている場合、期限付きのトークンを使うには、gh をgitの認証の仲立ち役にする必要があります。gh が、取り替えたトークンをgitに渡せるようにするためです。

gh auth setup-git

期限付きでサインインしたとき、まだこの設定になっていなければ、gh が設定するかを聞いてきます。いつでも上のコマンドで設定できます。

あわせて、gitを2.46以降にするよう勧められています。gitが2.46以降なら、gh は期限付きのトークンに印をつけ、パスワードを覚えておく仕組みが期限を過ぎてまでトークンを保存しないようにできます。古いgitでも動きますが、新しくするよう勧めるメッセージが1回出ます。マニュアルは、古いgitでは、覚えておく仕組みが期限の切れたトークンを保存して使い回すおそれがあるとしています。

切り替える前に気をつけること

トークンを保存して使い回すスクリプト

期限付きのアクセストークンは、短い時間しか使えません。gh auth token の結果を保存しておくスクリプトや拡張機能、トークンをほかのツールに写して使っているやり方は、いずれ期限の切れたトークンを持ったままになり、動かなくなります。

gh の外でトークンを使うときは、使うたびに次のコマンドで読み直します。期限付きのトークンなら、必要に応じて取り替えたうえで出力されます。

gh auth token

長い間使えるトークンがないと困る作業があるなら、その作業では期限付きへの切り替えを見送るよう、Changelogは勧めています。

環境変数で渡したトークンは取り替わらない

GH_TOKEN や GITHUB_TOKEN で渡したトークンは、gh が取り替えることはありません(v2.103.0のリリースノート)。

権限(スコープ)を足すとき

gh auth refresh でスコープを足したり変えたりするときは、--expiring をつけるか、expiring_credentials の設定を有効にしておきます。GitHubのDocsは、そうしないと期限付きのトークンが期限のないものに置き換わることがあるとしています。いっぽう gh auth refresh のマニュアルは、--expiring をつけなければいまのトークンの種類のまま変わらないとしています。どちらの説明でも、期限付きのままにしたいときは --expiring をつけます。ただし、マニュアルによると、期限付きになるかは接続先のサーバーとOAuthアプリの設定によります。

gh auth refresh --expiring

スコープを足すときは、このコマンドに --scopes と、必要なスコープをカンマで区切ってつけます。なお、期限付きのトークンが裏で取り替えられるのは、これとは別の動きで、スコープは変わりません。

鍵の流出への備えとして

期限付きのトークンは、漏れたあとに悪用できる時間を短くするための仕組みです。漏れたことに気づいたときに、トークンを取り消したり鍵を作り直したりする手順は、これまでどおり必要です。最近の流出の件で作り直す鍵の例は、次の記事にあります。

よくある質問

何もしないと、いまのサインインは変わる?

変わりません。自分で選んだときだけ期限付きになり、いまのサインインや、自分で渡しているトークンはこれまでどおり使えます。

期限付きにすると、数時間ごとにサインインし直す?

いいえ。gh がリフレッシュトークンを使って、裏でアクセストークンを取り替えます。サインインし直す必要はありません。

期限付きをやめたいときは?

--expiring=false をつけて gh auth login か gh auth refresh を実行すると、期限のないトークンを希望できます。expiring_credentials を有効にしている場合も、この指定が使えます。

公式の発表と資料

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

社内エンジニアとして、SREとセキュリティの仕事をしています。サーバーの構築や運用、クラウド環境の設計にも関わってきました。趣味はゲームと漫画・アニメ。

コメント

コメントする

目次