You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+22Lines changed: 22 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,27 @@
1
1
# Docs changelog
2
2
3
+
**23 April 2026**
4
+
5
+
We added documentation for the new `gh skill` command (public preview), which you can use to discover, install, update, and publish agent skills directly from GitHub CLI.
6
+
7
+
See [Adding agent skills for GitHub Copilot](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/cloud-agent/add-skills#managing-skills-with-github-cli).
8
+
9
+
<hr>
10
+
11
+
**21 April 2026**
12
+
13
+
We reorganized the Copilot how-tos for GitHub.com into a new [Copilot on GitHub](https://docs.github.com/en/copilot/how-tos/copilot-on-github) category, structured around five task-based map topics that follow the way people actually use Copilot on GitHub:
14
+
15
+
*[Set up Copilot](https://docs.github.com/en/copilot/how-tos/copilot-on-github/set-up-copilot): Enable Copilot, configure AI models, and set up code review.
16
+
*[Chat with Copilot](https://docs.github.com/en/copilot/how-tos/copilot-on-github/chat-with-copilot): A streamlined [quickstart](https://docs.github.com/en/copilot/how-tos/copilot-on-github/chat-with-copilot/get-started-with-chat) with example prompts, plus focused articles for chat on GitHub and chat on GitHub Mobile.
17
+
*[Customize Copilot](https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot): Add custom instructions, customize coding agents (MCP, hooks, skills, firewall), and curate context with Spaces and content exclusions. A new [quickstart](https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview) walks through a scenario that ties these features together.
18
+
*[Copilot for GitHub tasks](https://docs.github.com/en/copilot/how-tos/copilot-on-github/copilot-for-github-tasks): Create issues, generate PR summaries, and use the GitHub MCP server from the web UI.
19
+
*[Use Copilot agents](https://docs.github.com/en/copilot/how-tos/copilot-on-github/use-copilot-agents) — Six articles following the agent workflow end-to-end: kick off a task, research and iterate, monitor sessions, request code review, and review output. Includes a new [hands-on quickstart](https://docs.github.com/en/copilot/how-tos/copilot-on-github/use-copilot-agents/overview) you can complete in about ten minutes.
20
+
21
+
Every article was revised for plain language, scannable structure, and value-focused intros. Web-specific content was separated from IDE and CLI content so you see only what's relevant to GitHub.com.
22
+
23
+
<hr>
24
+
3
25
**21 April 2026**
4
26
5
27
We recently published two new guides for organizations adopting Copilot cloud agent.
Copy file name to clipboardExpand all lines: content/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-aws.md
-11Lines changed: 0 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -70,17 +70,6 @@ Edit the trust policy, adding the `sub` field to the validation conditions. For
70
70
}
71
71
```
72
72
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).
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).
85
74
86
75
{% data reusables.actions.oidc-deployment-protection-rules %}
Copy file name to clipboardExpand all lines: content/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-azure.md
-2Lines changed: 0 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,8 +32,6 @@ This guide gives an overview of how to configure Azure to trust {% data variable
32
32
33
33
{% data reusables.actions.oidc-on-ghecom %}
34
34
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
-
37
35
{% ifversion ghes %}
38
36
{% data reusables.actions.oidc-endpoints %}
39
37
<!-- This note is indented to align with the above reusable. -->
Copy file name to clipboardExpand all lines: content/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-google-cloud-platform.md
-2Lines changed: 0 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,8 +31,6 @@ This guide gives an overview of how to configure GCP to trust {% data variables.
31
31
32
32
{% data reusables.actions.oidc-on-ghecom %}
33
33
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
-
36
34
{% ifversion ghes %}
37
35
{% data reusables.actions.oidc-endpoints %}
38
36
<!-- This note is indented to align with the above reusable. -->
Copy file name to clipboardExpand all lines: content/actions/reference/security/oidc.md
+1-27Lines changed: 1 addition & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ The OIDC token includes the following claims.
26
26
| ----------- | -----| ---------------------- |
27
27
|`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)|
28
28
|`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. For repositories using immutable subject claims, the `sub` format includes immutable owner and repository IDs (not available on {% data variables.product.prodname_ghe_server %}). |
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. |
30
30
31
31
### Additional standard JOSE header parameters and claims
32
32
@@ -163,22 +163,6 @@ You can configure a subject that includes metadata containing colons. In this ex
163
163
164
164
{% endif %}
165
165
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 %}.
* 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
-
182
166
## Configuring the subject in your cloud provider
183
167
184
168
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:
@@ -190,15 +174,6 @@ To configure the subject in your cloud provider's trust relationship, you must a
190
174
| Google Cloud Platform|`(assertion.sub=='repo:octo-org/octo-repo:ref:refs/heads/demo-branch')`|
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"`|
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).
203
178
204
179
## Customizing the token claims
@@ -340,7 +315,6 @@ Customizing the claims results in a new format for the entire `sub` claim, which
340
315
> [!NOTE]
341
316
> 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 %}
342
317
> 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.
344
318
345
319
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.
Copy file name to clipboardExpand all lines: content/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,6 +31,7 @@ The following features are currently unavailable on {% data variables.enterprise
31
31
| Some features currently in {% data variables.release-phases.public_preview %} or {% data variables.release-phases.private_preview %} | Certain features that are in a preview phase on {% data variables.product.prodname_dotcom_the_website %} may not be available on {% data variables.enterprise.data_residency_site %} until GA. ||
32
32
| Migrations REST API | Currently unavailable. |[AUTOTITLE](/rest/migrations)|
33
33
| Streaming audit logs to Amazon S3 with OpenID Connect (OIDC) | Currently unavailable. |[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise)|
34
+
| Organization-level dependency insights | Currently unavailable. |[AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/viewing-insights-for-dependencies-in-your-organization)|
Copy file name to clipboardExpand all lines: content/code-security/concepts/supply-chain-security/dependency-graph-data.md
+9-1Lines changed: 9 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -54,10 +54,18 @@ To enable automatic dependency submission, see [AUTOTITLE](/code-security/supply
54
54
55
55
## {% data variables.product.prodname_dependabot %} graph jobs
56
56
57
-
This method uses a special type of {% data variables.product.prodname_dependabot %} job that builds a dependency snapshot and uploads it to the dependency submission API. This is currently only supported for **Go** dependencies.
57
+
{% data variables.product.prodname_dependabot %} graph jobs use a special type of {% data variables.product.prodname_dependabot %} job to build a dependency snapshot and upload it to the dependency submission API. {% data variables.product.prodname_dependabot %} graph jobs are currently supported for **Go** and **Python** dependencies.
58
+
59
+
For supported ecosystems, {% data variables.product.prodname_dependabot %} graph jobs provide:
60
+
61
+
* Full transitive dependency coverage, which means {% data variables.product.prodname_dependabot %} can alert you to vulnerabilities in indirect dependencies that static analysis may miss.
62
+
* Private registry access through {% data variables.product.prodname_dependabot %} secrets configured at the organization or repository level. For more information, see [AUTOTITLE](/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configuring-access-to-private-registries-for-dependabot).
63
+
* Private packages that are not accessible through configured {% data variables.product.prodname_dependabot %} secrets are gracefully omitted from the dependency graph without causing a failure.
58
64
59
65
This approach is similar to automatic dependency submission, but does not incur charges for {% data variables.product.prodname_actions %} minutes. It can also access organization-wide configurations for private registries you've set up for {% data variables.product.prodname_dependabot %}.
60
66
67
+
> [!NOTE] {% data variables.product.prodname_dependabot %} graph jobs take precedence over automatic dependency submission. For example, if your Python repository previously used automatic dependency submission, those jobs will no longer run once {% data variables.product.prodname_dependabot %} graph jobs are active. The only requirement is that the dependency graph is enabled for your repository.
68
+
61
69
{% endif %}
62
70
63
71
## The {% data variables.dependency-submission-api.name %}
Copy file name to clipboardExpand all lines: content/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/configuring-automatic-dependency-submission-for-your-repository.md
+16-3Lines changed: 16 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,9 @@ Dependency graph must be enabled for the repository for you to enable automatic
19
19
20
20
You must also enable {% data variables.product.prodname_actions %} for the repository in order to use automatic dependency submission. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository).
21
21
22
+
> [!NOTE]
23
+
> For ecosystems that support {% data variables.product.prodname_dependabot %} graph jobs, you do not need to enable automatic dependency submission. {% data variables.product.prodname_dependabot %} graph jobs run automatically when the dependency graph is enabled for your repository, and they take precedence over automatic dependency submission. See [AUTOTITLE](/code-security/concepts/supply-chain-security/dependency-graph-data#dependabot-graph-jobs).
24
+
22
25
## Enabling automatic dependency submission
23
26
24
27
Repository administrators can enable or disable automatic dependency submission for a repository by following the steps outlined in this procedure.
@@ -39,14 +42,24 @@ You can view details about the automatic workflows run by viewing the **Actions*
39
42
40
43
> [!NOTE] After you enable automatic dependency submission, we'll automatically trigger a run of the action. Once enabled, it'll run each time a commit to the default branch updates a manifest.
41
44
42
-
## Accessing private registries with self-hosted runners
45
+
## Accessing private registries
46
+
47
+
### Using {% data variables.product.prodname_dependabot %} secrets
48
+
49
+
For ecosystems that support {% data variables.product.prodname_dependabot %} graph jobs, you can configure access to private registries using {% data variables.product.prodname_dependabot %} secrets at the organization or repository level.
50
+
51
+
When {% data variables.product.prodname_dependabot %} graph jobs encounter private packages that are not accessible through configured secrets, those packages are gracefully omitted from the dependency graph without causing a failure.
52
+
53
+
For more information on configuring private registry access, see [AUTOTITLE](/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configuring-access-to-private-registries-for-dependabot).
54
+
55
+
### Using self-hosted runners
43
56
44
-
You can configure self-hosted runners to run automatic dependency submission jobs, instead of using the {% data variables.product.prodname_actions %} infrastructure. This is necessary to access private Maven registries. The self-hosted runners must be running on Linux or macOS. For .NET and Python auto-submission, they must have access to the public internet in order to download the latest component-detection release.
57
+
You can configure **self-hosted runners** to run automatic dependency submission jobs, instead of using the {% data variables.product.prodname_actions %} infrastructure. This is necessary to access private registries for ecosystems that do not support {% data variables.product.prodname_dependabot %} graph jobs, or when your registries are only reachable from within your network. The self-hosted runners must be running on Linux or macOS. For .NET and Python auto-submission, they must have access to the public internet in order to download the latest component-detection release.
45
58
46
59
1. Provision one or more self-hosted runners, at the repository or organization level. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners) and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners).
47
60
1. Assign a `dependency-submission` label to each runner you want automatic dependency submission to use. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners#assigning-a-label-to-a-self-hosted-runner).
48
61
{% data reusables.repositories.navigate-to-code-security-and-analysis %}
49
-
1. Under "Dependency graph", click the dropdown menu next to “Automatic dependency submission”, then select **Enabled for labeled runners**.
62
+
1. Under "Dependency graph", click the dropdown menu next to "Automatic dependency submission", then select **Enabled for labeled runners**.
50
63
51
64
Once enabled, automatic dependency submission jobs will run on the self-hosted runners, unless:
Copy file name to clipboardExpand all lines: content/code-security/reference/supply-chain-security/automatic-dependency-submission.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -94,7 +94,9 @@ The .NET autosubmission action uses the open source [component-detection](https:
94
94
95
95
### Python projects
96
96
97
-
Python uses the open source [component-detection](https://github.com/microsoft/component-detection/) project as its underlying graph generation engine. The autosubmission action for Python will only run if there is a `requirements.txt` file in the root directory of the repository. Python autosubmission does not currently support private packages; packages referenced in `requirements.txt` which are not publicly available will cause the autosubmission action to fail.
97
+
Python repositories with the dependency graph enabled use {% data variables.product.prodname_dependabot %} graph jobs to generate dependency graphs. {% data variables.product.prodname_dependabot %} graph jobs take precedence over automatic dependency submissions, and the autosubmission workflow described below will no longer run for Python projects. For more information, see [AUTOTITLE](/code-security/concepts/supply-chain-security/dependency-graph-data#dependabot-graph-jobs).
98
+
99
+
Automatic dependency submission for Python uses the open source [component-detection](https://github.com/microsoft/component-detection/) project as its underlying graph generation engine. The autosubmission action will only run if there is a `requirements.txt` file in the root directory of the repository. Python autosubmission does not currently support private packages; packages referenced in `requirements.txt` which are not publicly available will cause the autosubmission action to fail.
98
100
99
101
> [!NOTE]
100
102
> This action uses [actions/setup-python](https://github.com/actions/setup-python) to install Python. You must include a .python-version file in your repository to specify the Python version to be installed.
0 commit comments