GitHub App ghs_ tokens are now ~520 characters: check Sume calls

GitHub's new installation tokens are about 520 characters, not 40. What breaks in a workflow that also calls Sume, and why Sume takes one credential header.

5 min readSume
All posts

GitHub finished rolling out stateless GitHub App installation tokens on 2026-10-02: new tokens use the ghs_APPID_JWT format and are about 520 characters long instead of 40, with the same permissions, repository scoping and one-hour expiry. If the same workflow or service also calls Sume, the practical risks are a shared HTTP wrapper that puts the GitHub token in Authorization while the Sume client sends x-api-key (Sume answers 401 unauthorized when a request carries both), and secret handling code that assumed a 40-character token.

GitHub's details are from its rollout notice; Sume's header rule is from Authentication and its error codes from Errors and rate limits, read 2026-10-03.

What does GitHub say can break?

The notice tells teams to look for hard-coded 40-character length checks, fixed-size database columns, Authorization header truncation in proxies or middleware, and legacy pattern-based secret redaction. It also says the temporary X-GitHub-Stateless-S2S-Token request header, introduced on 2026-05-15, stops being respected after 2026-11-30. Existing tokens keep working until they expire.

Items from GitHub's 2026-10-02 notice, read 2026-10-03.
ItemWhat the notice says
Token formatghs_APPID_JWT, about 520 characters
Lifetime and scopeOne hour; permissions and repository scoping unchanged
Existing tokensKeep working until natural expiry
Audit list40-character checks, fixed-size columns, header truncation, redaction patterns
Transition headerX-GitHub-Stateless-S2S-Token not respected after 2026-11-30

Why does the Sume call fail when I add a GitHub token?

Sume accepts Authorization: Bearer <key> or x-api-key: <key>, and a request with both is rejected with 401 unauthorized and the message Send only one API key credential. Neither header wins. So when a gateway or fetch wrapper injects Authorization for GitHub on every outgoing call, give the Sume client a separate transport, or send the Sume key only in whichever header your wrapper does not touch.

The Sume key is a different credential from the GitHub token. Do not validate it against the GitHub token's shape, and add its pattern to your secret redaction separately so it is masked in workflow logs.

Does the longer token affect Sume jobs?

No. A Sume job is created by the Sume submit, and its Idempotency-Key, status, result and webhook behavior do not depend on how your service obtained a GitHub token. If an Actions step fails on the GitHub side and is re-run, reuse the same Idempotency-Key for the Sume submit so the retry returns the original job instead of billing a second one.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume