Lesstep
GitHub Actions・GitHub App・2026年11月5日に確認

GitHub App のインストール トークンは約520文字に(ghs_APPID_JWT)、X-GitHub-Stateless-S2S-Token は2026年11月30日に効かなくなる

2026年10月2日から、GitHub App の新しいインストール トークンはすべてステートレスな形式 ghs_APPID_JWT です(GitHub の changelog・切り替えは4月27日に始まりました)。いまも ghs_ で始まりますが、長さは40文字ではなく約520文字で、ドットを2つ含みます。権限、対象のリポジトリ、1時間の有効期限、トークンを作る REST のエンドポイントは変わりません。ワークフローも、たとえば actions/create-github-app-token から新しい形式を受け取ります。壊れるのは古い形を前提にしたコードです:長さの上限、パターン、伏せ字のルール、列。2026年11月30日までは、リクエストのヘッダーで古い形式をまだ頼めますが、その後は GitHub が無視します。

見え方

トークンを表に出さずに確かめる

ステートレスなトークンは約520文字でドットが2つ、古いトークンは40文字でドットはありません。ワークフローでは、id: app-token を付けた actions/create-github-app-token のステップのあとに:

- name: Token format
  env:
    TOKEN: ${{ steps.app-token.outputs.token }}
  run: echo "length ${#TOKEN}, dots $(printf %s "$TOKEN" | tr -cd . | wc -c)"

出るのは長さとドットの数だけです。このアクションはトークンをシークレットとして登録するので、どちらの形式でもランナーはログで伏せます。確かめるべきなのは、自分のスキャナーやログの伏せ字の処理です。

ヘッダーと11月30日

X-GitHub-Stateless-S2S-Token は、インストール トークンを作るエンドポイント POST /app/installations/{installation_id}/access_tokens に付ける一時的なリクエストのヘッダーです(GitHub の changelog・2026年5月15日):

GitHub は2026年11月30日にこのヘッダーを受け付けなくなります。その日から、disabled を付けたリクエストもステートレスなトークンを受け取ります。長さの上限のあるシステムのために disabled で短いトークンを保っているコードはその日に動かなくなるので、先にそのシステムを直します。そういうコードを探すには:

grep -rn 'X-GitHub-Stateless-S2S-Token' .

アプリが両方の形式で動くことを確かめたら、11月30日より前に本番のコードからヘッダーを外すように、と GitHub は書いています。

直し方

見分け方

失敗したジョブを IntelliJ IDEA から見るなら

Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べるので、GitHub の側の変更のあとに失敗しはじめたステップがすぐ分かり、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。

JetBrains Marketplace で入れる

GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標、AWS と AWS Amplify は Amazon.com, Inc. またはその関連会社の商標、Terraform は HashiCorp, Inc. の商標です。このページはそのいずれとも提携しておらず、承認も受けていません。

ほかに:「Bad credentials」 · 「Resource not accessible by integration」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English