Skip to content

Document GitHub immutable subject claims for assumable identities#3616

Merged
matthewhelmke merged 3 commits into
chainguard-dev:mainfrom
matthewhelmke:immutable-subject-claims-docs-update
Jul 22, 2026
Merged

Document GitHub immutable subject claims for assumable identities#3616
matthewhelmke merged 3 commits into
chainguard-dev:mainfrom
matthewhelmke:immutable-subject-claims-docs-update

Conversation

@matthewhelmke

@matthewhelmke matthewhelmke commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

GitHub now embeds immutable numeric owner and repository IDs in the OIDC token subject claim — repo:org@<owner-id>/repo@<repo-id>:... instead of repo:org/repo:.... This format is the default for repositories created after July 15, 2026, and an opt-in for older ones. An identity that matches the old name-only subject will not match a token that carries the immutable subject, so the workflow fails to authenticate.

Reported by a solution architect in DOCS-73 after a customer (Aleph Alpha) hit it. See GitHub's changelog.

Changes

  • GitHub Actions identity guide (source of truth): explains the format, adds a "Finding your repository's numeric identifiers" section (the gh api lookup and token-log verification), and updates the chainctl and Terraform examples.
  • Octo STS FAQ: updates the exact-match, pattern-match, and org-policy subject examples.
  • Registry authentication guide: updates the --github-repo command and its subject note.
  • Renovate guide: updates the --github-repo command.
  • Custom Assembly GitOps guide: this matches on the repository claim, which is unaffected by the change. Added a note explaining that, plus optional repository_id hardening guidance.

The auto-generated chainctl CLI reference still shows the old format. It regenerates from the CLI source, so it needs a separate fix in the CLI repo rather than a manual edit here.

Before merge — verify against a live org

These use chainctl in ways I could not test from the docs repo:

  • chainctl iam identities create github … --github-repo=my-org@<owner-id>/repo-name@<repo-id> is accepted and produces the immutable subject.
  • --github-ref (not --github-refs) is the correct flag for the multi-branch regex example.
  • --claim=repository_id=<repo-id> is a valid claim key (the optional hardening in the Custom Assembly guide).

Created in collaboration with Claude Code running Opus 4.8 on 2026-07-21.

GitHub now embeds immutable numeric owner and repository IDs in the OIDC
token subject claim (repo:org@<owner-id>/repo@<repo-id>:...). This format is
the default for repositories created after 2026-07-15 and an opt-in for older
ones. An identity that matches the old name-only subject will not match a
token that carries the immutable subject, so the workflow fails to
authenticate.

Update the GitHub Actions identity guide (the source of truth), the Octo STS
FAQ, and the registry-authentication and Renovate guides to use and explain
the new format, including how to find the numeric IDs. The Custom Assembly
GitOps guide matches on the repository claim, which is unaffected by this
change, so note that and add optional repository_id hardening guidance.

Refs: DOCS-73

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@matthewhelmke
matthewhelmke requested a review from a team as a code owner July 21, 2026 15:14
@netlify

netlify Bot commented Jul 21, 2026

Copy link
Copy Markdown

Deploy Preview for ornate-narwhal-088216 ready!

Name Link
🔨 Latest commit 4f3410c
🔍 Latest deploy log https://app.netlify.com/projects/ornate-narwhal-088216/deploys/6a60b5f13aebfb00086579ed
😎 Deploy Preview https://deploy-preview-3616--ornate-narwhal-088216.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

matthewhelmke added a commit to matthewhelmke/edu that referenced this pull request Jul 21, 2026
Update the OIDC subject claim in the identity and role-binding examples to GitHub's immutable format (repo:org@<owner-id>/repo@<repo-id>:...). This keeps the tutorial consistent with the broader docs update in chainguard-dev#3616, which explains the format and how to find the numeric IDs.

Refs: DOCS-73

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@matthewhelmke
matthewhelmke marked this pull request as draft July 21, 2026 15:17
@matthewhelmke

Copy link
Copy Markdown
Collaborator Author

I have tested all of the code in this docs update.

@matthewhelmke
matthewhelmke marked this pull request as ready for review July 21, 2026 17:11
@matthewhelmke
matthewhelmke requested a review from ribbybibby July 21, 2026 17:11
@matthewhelmke
matthewhelmke merged commit 3d40a9c into chainguard-dev:main Jul 22, 2026
7 checks passed
@matthewhelmke
matthewhelmke deleted the immutable-subject-claims-docs-update branch July 22, 2026 13:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants