GitHub App Installation Tokens: New Format Rolling Out April 27
GitHub App installation tokens are expanding from 40 to ~520 characters starting April 27. If your code validates token length or uses regex patterns, update now or risk breaking integrations.
TL;DR
- GitHub App installation tokens are getting a new format starting April 27, 2026 — tokens will grow from 40 to ~520 characters
- New format uses
ghs_APPID_JWTstructure instead of fixed-length strings - If your code validates token length or uses regex patterns like
ghs_[A-Za-z0-9]{36}, it will break — update now
What's Changing
- Token length — Installation tokens will expand from 40 characters to approximately 520 characters, with variable length based on embedded data
- Token format — New format is
ghs_APPID_JWT, still prefixed withghs_but now includes a signed JWT payload - Stateless design — JWT is signed by GitHub internally and contains installation, app, and validation details. Do not validate or parse it in your code
Rollout Timeline
- April 27 – mid-May 2026 — Staged rollout begins for GitHub Actions
GITHUB_TOKENand first-party integrations (Dependabot, Slack, Teams) - Mid-May to late-June 2026 — Broader rollout to all GitHub App installation tokens, with brownout period to catch format-dependent integrations
What You Need to Do
- Remove any hardcoded token length checks — tokens are no longer exactly 40 characters
- Delete regex patterns that validate token format (e.g.,
ghs_[A-Za-z0-9]{36}) - Expand database columns storing tokens to at least 520 characters
- Treat tokens as opaque strings — never parse or validate their contents
Scope
- Applies to GitHub Enterprise Cloud and Data Residency only — GitHub Enterprise Server unaffected
- Existing tokens continue working until expiration
- User-to-server tokens (used in Copilot code review flows) will change later — details coming soon
Update: Review your GitHub App integrations now and audit for token format assumptions. See GitHub's authentication docs for implementation details.
Source: GitHub Changelog