Skip to content

Commit 0be7344

Browse files
Merge branch 'main' into codex/arc-auth-quickstart-note
2 parents 05ad46d + 32966c2 commit 0be7344

742 files changed

Lines changed: 2325591 additions & 2328527 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/delete-orphan-translation-files.yml

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,28 @@ jobs:
133133
--label "workflow-generated" \
134134
--head=$branch_name
135135
echo "Merge created PR..."
136-
retry_command gh pr merge --merge --auto --delete-branch "$branch_name"
136+
# Prefer enabling auto-merge so the PR waits for any required
137+
# checks before merging. If auto-merge can't be enabled — usually
138+
# because all required checks completed before this step ran and
139+
# the PR is already immediately mergeable — fall back to a direct
140+
# merge. GitHub returns one of these misleading errors in that
141+
# case: "Branch does not have required protected branch rules",
142+
# "Pull request is in unstable status", or "Pull request is not
143+
# in a mergeable state".
144+
auto_merge_err=$(mktemp)
145+
trap 'rm -f "$auto_merge_err"' EXIT
146+
if retry_command gh pr merge --merge --auto --delete-branch "$branch_name" 2>"$auto_merge_err"; then
147+
:
148+
else
149+
cat "$auto_merge_err"
150+
if grep -qE "does not have required protected branch rules|unstable status|Pull request is not in a mergeable state" "$auto_merge_err"; then
151+
echo "Auto-merge unavailable; PR appears immediately mergeable. Falling back to direct merge."
152+
retry_command gh pr merge --merge --delete-branch "$branch_name"
153+
else
154+
echo "Auto-merge failed with an unexpected error."
155+
exit 1
156+
fi
157+
fi
137158
138159
- uses: ./.github/actions/slack-alert
139160
if: ${{ failure() && github.event_name != 'workflow_dispatch' }}

.github/workflows/index-general-search-pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
6565
# first sleep to give it a chance to start
6666
sleep 6
67-
curl --retry-connrefused --retry 4 -I http://localhost:4002/
67+
curl --retry-connrefused --retry 6 -I http://localhost:4002/
6868
6969
- if: ${{ failure() }}
7070
name: Debug server outputs on errors

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,6 @@ tmp/
106106

107107
# Localized content from translation repositories
108108
translations/
109+
110+
# Shared local volume (bufo)
111+
.local

content/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-aws.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,17 @@ Edit the trust policy, adding the `sub` field to the validation conditions. For
7070
}
7171
```
7272

73+
For repositories created after June 18, 2026, or that have opted in to immutable subject claims, the `sub` claim includes immutable owner and repository IDs (not available on {% data variables.product.prodname_ghe_server %}). Make sure your trust policy matches the format your repository uses. For more information, see [AUTOTITLE](/actions/reference/openid-connect-reference#immutable-subject-claims).
74+
75+
```json copy
76+
"Condition": {
77+
"StringEquals": {
78+
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
79+
"token.actions.githubusercontent.com:sub": "repo:octo-org-123456/octo-repo-456789:ref:refs/heads/octo-branch"
80+
}
81+
}
82+
```
83+
7384
If you use a workflow with an environment, the `sub` field must reference the environment name: `repo:ORG-NAME/REPO-NAME:environment:ENVIRONMENT-NAME`. For more information, see [AUTOTITLE](/actions/reference/openid-connect-reference#filtering-for-a-specific-environment).
7485

7586
{% data reusables.actions.oidc-deployment-protection-rules %}

content/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-azure.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ This guide gives an overview of how to configure Azure to trust {% data variable
3232

3333
{% data reusables.actions.oidc-on-ghecom %}
3434

35+
For repositories created after June 18, 2026, and repository renames or transfers after that date, use an immutable default OIDC `sub` claim that includes owner and repository IDs (not available on {% data variables.product.prodname_ghe_server %}). Existing repositories keep the previous format unless they opt in. For more information, see [AUTOTITLE](/actions/reference/openid-connect-reference#immutable-subject-claims).
36+
3537
{% ifversion ghes %}
3638
{% data reusables.actions.oidc-endpoints %}
3739
<!-- This note is indented to align with the above reusable. -->

content/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-google-cloud-platform.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ This guide gives an overview of how to configure GCP to trust {% data variables.
3131

3232
{% data reusables.actions.oidc-on-ghecom %}
3333

34+
For repositories created after June 18, 2026, and repository renames or transfers after that date, use an immutable default OIDC `sub` claim that includes owner and repository IDs (not available on {% data variables.product.prodname_ghe_server %}). Existing repositories keep the previous format unless they opt in. For more information, see [AUTOTITLE](/actions/reference/openid-connect-reference#immutable-subject-claims).
35+
3436
{% ifversion ghes %}
3537
{% data reusables.actions.oidc-endpoints %}
3638
<!-- This note is indented to align with the above reusable. -->

content/actions/reference/security/oidc.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ The OIDC token includes the following claims.
2626
| ----------- | -----| ---------------------- |
2727
| `aud`| Audience | By default, this is the URL of the repository owner, such as the organization that owns the repository. You can set a custom audience with a toolkit command: [`core.getIDToken(audience)`](https://www.npmjs.com/package/@actions/core/v/1.6.0) |
2828
| `iss`| Issuer | The issuer of the OIDC token: {% ifversion ghes %}`https://HOSTNAME/_services/token`{% else %}`https://token.actions.githubusercontent.com`{% endif %} |
29-
| `sub`| Subject | Defines the subject claim that is to be validated by the cloud provider. This setting is essential for making sure that access tokens are only allocated in a predictable way. |
29+
| `sub`| Subject | Defines the subject claim that is to be validated by the cloud provider. This setting is essential for making sure that access tokens are only allocated in a predictable way. For repositories using immutable subject claims, the `sub` format includes immutable owner and repository IDs (not available on {% data variables.product.prodname_ghe_server %}). |
3030

3131
### Additional standard JOSE header parameters and claims
3232

@@ -163,6 +163,22 @@ You can configure a subject that includes metadata containing colons. In this ex
163163

164164
{% endif %}
165165

166+
## Immutable subject claims
167+
168+
The OpenID Connect (OIDC) specification requires subject (`sub`) claims to be locally unique and never reassigned. Previously, the default `sub` format used only organization and repository names. If a namespace was recycled, a different owner could create the same subject value.
169+
170+
To help prevent this scenario, repositories created after June 18, 2026 now use an immutable default subject format that includes both the owner ID and repository ID. This rollout does not include {% data variables.product.prodname_ghe_server %}.
171+
172+
* Syntax: `repo:OWNER-ID/REPO-ID:ref:refs/heads/BRANCH`
173+
* Previous format example: `repo:octo-org/octo-repo:ref:refs/heads/main`
174+
* Immutable format example: `repo:octo-org-123456/octo-repo-456789:ref:refs/heads/main`
175+
176+
The `-` separator is used between names and IDs because `-` cannot appear in {% data variables.product.github %} usernames or repository names.
177+
178+
Repositories created before June 18, 2026 keep the previous format unless you opt in to immutable subject claims. You can opt in at the organization or repository level by using the OIDC settings UI or REST API.
179+
180+
Repository renames and transfers after June 18, 2026 also move to the immutable subject format.
181+
166182
## Configuring the subject in your cloud provider
167183

168184
To configure the subject in your cloud provider's trust relationship, you must add the subject string to its trust configuration. The following examples demonstrate how various cloud providers can accept the same `repo:octo-org/octo-repo:ref:refs/heads/demo-branch` subject in different ways:
@@ -174,6 +190,15 @@ To configure the subject in your cloud provider's trust relationship, you must a
174190
| Google Cloud Platform| `(assertion.sub=='repo:octo-org/octo-repo:ref:refs/heads/demo-branch')` |
175191
| HashiCorp Vault| `bound_subject="repo:octo-org/octo-repo:ref:refs/heads/demo-branch"` |
176192

193+
For repositories created after June 18, 2026, or that have opted in to immutable subject claims, the `sub` claim includes `owner_id` and `repo_id` as shown in the immutable examples. Update your trust policies to match the format your repository uses. Immutable subject claims are not available on {% data variables.product.prodname_ghe_server %}.
194+
195+
| Cloud provider | Immutable format example |
196+
| ------ | ----------- |
197+
| Amazon Web Services | `"token.actions.githubusercontent.com:sub": "repo:octo-org-123456/octo-repo-456789:ref:refs/heads/demo-branch"` |
198+
| Azure| `repo:octo-org-123456/octo-repo-456789:ref:refs/heads/demo-branch` |
199+
| Google Cloud Platform| `(assertion.sub=='repo:octo-org-123456/octo-repo#456789:ref:refs/heads/demo-branch')` |
200+
| HashiCorp Vault| `bound_subject="repo:octo-org-123456/octo-repo-456789:ref:refs/heads/demo-branch"` |
201+
177202
For more information about configuring specific cloud providers, see the guides listed in [AUTOTITLE](/actions/how-tos/security-for-github-actions/security-hardening-your-deployments).
178203

179204
## Customizing the token claims
@@ -315,6 +340,7 @@ Customizing the claims results in a new format for the entire `sub` claim, which
315340
> [!NOTE]
316341
> The `sub` claim uses the shortened form `repo` (for example, `repo:ORG-NAME/REPO-NAME`) instead of `repository` to reference the repository. {% ifversion fpt or ghec or ghes > 3.15 %}
317342
> Any `:` within the context value will be replaced with `%3A`. {% endif %}
343+
> For repositories using immutable subject claims (not available on {% data variables.product.prodname_ghe_server %}), `owner_id` and `repo_id` are always included in the `repo` segment of the `sub` claim, even when you customize claims with `include_claim_keys`. You can't remove these IDs from the immutable format.
318344
319345
The following example templates demonstrate various ways to customize the subject claim. To configure these settings on {% data variables.product.prodname_dotcom %}, admins use the REST API to specify a list of claims that must be included in the subject (`sub`) claim.
320346

content/actions/tutorials/create-actions/create-a-composite-action.md

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -247,11 +247,3 @@ jobs:
247247
env:
248248
RANDOM_NUMBER: {% raw %}${{ steps.foo.outputs.random-number }}{% endraw %}
249249
```
250-
251-
## Example composite actions on {% data variables.product.github %}
252-
253-
You can find many examples of composite actions on {% data variables.product.github %}.
254-
255-
* [microsoft/action-python](https://github.com/microsoft/action-python)
256-
* [microsoft/gpt-review](https://github.com/microsoft/gpt-review)
257-
* [tailscale/github-action](https://github.com/tailscale/github-action)

content/billing/how-tos/set-up-payment/manage-payment-info.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Managing your payment and billing information
3-
intro: 'Learn how to view and manage your payment information and billing contacts using the new billing platform.'
3+
intro: 'Learn how to view, modify, and remove your payment information and billing contacts using the new billing platform.'
44
versions:
55
feature: enhanced-billing-platform
66
redirect_from:

content/code-security/getting-started/quickstart-for-securing-your-repository.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ As an alternative to default setup, you can use advanced setup, which generates
150150
If you are a repository maintainer, it's good practice to specify a security policy for your repository by creating a file named `SECURITY.md` in the repository. This file instructs users about how to best contact you and collaborate with you when they want to report security vulnerabilities in your repository. You can view the security policy of a repository from the repository’s **{% data variables.product.prodname_security_and_quality_tab %}** tab.
151151

152152
1. From the main page of your repository, click **{% data variables.product.prodname_security_and_quality_tab %}**.
153-
1. In the left sidebar, under "Reporting", click **{% octicon "law" aria-hidden="true" aria-label="law" %} Policy**.
153+
1. In the left sidebar, under "Reporting", click **{% octicon "law" aria-hidden="true" aria-label="law" %} Security policy**.
154154
1. Click **Start setup**.
155155
1. Add information about supported versions of your project and how to report vulnerabilities.
156156

0 commit comments

Comments
 (0)