diff --git a/assets/images/help/copilot/code-review/coding-guidelines-comment@2x.png b/assets/images/help/copilot/code-review/coding-guidelines-comment@2x.png
new file mode 100644
index 000000000000..dd14de83151a
Binary files /dev/null and b/assets/images/help/copilot/code-review/coding-guidelines-comment@2x.png differ
diff --git a/assets/images/help/copilot/code-review/feedback-controls@2x.png b/assets/images/help/copilot/code-review/feedback-controls@2x.png
new file mode 100644
index 000000000000..e4a47287f4b2
Binary files /dev/null and b/assets/images/help/copilot/code-review/feedback-controls@2x.png differ
diff --git a/assets/images/help/copilot/code-review/feedback-modal@2x.png b/assets/images/help/copilot/code-review/feedback-modal@2x.png
new file mode 100644
index 000000000000..d12dfac1b536
Binary files /dev/null and b/assets/images/help/copilot/code-review/feedback-modal@2x.png differ
diff --git a/assets/images/help/copilot/code-review/request-review-branch-rule@2x.png b/assets/images/help/copilot/code-review/request-review-branch-rule@2x.png
new file mode 100644
index 000000000000..bf933f8a6bc6
Binary files /dev/null and b/assets/images/help/copilot/code-review/request-review-branch-rule@2x.png differ
diff --git a/assets/images/help/copilot/code-review/request-review@2x.png b/assets/images/help/copilot/code-review/request-review@2x.png
new file mode 100644
index 000000000000..f0fb7d035f0e
Binary files /dev/null and b/assets/images/help/copilot/code-review/request-review@2x.png differ
diff --git a/assets/images/help/copilot/code-review/review-comment@2x.png b/assets/images/help/copilot/code-review/review-comment@2x.png
new file mode 100644
index 000000000000..808bc4c5bdcd
Binary files /dev/null and b/assets/images/help/copilot/code-review/review-comment@2x.png differ
diff --git a/assets/images/help/copilot/code-review/vscode-comment-feedback@2x.png b/assets/images/help/copilot/code-review/vscode-comment-feedback@2x.png
new file mode 100644
index 000000000000..25941e1d7e72
Binary files /dev/null and b/assets/images/help/copilot/code-review/vscode-comment-feedback@2x.png differ
diff --git a/assets/images/help/copilot/code-review/vscode-comment@2x.png b/assets/images/help/copilot/code-review/vscode-comment@2x.png
new file mode 100644
index 000000000000..bd89fecd8126
Binary files /dev/null and b/assets/images/help/copilot/code-review/vscode-comment@2x.png differ
diff --git a/assets/images/help/copilot/code-review/vscode-review-button@2x.png b/assets/images/help/copilot/code-review/vscode-review-button@2x.png
new file mode 100644
index 000000000000..a097aed16a93
Binary files /dev/null and b/assets/images/help/copilot/code-review/vscode-review-button@2x.png differ
diff --git a/assets/images/help/copilot/code-review/vscode-review-progress@2x.png b/assets/images/help/copilot/code-review/vscode-review-progress@2x.png
new file mode 100644
index 000000000000..331c652761cd
Binary files /dev/null and b/assets/images/help/copilot/code-review/vscode-review-progress@2x.png differ
diff --git a/assets/images/help/copilot/custom-instructions-vscode.png b/assets/images/help/copilot/custom-instructions-vscode.png
new file mode 100644
index 000000000000..8a938f83134d
Binary files /dev/null and b/assets/images/help/copilot/custom-instructions-vscode.png differ
diff --git a/assets/images/help/copilot/vsc-review-and-comment.png b/assets/images/help/copilot/vsc-review-and-comment.png
new file mode 100644
index 000000000000..050d3a4f8654
Binary files /dev/null and b/assets/images/help/copilot/vsc-review-and-comment.png differ
diff --git a/assets/images/help/copilot/windows-terminal-dropdown.png b/assets/images/help/copilot/windows-terminal-dropdown.png
new file mode 100644
index 000000000000..3367811104f9
Binary files /dev/null and b/assets/images/help/copilot/windows-terminal-dropdown.png differ
diff --git a/assets/images/help/copilot/windows-terminal-settings.png b/assets/images/help/copilot/windows-terminal-settings.png
new file mode 100644
index 000000000000..5fdc970ced09
Binary files /dev/null and b/assets/images/help/copilot/windows-terminal-settings.png differ
diff --git a/assets/images/help/copilot/workspace-all-comments.png b/assets/images/help/copilot/workspace-all-comments.png
new file mode 100644
index 000000000000..7f76b6fce7c8
Binary files /dev/null and b/assets/images/help/copilot/workspace-all-comments.png differ
diff --git a/assets/images/help/copilot/workspace-applied-dismissed.png b/assets/images/help/copilot/workspace-applied-dismissed.png
new file mode 100644
index 000000000000..13d47c8ce233
Binary files /dev/null and b/assets/images/help/copilot/workspace-applied-dismissed.png differ
diff --git a/assets/images/help/copilot/workspace-commit-changes.png b/assets/images/help/copilot/workspace-commit-changes.png
new file mode 100644
index 000000000000..c37592af878f
Binary files /dev/null and b/assets/images/help/copilot/workspace-commit-changes.png differ
diff --git a/assets/images/help/copilot/workspace-configure-commands.png b/assets/images/help/copilot/workspace-configure-commands.png
new file mode 100644
index 000000000000..498d4ca07c1f
Binary files /dev/null and b/assets/images/help/copilot/workspace-configure-commands.png differ
diff --git a/assets/images/help/copilot/workspace-copilot-review-suggestion.png b/assets/images/help/copilot/workspace-copilot-review-suggestion.png
new file mode 100644
index 000000000000..6edaf118ddd4
Binary files /dev/null and b/assets/images/help/copilot/workspace-copilot-review-suggestion.png differ
diff --git a/assets/images/help/copilot/workspace-files-in-pr.png b/assets/images/help/copilot/workspace-files-in-pr.png
new file mode 100644
index 000000000000..a1cd5ef97ee9
Binary files /dev/null and b/assets/images/help/copilot/workspace-files-in-pr.png differ
diff --git a/assets/images/help/copilot/workspace-next-comment.png b/assets/images/help/copilot/workspace-next-comment.png
new file mode 100644
index 000000000000..1ad375929dee
Binary files /dev/null and b/assets/images/help/copilot/workspace-next-comment.png differ
diff --git a/assets/images/help/copilot/workspace-run-command.png b/assets/images/help/copilot/workspace-run-command.png
new file mode 100644
index 000000000000..2b1ba9eb0177
Binary files /dev/null and b/assets/images/help/copilot/workspace-run-command.png differ
diff --git a/assets/images/help/copilot/workspace-stop-command.png b/assets/images/help/copilot/workspace-stop-command.png
new file mode 100644
index 000000000000..08a87417e675
Binary files /dev/null and b/assets/images/help/copilot/workspace-stop-command.png differ
diff --git a/assets/images/help/desktop/mac-choose-settings.png b/assets/images/help/desktop/mac-choose-settings.png
new file mode 100644
index 000000000000..49e9e83d254f
Binary files /dev/null and b/assets/images/help/desktop/mac-choose-settings.png differ
diff --git a/assets/images/help/desktop/sign-in-github.png b/assets/images/help/desktop/sign-in-github.png
index b614ad6b3df1..6ff8ed0b891e 100644
Binary files a/assets/images/help/desktop/sign-in-github.png and b/assets/images/help/desktop/sign-in-github.png differ
diff --git a/assets/images/help/desktop/windows-sign-in-github.png b/assets/images/help/desktop/windows-sign-in-github.png
index 8435556e75e1..574b731cce33 100644
Binary files a/assets/images/help/desktop/windows-sign-in-github.png and b/assets/images/help/desktop/windows-sign-in-github.png differ
diff --git a/assets/images/help/pull_requests/menu-on-pull-request-file.png b/assets/images/help/pull_requests/menu-on-pull-request-file.png
new file mode 100644
index 000000000000..a9bce0fa5fbc
Binary files /dev/null and b/assets/images/help/pull_requests/menu-on-pull-request-file.png differ
diff --git a/assets/images/help/security/builder-sec-campaign.png b/assets/images/help/security/builder-sec-campaign.png
new file mode 100644
index 000000000000..ec4224375283
Binary files /dev/null and b/assets/images/help/security/builder-sec-campaign.png differ
diff --git a/assets/images/help/security/codeql-for-vs-code-set-ghe-uri.png b/assets/images/help/security/codeql-for-vs-code-set-ghe-uri.png
new file mode 100644
index 000000000000..e436e9074bc2
Binary files /dev/null and b/assets/images/help/security/codeql-for-vs-code-set-ghe-uri.png differ
diff --git a/assets/images/help/security/driver-sec-campaign-view.png b/assets/images/help/security/driver-sec-campaign-view.png
new file mode 100644
index 000000000000..eb96cdeb2df4
Binary files /dev/null and b/assets/images/help/security/driver-sec-campaign-view.png differ
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md
index b3c592f9d428..9b9b44bed21c 100644
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md
+++ b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md
@@ -127,9 +127,9 @@ Email notifications from {% data variables.product.prodname_dotcom %} contain he
| Header | Information |
| --- | --- |
-| `From` address | This address will always be {% ifversion fpt or ghec %}`notifications@github.com`{% else %}'the no-reply email address configured by your site administrator'{% endif %}. |
+| `From` address | This address will always be {% ifversion fpt %}`notifications@github.com`{% elsif ghec %}`notifications@github.com` or `notifications@SUBDOMAIN.ghe.com`{% else %}the no-reply email address configured by your site administrator{% endif %}. |
| `To` field | This field connects directly to the thread. If you reply to the email, you'll add a new comment to the conversation. |
-| `Cc` address | {% data variables.product.product_name %} will `Cc` you if you're subscribed to a conversation. The second `Cc` email address matches the notification reason. The suffix for these notification reasons is {% ifversion fpt or ghec %}`@noreply.github.com`{% else %}based on the no-reply email address configured by your site administrator{% endif %}. The possible notification reasons are:
`assign`: You were assigned to an issue or pull request.
`author`: You created an issue or pull request.
`ci_activity`: A {% data variables.product.prodname_actions %} workflow run that you triggered was completed.
`comment`: You commented on an issue or pull request.
`manual`: There was an update to an issue or pull request you manually subscribed to.
`mention`: You were mentioned on an issue or pull request.
`push`: Someone committed to a pull request you're subscribed to.
`review_requested`: You or a team you're a member of was requested to review a pull request.
`security_alert`: {% data variables.product.prodname_dotcom %} detected a vulnerability in a repository you receive alerts for.
`state_change`: An issue or pull request you're subscribed to was either closed or opened.
`subscribed`: There was an update in a repository you're watching.
`team_mention`: A team you belong to was mentioned on an issue or pull request.
`your_activity`: You opened, commented on, or closed an issue or pull request.
|
+| `Cc` address | {% data variables.product.product_name %} will `Cc` you if you're subscribed to a conversation. The second `Cc` email address matches the notification reason. The suffix for these notification reasons is {% ifversion fpt %}`@noreply.github.com`{% elsif ghec %}`@noreply.github.com` or `@noreply.SUBDOMAIN.ghe.com`{% else %}based on the no-reply email address configured by your site administrator{% endif %}. The possible notification reasons are:
`assign`: You were assigned to an issue or pull request.
`author`: You created an issue or pull request.
`ci_activity`: A {% data variables.product.prodname_actions %} workflow run that you triggered was completed.
`comment`: You commented on an issue or pull request.
`manual`: There was an update to an issue or pull request you manually subscribed to.
`mention`: You were mentioned on an issue or pull request.
`push`: Someone committed to a pull request you're subscribed to.
`review_requested`: You or a team you're a member of was requested to review a pull request.
`security_alert`: {% data variables.product.prodname_dotcom %} detected a vulnerability in a repository you receive alerts for.
`state_change`: An issue or pull request you're subscribed to was either closed or opened.
`subscribed`: There was an update in a repository you're watching.
`team_mention`: A team you belong to was mentioned on an issue or pull request.
`your_activity`: You opened, commented on, or closed an issue or pull request.
|
| `List-Id` field | This field identifies the name of the repository and its owner. The format of this address is always `OWNER/REPOSITORY `, e.g. `List-Id: grain-lang/grain `. |
| `X-GitHub-Severity` field | {% data reusables.repositories.security-alerts-x-github-severity %} The possible severity levels are:
`low`
`moderate`
`high`
`critical`
For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." |
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/index.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/index.md
index 3d07c7acf650..d9e714945fb5 100644
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/index.md
+++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/index.md
@@ -15,7 +15,7 @@ children:
- /viewing-contributions-on-your-profile
- /showing-an-overview-of-your-activity-on-your-profile
- /showing-your-private-contributions-and-achievements-on-your-profile
- - /sending-enterprise-contributions-to-your-githubcom-profile
+ - /sharing-contributions-from-github-enterprise-server
- /why-are-my-contributions-not-showing-up-on-my-profile
- /troubleshooting-commits-on-your-timeline
shortTitle: Manage contribution settings
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sharing-contributions-from-github-enterprise-server.md
similarity index 53%
rename from content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile.md
rename to content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sharing-contributions-from-github-enterprise-server.md
index 6970efdd44e7..d211c45ecf4f 100644
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile.md
+++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sharing-contributions-from-github-enterprise-server.md
@@ -1,6 +1,6 @@
---
-title: Sending enterprise contributions to your GitHub.com profile
-intro: 'You can highlight your work on {% data variables.product.prodname_enterprise %} by sending the contribution counts to your {% data variables.product.prodname_dotcom_the_website %} profile.'
+title: Sharing contributions from GitHub Enterprise Server
+intro: 'You can send contribution counts from {% data variables.product.prodname_ghe_server %} to your profile on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}.'
redirect_from:
- /articles/sending-your-github-enterprise-contributions-to-your-github-com-profile
- /articles/sending-your-github-enterprise-server-contributions-to-your-github-com-profile
@@ -8,6 +8,7 @@ redirect_from:
- /github/setting-up-and-managing-your-github-profile/sending-your-github-enterprise-server-contributions-to-your-githubcom-profile
- /github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/sending-your-github-enterprise-server-contributions-to-your-githubcom-profile
- /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile
+ - /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile
versions:
fpt: '*'
ghes: '*'
@@ -17,9 +18,9 @@ topics:
shortTitle: Send enterprise contributions
---
-## About enterprise contributions on your {% data variables.product.prodname_dotcom_the_website %} profile
+## About enterprise contributions
-Your {% data variables.product.prodname_dotcom_the_website %} profile shows {% ifversion fpt or ghec %}{% data variables.product.prodname_enterprise %}{% else %}{% data variables.product.product_name %}{% endif %} contribution counts from the past 90 days. {% data reusables.github-connect.sync-frequency %} Contribution counts from {% ifversion fpt or ghec %}{% data variables.product.prodname_enterprise %}{% else %}{% data variables.product.product_name %}{% endif %} are considered private contributions. The commit details will only show the contribution counts and that these contributions were made in a {% data variables.product.prodname_enterprise %} environment outside of {% data variables.product.prodname_dotcom_the_website %}.
+When you share contributions, your {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %} profile shows {% data variables.product.prodname_ghe_server %} contribution counts from the past 90 days. {% data reusables.github-connect.sync-frequency %} Contribution counts from {% data variables.product.prodname_ghe_server %} are considered private contributions. The commit details will only show the contribution counts and that these contributions were made on {% data variables.product.prodname_ghe_server %}.
You can decide whether to show counts for private contributions on your profile. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile)."
@@ -31,17 +32,17 @@ For more information about how contributions are calculated, see "[AUTOTITLE](/a
{% endnote %}
-## Sending your enterprise contributions to your {% data variables.product.prodname_dotcom_the_website %} profile
+## Sending your enterprise contributions to your profile
-Before you can connect your {% ifversion fpt or ghec %}{% data variables.product.prodname_enterprise %}{% else %}{% data variables.product.product_name %}{% endif %} profile to your {% data variables.product.prodname_dotcom_the_website %} profile, your enterprise owner must enable {% data variables.product.prodname_github_connect %} and enable contribution sharing between the environments. For more information, contact your enterprise owner.
+Before you can connect your {% data variables.product.prodname_ghe_server %} profile to your {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %} profile, your enterprise owner must enable {% data variables.product.prodname_github_connect %} and enable contribution sharing between the environments. For more information, contact your enterprise owner.
{% ifversion fpt or ghec %}
-To send enterprise contributions from {% data variables.product.prodname_ghe_server %} to your {% data variables.product.prodname_dotcom_the_website %} profile, see "[AUTOTITLE](/enterprise-server@latest/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile)" in the {% data variables.product.prodname_ghe_server %} documentation.
+To share contributions from {% data variables.product.prodname_ghe_server %}, view this article in the [{% data variables.product.prodname_ghe_server %} version of the site](/enterprise-server@latest/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile)."
{% elsif ghes %}
-1. Sign in to {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_dotcom_the_website %}.
+1. Sign in to both your user account on {% data variables.product.product_name %} **and** your user account on {% data variables.product.prodname_ghe_cloud %} ({% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-github-connect %} or {% data variables.enterprise.data_residency_site %}{% endif %}).
1. On {% data variables.product.prodname_ghe_server %}, in the upper-right corner of any page, click your profile photo, then click **Settings**.
{% ifversion global-nav-update %}
@@ -55,7 +56,7 @@ To send enterprise contributions from {% data variables.product.prodname_ghe_ser
{% endif %}
{% data reusables.github-connect.github-connect-tab-user-settings %}
{% data reusables.github-connect.connect-dotcom-and-enterprise %}
-1. Review the resources that {% data variables.product.prodname_ghe_server %} will access from your {% data variables.product.prodname_dotcom_the_website %} account, then click **Authorize**.
+1. Review the resources that {% data variables.product.prodname_ghe_server %} will access from your {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-github-connect %} or {% data variables.enterprise.data_residency_site %}{% endif %} account, then click **Authorize**.
{% data reusables.github-connect.send-contribution-counts-to-githubcom %}
{% endif %}
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md
index eb9dbe1df9d6..a13744e10e5e 100644
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md
+++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md
@@ -16,13 +16,15 @@ shortTitle: Private contributions {% ifversion hide-individual-achievements %}an
allowTitleToDifferFromFilename: true
---
-If you publicize your private contributions, people without access to the private repositories you work in won't be able to see the details of your private contributions. Instead, they'll see the number of private contributions you made on any given day. Your public contributions will include detailed information. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile)."
+{% ifversion ghec %}
+
+>[!NOTE] Achievements are not available on subdomains of {% data variables.enterprise.data_residency_site %}, such as `octocorp.ghe.com`.
-{% note %}
+{% endif %}
-**Note:** On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}{% data variables.product.product_name %}{% endif %}, public contributions on your profile are visible {% ifversion fpt or ghec %}to anyone in the world who can access {% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}only to other users of {% data variables.location.product_location%}{% endif %}.
+If you publicize your private contributions, people without access to the private repositories you work in won't be able to see the details of your private contributions. Instead, they'll see the number of private contributions you made on any given day. Your public contributions will include detailed information. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile)."
-{% endnote %}
+>[!NOTE] On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}{% data variables.product.product_name %}{% endif %}, public contributions on your profile are visible {% ifversion fpt or ghec %}to anyone in the world who can access {% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}only to other users of {% data variables.location.product_location%}{% endif %}.
## Changing the visibility of your private contributions
diff --git a/content/actions/administering-github-actions/index.md b/content/actions/administering-github-actions/index.md
index bfd9579642bc..f3c6a7bd98ba 100644
--- a/content/actions/administering-github-actions/index.md
+++ b/content/actions/administering-github-actions/index.md
@@ -8,7 +8,8 @@ versions:
ghec: '*'
children:
- /usage-limits-billing-and-administration
- - /viewing-github-actions-usage-metrics-for-your-organization
+ - /viewing-github-actions-metrics
- /sharing-workflows-secrets-and-runners-with-your-organization
+ - /making-retired-namespaces-available-on-ghecom
---
diff --git a/content/actions/administering-github-actions/making-retired-namespaces-available-on-ghecom.md b/content/actions/administering-github-actions/making-retired-namespaces-available-on-ghecom.md
new file mode 100644
index 000000000000..a6c7058ab17f
--- /dev/null
+++ b/content/actions/administering-github-actions/making-retired-namespaces-available-on-ghecom.md
@@ -0,0 +1,32 @@
+---
+title: 'Making retired namespaces available on GHE.com'
+shortTitle: Retired namespaces on GHE.com
+intro: 'Allow people to use namespaces that match actions you have used from {% data variables.product.prodname_dotcom_the_website %}.'
+versions:
+ ghec: '*'
+type: how_to
+permissions: Enterprise owners
+---
+
+## About retirement of namespaces
+
+If you use {% data variables.enterprise.data_residency %}, members of your enterprise can create {% data variables.product.prodname_actions %} workflows that use actions directly from {% data variables.product.prodname_dotcom_the_website %} or [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=actions).
+
+{% data variables.product.prodname_actions %} searches your enterprise on {% data variables.enterprise.data_residency_site %} for each action before falling back to {% data variables.product.prodname_dotcom_the_website %}. This ensures that custom versions of actions in your enterprise are used in preference to their counterparts on {% data variables.product.prodname_dotcom_the_website %}.
+
+To ensure workflows use their intended actions and to block the potential for abuse, once an action on {% data variables.product.prodname_dotcom_the_website %} is used for the first time, the namespace associated with that action is retired in your enterprise. This blocks users from creating an organization and repository in your enterprise that match the action's namespace on {% data variables.product.prodname_dotcom_the_website %}.
+
+## Making a retired namespace available
+
+After using an action from {% data variables.product.prodname_dotcom_the_website %}, if you want to create an action in your enterprise with the same name, you need to make the namespace for that organization and repository available.
+
+{% data reusables.enterprise-accounts.access-enterprise-emu %}
+{% data reusables.enterprise-accounts.settings-tab %}
+1. Under {% octicon "gear" aria-hidden="true" %} **Settings**, click **Retired namespaces**.
+1. To the right of the namespace that you want use in your enterprise, click **Unretire**.
+1. Go to the relevant organization and create a new repository.
+
+### Tips for ensuring you can create a new repository
+
+* When you unretire a namespace, always create the new repository with that name as soon as possible. If a workflow calls the associated action on {% data variables.product.prodname_dotcom_the_website %} before you create the local repository, the namespace will be retired again.
+* For actions used in workflows that run frequently, you may find that a namespace is retired again before you have time to create the local repository. In this case, you can temporarily disable the relevant workflows until you have created the new repository.
diff --git a/content/actions/administering-github-actions/usage-limits-billing-and-administration.md b/content/actions/administering-github-actions/usage-limits-billing-and-administration.md
index 7c962dfb8ab1..375261917e39 100644
--- a/content/actions/administering-github-actions/usage-limits-billing-and-administration.md
+++ b/content/actions/administering-github-actions/usage-limits-billing-and-administration.md
@@ -93,7 +93,7 @@ In addition to the usage limits, you must ensure that you use {% data variables.
## {% data variables.product.prodname_actions %} usage metrics
-Organization owners and users with the "View organization Actions usage metrics" permission can view {% data variables.product.prodname_actions %} usage metrics for their organization. These metrics can help you understand how and where your Actions minutes are being used. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions)."
+Organization owners and users with the "View organization Actions metrics" permission can view {% data variables.product.prodname_actions %} usage metrics for their organization. These metrics can help you understand how and where your Actions minutes are being used. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions)."
When you view usage metrics, it is important to remember that {% data reusables.actions.actions-usage-metrics-not-billing-metrics %}
diff --git a/content/actions/administering-github-actions/viewing-github-actions-metrics.md b/content/actions/administering-github-actions/viewing-github-actions-metrics.md
new file mode 100644
index 000000000000..9473e6fb74f3
--- /dev/null
+++ b/content/actions/administering-github-actions/viewing-github-actions-metrics.md
@@ -0,0 +1,47 @@
+---
+title: Viewing GitHub Actions metrics
+shortTitle: GitHub Actions metrics
+intro: 'You can view metrics to monitor where your organization or repositories use {% data variables.product.prodname_actions %} and how they are performing.'
+permissions: Organization owners and users with the "View organization Actions metrics" permission can view organization-level metrics.
Users with the base repository role can view repository-level metrics.
+versions:
+ feature: actions-metrics
+redirect_from:
+ - /actions/monitoring-and-troubleshooting-workflows/viewing-github-actions-usage-metrics-for-your-organization
+ - /actions/administering-github-actions/viewing-github-actions-usage-metrics-for-your-organization
+ - /actions/administering-github-actions/viewing-github-actions-metrics-for-your-organization
+---
+
+{% data reusables.actions.about-actions-metrics %}
+
+{% data reusables.actions.enabling-actions-metrics %}
+
+## About {% data variables.product.prodname_actions %} usage metrics
+
+{% data reusables.actions.about-actions-usage-metrics %}
+
+## About {% data variables.product.prodname_actions %} performance metrics
+
+{% data reusables.actions.about-actions-performance-metrics %}
+
+## Understanding {% data variables.product.prodname_actions %} metrics aggregation
+
+{% data reusables.actions.about-actions-usage-metrics-aggregation %}
+
+## Viewing {% data variables.product.prodname_actions %} metrics for your organization
+
+{% data reusables.actions.actions-metrics-discrepancy-note %}
+
+{% data reusables.profile.access_org %}
+{% data reusables.user-settings.access_org %}
+{% data reusables.organizations.insights %}
+{% data reusables.actions.viewing-actions-metrics %}
+
+## Viewing {% data variables.product.prodname_actions %} metrics for your repository
+
+> [!NOTE] Repository-level metrics for {% data variables.product.prodname_actions %} is in {% data variables.release-phases.public_preview %} and subject to change.
+
+{% data reusables.actions.actions-metrics-discrepancy-note %}
+
+{% data reusables.repositories.navigate-to-repo %}
+{% data reusables.repositories.navigate-to-insights %}
+{% data reusables.actions.viewing-actions-metrics %}
diff --git a/content/actions/administering-github-actions/viewing-github-actions-usage-metrics-for-your-organization.md b/content/actions/administering-github-actions/viewing-github-actions-usage-metrics-for-your-organization.md
deleted file mode 100644
index 547e755c36ba..000000000000
--- a/content/actions/administering-github-actions/viewing-github-actions-usage-metrics-for-your-organization.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Viewing GitHub Actions usage metrics for your organization
-shortTitle: GitHub Actions usage metrics
-intro: 'Organization owners and CI/CD administrators can view usage metrics for how and where their organization uses {% data variables.product.prodname_actions %}.'
-permissions: Organization owners and users with the "View organization Actions usage metrics" permissions.
-product: 'Your organization must be on a {% data variables.product.prodname_ghe_cloud %} plan.'
-versions:
- fpt: '*'
- ghec: '*'
-redirect_from:
- - /actions/monitoring-and-troubleshooting-workflows/viewing-github-actions-usage-metrics-for-your-organization
----
-
-If you are on a {% data variables.product.prodname_ghe_cloud %} plan, {% data reusables.actions.about-actions-usage-metrics %}
-
-For more information about how to use {% data variables.product.prodname_actions %} usage metrics, see "[AUTOTITLE](/enterprise-cloud@latest/organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions)" in the {% data variables.product.prodname_ghe_cloud %} documentation.
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows.md b/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows.md
index 9cec21768a5c..89d6654b108f 100644
--- a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows.md
+++ b/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows.md
@@ -1,6 +1,6 @@
---
title: About monitoring workflows
-intro: 'You can use the tools in {% data variables.product.prodname_actions %} to monitor your workflows.'
+intro: 'You can use the tools in {% data variables.product.prodname_actions %} to monitor your workflows, metrics, and self-hosted runners.'
versions:
fpt: '*'
ghes: '*'
@@ -45,6 +45,13 @@ To identify how long a job took to run, you can view its execution time. For mor
You can view the status of each job and step in a workflow. For more information, see "[AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history)."
+{% ifversion actions-metrics %}
+
+## Monitoring {% data variables.product.prodname_actions %} metrics
+
+To analyze the efficiency and reliability of your workflows using metrics, see "[AUTOTITLE](/actions/administering-github-actions/viewing-github-actions-metrics)".
+{% endif %}
+
## Monitoring self-hosted runners
If you use self-hosted runners, you can view their activity and diagnose common issues.
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/about-troubleshooting-workflows.md b/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/about-troubleshooting-workflows.md
index 0a784bc9c750..2220ca5fa87a 100644
--- a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/about-troubleshooting-workflows.md
+++ b/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/about-troubleshooting-workflows.md
@@ -24,6 +24,15 @@ If the workflow logs do not provide enough detail to diagnose why a workflow, jo
If you attempt to cancel a workflow and the cancellation doesn't succeed, make sure you aren't using the `always` expression. The `always` expression causes a workflow step to run even when the workflow is canceled, which results in a hanging cancellation. For more information, see "[AUTOTITLE](/actions/learn-github-actions/expressions#always)".
+{% ifversion actions-metrics %}
+
+## Troubleshooting {% data variables.product.prodname_actions %} inefficiencies
+
+To analyze the inefficiencies and reliability of your workflows using metrics, see "[AUTOTITLE](/actions/administering-github-actions/viewing-github-actions-metrics)".
+{% endif %}
+
+## Monitoring self-hosted runners
+
## Troubleshooting self-hosted runners
If you use self-hosted runners, you can view their activity and diagnose common issues.
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect.md
index 07e11574f9ba..5e948e5730bc 100644
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect.md
+++ b/content/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect.md
@@ -497,6 +497,23 @@ To enable and configure OIDC for another cloud provider, see the following guide
* "[AUTOTITLE](/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers)"
+{% ifversion ghec %}
+
+### Following these guides on {% data variables.enterprise.data_residency_site %}
+
+If you are part of an enterprise that uses {% data variables.enterprise.data_residency %} and you're setting up OIDC on {% data variables.enterprise.data_residency_site %}, you must **substitute certain values** in the linked articles.
+
+* Your provider's expected claim must substitute `githubusercontent.com` with `{% data variables.enterprise.data_residency_domain %}`, where SUBDOMAIN is your enterprise's subdomain on {% data variables.enterprise.data_residency_site %}.
+* For any URLs that include a route with your enterprise's name or slug, you must substitute your enterprise's subdomain on {% data variables.enterprise.data_residency_site %}.
+
+For example, if your subdomain is `octocorp`, the following substitutions apply:
+
+* The URL for seeing all the claims supported by {% data variables.product.company_short %}'s OIDC provider would be `https://token.actions.octocorp.ghe.com/.well-known/openid-configuration`.
+* The value of `iss` in your OIDC token would be `https://token.actions.octocorp.ghe.com`.
+* The enterprise can receive tokens at `https://token.actions.octocorp.ghe.com/octocorp`, and the REST API endpoint for customizing the `issuer` value would be `/enterprises/octocorp/actions/oidc/customization/issuer`.
+
+{% endif %}
+
## Debugging your OIDC claims
You can use the [`github/actions-oidc-debugger`](https://github.com/github/actions-oidc-debugger) action to visualize the claims that would be sent, before integrating with a cloud provider. This action requests a JWT and prints the claims included within the JWT that were received from {% data variables.product.prodname_actions %}.
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md
index 89f563ca3da4..67b9380663bc 100644
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md
+++ b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md
@@ -29,6 +29,8 @@ This guide explains how to configure AWS to trust {% data variables.product.prod
{% data reusables.actions.oidc-security-notice %}
+{% data reusables.actions.oidc-on-ghecom %}
+
{% ifversion ghes %}
{% data reusables.actions.oidc-endpoints %}
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-azure.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-azure.md
index 6cb1a1b8231e..c17355077ce7 100644
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-azure.md
+++ b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-azure.md
@@ -27,6 +27,8 @@ This guide gives an overview of how to configure Azure to trust {% data variable
{% data reusables.actions.oidc-security-notice %}
+{% data reusables.actions.oidc-on-ghecom %}
+
{% ifversion ghes %}
{% data reusables.actions.oidc-endpoints %}
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers.md
index cd2c49289528..4f34c460273f 100644
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers.md
+++ b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers.md
@@ -27,6 +27,8 @@ To use OIDC, you will first need to configure your cloud provider to trust {% da
{% data reusables.actions.oidc-security-notice %}
+{% data reusables.actions.oidc-on-ghecom %}
+
## Updating your {% data variables.product.prodname_actions %} workflow
To update your workflows for OIDC, you will need to make two changes to your YAML:
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform.md
index 9494d7c64bb4..c8c024f983ad 100644
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform.md
+++ b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform.md
@@ -12,7 +12,7 @@ topics:
redirect_from:
- /actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform
---
-
+
{% data reusables.actions.enterprise-github-hosted-runners %}
## Overview
@@ -27,6 +27,8 @@ This guide gives an overview of how to configure GCP to trust {% data variables.
{% data reusables.actions.oidc-security-notice %}
+{% data reusables.actions.oidc-on-ghecom %}
+
## Adding a Google Cloud Workload Identity Provider
To configure the OIDC identity provider in GCP, you will need to perform the following configuration. For instructions on making these changes, refer to [the GCP documentation](https://github.com/google-github-actions/auth).
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault.md
index d04d9ef644e3..27569033f54f 100644
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault.md
+++ b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault.md
@@ -12,7 +12,7 @@ topics:
redirect_from:
- /actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault
---
-
+
{% data reusables.actions.enterprise-github-hosted-runners %}
## Overview
@@ -27,6 +27,8 @@ This guide gives an overview of how to configure HashiCorp Vault to trust {% dat
{% data reusables.actions.oidc-security-notice %}
+{% data reusables.actions.oidc-on-ghecom %}
+
## Adding the identity provider to HashiCorp Vault
To use OIDC with HashiCorp Vault, you will need to add a trust configuration for the {% data variables.product.prodname_dotcom %} OIDC provider. For more information, see the HashiCorp Vault [documentation](https://www.vaultproject.io/docs/auth/jwt).
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md
index 8504d41b99b3..031a5cbf6810 100644
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md
+++ b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md
@@ -29,6 +29,8 @@ For an example {% data variables.product.prodname_actions %} workflow using the
{% data reusables.actions.oidc-security-notice %}
+{% data reusables.actions.oidc-on-ghecom %}
+
* To be secure, you need to set a Claims JSON in JFrog when configuring identity mappings. For more information, see "[AUTOTITLE](https://jfrog.com/help/r/jfrog-platform-administration-documentation/configure-identity-mappings)" and "[AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#customizing-the-token-claims)."
For example, you can set `iss` to `https://token.actions.githubusercontent.com`, and the `repository` to something like "octo-org/octo-repo"`. This will ensure only Actions workflows from the specified repository will have access to your JFrog platform. The following is an example Claims JSON when configuring identity mappings.
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi.md
index 3f465f74efd0..17cc80c42ba6 100644
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi.md
+++ b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi.md
@@ -25,6 +25,8 @@ This guide gives an overview of how to configure PyPI to trust {% data variables
{% data reusables.actions.oidc-security-notice %}
+{% data reusables.actions.oidc-on-ghecom %}
+
## Adding the identity provider to PyPI
To use OIDC with PyPI, add a trust configuration that links each project on PyPI to each repository and workflow combination that's allowed to publish for it.
diff --git a/content/actions/security-for-github-actions/using-artifact-attestations/enforcing-artifact-attestations-with-a-kubernetes-admission-controller.md b/content/actions/security-for-github-actions/using-artifact-attestations/enforcing-artifact-attestations-with-a-kubernetes-admission-controller.md
index 7bca4f67bd7e..c4002e43e636 100644
--- a/content/actions/security-for-github-actions/using-artifact-attestations/enforcing-artifact-attestations-with-a-kubernetes-admission-controller.md
+++ b/content/actions/security-for-github-actions/using-artifact-attestations/enforcing-artifact-attestations-with-a-kubernetes-admission-controller.md
@@ -111,7 +111,7 @@ Note that any image you intend to admit _must_ have a matching glob pattern in t
{% ifversion ghec %}
-If your GitHub Enterprise account has a subdomain on GHE.com, you must specify a value for the GitHub trust domain. This value is used to fetch the trusted materials associated with the data residency region that hosts your GitHub Enterprise account. This value can be found by logging into your enterprise account with the `gh` CLI tool and running the following command:
+If your GitHub Enterprise account has a subdomain on {% data variables.enterprise.data_residency_site %}, you must specify a value for the GitHub trust domain. This value is used to fetch the trusted materials associated with the data residency region that hosts your GitHub Enterprise account. This value can be found by logging into your enterprise account with the `gh` CLI tool and running the following command:
```bash copy
gh api meta --jq .domains.artifact_attestations.trust_domain
diff --git a/content/actions/sharing-automations/creating-actions/about-custom-actions.md b/content/actions/sharing-automations/creating-actions/about-custom-actions.md
index 9724823376cb..69504cfc70bd 100644
--- a/content/actions/sharing-automations/creating-actions/about-custom-actions.md
+++ b/content/actions/sharing-automations/creating-actions/about-custom-actions.md
@@ -17,7 +17,7 @@ topics:
- Action development
- Fundamentals
---
-
+
{% data reusables.actions.enterprise-github-hosted-runners %}
## About custom actions
@@ -76,14 +76,18 @@ Storing an action in its own repository makes it easier for the {% data variable
{% ifversion fpt or ghec %}If you're building an action that you don't plan to make available to others, you {% else %} You{% endif %} can store the action's files in any location in your repository. If you plan to combine action, workflow, and application code in a single repository, we recommend storing actions in the `.github` directory. For example, `.github/actions/action-a` and `.github/actions/action-b`.
-## Compatibility with {% data variables.product.prodname_ghe_server %}
+## Ensuring compatibility with other platforms
+
+Many people access {% data variables.product.github %} at a domain other than {% data variables.product.prodname_dotcom_the_website %}, such as {% data variables.enterprise.data_residency_site %} or a custom domain for {% data variables.product.prodname_ghe_server %}.
+
+To ensure that your action is compatible with other platforms, do not use any hard-coded references to API URLs such as `https://api.github.com`. Instead, you can:
-To ensure that your action is compatible with {% data variables.product.prodname_ghe_server %}, you should make sure that you do not use any hard-coded references to {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.product.product_name %}{% endif %} API URLs. You should instead use environment variables to refer to the {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.product.product_name %}{% endif %} API:
+* Use environment variables (see "[AUTOTITLE](/actions/learn-github-actions/variables#default-environment-variables)"):
-* For the REST API, use the `GITHUB_API_URL` environment variable.
-* For GraphQL, use the `GITHUB_GRAPHQL_URL` environment variable.
+ * For the REST API, use the `GITHUB_API_URL` environment variable.
+ * For GraphQL, use the `GITHUB_GRAPHQL_URL` environment variable.
-For more information, see "[AUTOTITLE](/actions/learn-github-actions/variables#default-environment-variables)."
+* Use a toolkit such as [`@actions/github`](https://github.com/actions/toolkit/tree/main/packages/github), which can automatically set the correct URLs.
## Using release management for actions
diff --git a/content/actions/use-cases-and-examples/building-and-testing/building-and-testing-xamarin-applications.md b/content/actions/use-cases-and-examples/building-and-testing/building-and-testing-xamarin-applications.md
index 4b93211e6646..be1952bc746e 100644
--- a/content/actions/use-cases-and-examples/building-and-testing/building-and-testing-xamarin-applications.md
+++ b/content/actions/use-cases-and-examples/building-and-testing/building-and-testing-xamarin-applications.md
@@ -18,7 +18,7 @@ topics:
- iOS
shortTitle: Build & test Xamarin apps
---
-
+
{% data reusables.actions.enterprise-github-hosted-runners %}
## Introduction
@@ -35,6 +35,12 @@ We recommend that you have a basic understanding of Xamarin, .NET Core SDK, YAML
* "[Getting started with .NET](https://dotnet.microsoft.com/learn)"
* "[Learn Xamarin](https://dotnet.microsoft.com/learn/xamarin)"
+{% ifversion ghec %}
+
+To use the examples in the guide, you will need a repository on {% data variables.product.prodname_dotcom_the_website %}. {% data reusables.actions.macos-unavailable-ghecom %}
+
+{% endif %}
+
## Building Xamarin.iOS apps
The example below demonstrates how to change the default Xamarin SDK versions and build a Xamarin.iOS application.
@@ -54,7 +60,7 @@ jobs:
- name: Set default Xamarin SDK versions
run: |
$VM_ASSETS/select-xamarin-sdk-v2.sh --mono=6.12 --ios=14.10
-
+
- name: Set default Xcode 12.3
run: |
XCODE_ROOT=/Applications/Xcode_12.3.0.app
diff --git a/content/actions/writing-workflows/choosing-what-your-workflow-does/using-pre-written-building-blocks-in-your-workflow.md b/content/actions/writing-workflows/choosing-what-your-workflow-does/using-pre-written-building-blocks-in-your-workflow.md
index fb94cd9663bf..ef9c9203dd3a 100644
--- a/content/actions/writing-workflows/choosing-what-your-workflow-does/using-pre-written-building-blocks-in-your-workflow.md
+++ b/content/actions/writing-workflows/choosing-what-your-workflow-does/using-pre-written-building-blocks-in-your-workflow.md
@@ -42,6 +42,8 @@ The actions you use in your workflow can be defined in:
{% data reusables.actions.enterprise-marketplace-actions %}
+{% data reusables.actions.actions-marketplace-ghecom %}
+
{% ifversion fpt or ghec %}
## Browsing Marketplace actions in the workflow editor
@@ -99,6 +101,10 @@ jobs:
uses: {% data reusables.actions.action-setup-node %}
```
+{% ifversion ghec or ghes %}
+If {% ifversion ghec %}you're on {% data variables.enterprise.data_residency_site %}{% elsif ghes %}an enterprise owner has enabled access to actions on {% data variables.product.prodname_dotcom_the_website %}{% endif %}, you can use this syntax to reference actions either within your enterprise or on {% data variables.product.prodname_dotcom_the_website %}. {% data variables.product.prodname_actions %} will look for the action in your enterprise first, then fall back to {% data variables.product.prodname_dotcom_the_website %}.
+{% endif %}
+
### Referencing a container on Docker Hub
If an action is defined in a published Docker container image on Docker Hub, you must reference the action with the `docker://{image}:{tag}` syntax in your workflow file. To protect your code and data, we strongly recommend you verify the integrity of the Docker container image from Docker Hub before using it in your workflow.
diff --git a/content/admin/configuring-settings/configuring-github-connect/about-github-connect.md b/content/admin/configuring-settings/configuring-github-connect/about-github-connect.md
index a674eca72851..cb8635f296d2 100644
--- a/content/admin/configuring-settings/configuring-github-connect/about-github-connect.md
+++ b/content/admin/configuring-settings/configuring-github-connect/about-github-connect.md
@@ -1,6 +1,6 @@
---
title: About GitHub Connect
-intro: '{% data variables.product.prodname_github_connect %} enhances {% data variables.product.product_name %} by giving you access to additional features and workflows that rely on the power of {% data variables.product.prodname_dotcom_the_website %}.'
+intro: '{% data variables.product.prodname_github_connect %} enhances {% data variables.product.product_name %} by giving you access to data and workflows from {% data variables.product.prodname_ghe_cloud %}.'
versions:
ghes: '*'
type: overview
@@ -11,40 +11,69 @@ redirect_from:
- /admin/configuration/configuring-github-connect/about-github-connect
---
-## About {% data variables.product.prodname_github_connect %}
+{% data variables.product.prodname_github_connect %} allows {% data variables.location.product_location %} to connect to your enterprise on {% data variables.product.prodname_ghe_cloud %} in limited ways.
-{% data variables.product.prodname_github_connect %} enhances {% data variables.product.product_name %} by allowing {% data variables.location.product_location %} to benefit from the power of {% data variables.product.prodname_dotcom_the_website %} in limited ways. After you enable {% data variables.product.prodname_github_connect %}, you can enable additional features and workflows that rely on {% data variables.product.prodname_dotcom_the_website %}, such as {% data variables.product.prodname_dependabot_alerts %} for security vulnerabilities that are tracked in the {% data variables.product.prodname_advisory_database %}.
+After you enable {% data variables.product.prodname_github_connect %}, you can choose which features to enable. For example, you can:
-{% data variables.product.prodname_github_connect %} does not open {% data variables.location.product_location %} to the public internet. None of your enterprise's private data is exposed to {% data variables.product.prodname_dotcom_the_website %} users. Instead, {% data variables.product.prodname_github_connect %} transmits only the limited data needed for the individual features you choose to enable. Unless you enable license sync, no personal data is transmitted by {% data variables.product.prodname_github_connect %}. For more information about what data is transmitted by {% data variables.product.prodname_github_connect %}, see "[Data transmission for {% data variables.product.prodname_github_connect %}](#data-transmission-for-github-connect)."
+* Automatically sync license usage between environments
+* Unify search results and user contribution data
+* Enable features that rely on {% data variables.product.prodname_dotcom_the_website %}, such as {% data variables.product.prodname_dependabot_alerts %} for security vulnerabilities that are tracked in the {% data variables.product.prodname_advisory_database %}
-Enabling {% data variables.product.prodname_github_connect %} will not allow {% data variables.product.prodname_dotcom_the_website %} users to make changes to {% data variables.product.product_name %}.
+## About the connection
-To enable {% data variables.product.prodname_github_connect %}, you configure a connection between {% data variables.location.product_location %} and enterprise account on {% data variables.product.prodname_dotcom_the_website %} that uses {% data variables.product.prodname_ghe_cloud %}. {% data reusables.github-connect.connection-port-protocol %} For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/managing-github-connect)."
+To enable {% data variables.product.prodname_github_connect %}, you configure a connection between {% data variables.location.product_location %} and an enterprise account on **{% data variables.product.prodname_dotcom_the_website %}**{% ifversion ghecom-github-connect %} or **{% data variables.enterprise.data_residency_site %}**{% endif %}. {% data reusables.github-connect.connection-port-protocol %}
-After enabling {% data variables.product.prodname_github_connect %}, you will be able to enable features such as {% ifversion ghes %}automatic user license sync and {% endif %}{% data variables.product.prodname_dependabot_alerts %}. For more information about all of the features available, see "[{% data variables.product.prodname_github_connect %} features](#github-connect-features)."
+* {% data variables.product.prodname_github_connect %} does not open {% data variables.location.product_location %} to the public internet.
+* None of your enterprise's private data is exposed to {% data variables.product.prodname_ghe_cloud %} users.
+* {% data variables.product.prodname_github_connect %} transmits only the limited data needed for the features you enable. Unless you enable license sync, no personal data is transmitted. For more information, see "[Data transmission](#data-transmission)."
+* Enabling {% data variables.product.prodname_github_connect %} will not allow {% data variables.product.prodname_ghe_cloud %} users to make changes to {% data variables.product.product_name %}.
## {% data variables.product.prodname_github_connect %} features
-After you configure the connection between {% data variables.location.product_location %} and {% data variables.product.prodname_ghe_cloud %}, you can enable individual features of {% data variables.product.prodname_github_connect %} for your enterprise.
+After you configure the connection between {% data variables.location.product_location %} and {% data variables.product.prodname_ghe_cloud %}, you can enable individual features of {% data variables.product.prodname_github_connect %}.
+
+{% ifversion ghecom-github-connect %}
+If you're connecting to an enterprise on {% data variables.enterprise.data_residency_site %}, features that rely on data from {% data variables.product.prodname_dotcom_the_website %} are not available.
+
+* [Connections to {% data variables.product.prodname_dotcom_the_website %}](#connections-to-githubcom)
+* [Connections to {% data variables.enterprise.data_residency_site %}](#connections-to-ghecom)
+
+### Connections to {% data variables.product.prodname_dotcom_the_website %}
+
+{% endif %}
| Feature | Description | More information |
| ----------- | ----------- | ----------- |
-| Automatic user license sync | Manage license usage across your {% data variables.product.prodname_enterprise %} deployments by automatically syncing user licenses from {% data variables.location.product_location %} to {% data variables.product.prodname_ghe_cloud %}. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise)" |
+{% data reusables.github-connect.license-sync %}
| {% data variables.product.prodname_dependabot %} | Allow users to find and fix vulnerabilities in code dependencies. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)" |
| {% data variables.product.prodname_dotcom_the_website %} actions | Allow users to use actions from {% data variables.product.prodname_dotcom_the_website %} in public workflow files. | "[AUTOTITLE](/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect)" |
| {% ifversion server-statistics %} |
| {% data variables.product.prodname_server_statistics %} | Analyze your own aggregate data from GitHub Enterprise Server, and help us improve GitHub products. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-server-statistics-for-your-enterprise)" |
| {% endif %} |
-| Unified search | Allow users to include repositories on {% data variables.product.prodname_dotcom_the_website %} in their search results when searching from {% data variables.location.product_location %}. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-unified-search-for-your-enterprise)" |
-| Unified contributions | Allow users to include anonymized contribution counts for their work on {% data variables.location.product_location %} in their contribution graphs on {% data variables.product.prodname_dotcom_the_website %}. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-unified-contributions-for-your-enterprise)" |
+{% data reusables.github-connect.unified-search %}
+{% data reusables.github-connect.unified-contributions %}
+
+{% ifversion ghecom-github-connect %}
+
+### Connections to {% data variables.enterprise.data_residency_site %}
+
+| Feature | Description | More information |
+| ----------- | ----------- | ----------- |
+| {% ifversion ghecom-license-sync %} |
+{% data reusables.github-connect.license-sync %}
+| {% endif %} |
+{% data reusables.github-connect.unified-search %}
+{% data reusables.github-connect.unified-contributions %}
-## Data transmission for {% data variables.product.prodname_github_connect %}
+{% endif %}
+
+## Data transmission
When {% data variables.product.prodname_github_connect %} is enabled, a record on {% data variables.product.prodname_ghe_cloud %} stores information about the connection. If you enable individual features of {% data variables.product.prodname_github_connect %}, additional data is transmitted.
{% note %}
-**Note:** No repositories, issues, or pull requests are ever transmitted from {% data variables.product.product_name %} to {% data variables.product.prodname_dotcom_the_website %} by {% data variables.product.prodname_github_connect %}.
+**Note:** No repositories, issues, or pull requests are ever transmitted from {% data variables.product.product_name %} to {% data variables.product.prodname_ghe_cloud %} by {% data variables.product.prodname_github_connect %}.
{% endnote %}
@@ -86,9 +115,20 @@ Additional data is transmitted if you enable individual features of {% data vari
| {% ifversion server-statistics %} |
| {% data variables.product.prodname_server_statistics %} | Aggregate metrics about your usage of {% data variables.product.prodname_ghe_server %}. For the complete list of metrics, see "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/analyzing-how-your-team-works-with-server-statistics/about-server-statistics#server-statistics-data-collected)." | From {% data variables.product.product_name %} to {% data variables.product.prodname_ghe_cloud %} | {% data variables.product.prodname_ghe_cloud %} |
| {% endif %} |
-| Unified search | Search terms, search results | From {% data variables.product.prodname_dotcom_the_website %} to {% data variables.product.product_name %}
From {% data variables.product.product_name %} to {% data variables.product.prodname_dotcom_the_website %} | {% data variables.product.product_name %} |
-| Unified contributions | Contribution counts | From {% data variables.product.product_name %} to {% data variables.product.prodname_dotcom_the_website %} | {% data variables.product.prodname_dotcom_the_website %} |
+| Unified search | Search terms, search results | From {% data variables.product.prodname_ghe_cloud %} to {% data variables.product.product_name %}
From {% data variables.product.product_name %} to {% data variables.product.prodname_ghe_cloud %} | {% data variables.product.product_name %} |
+| Unified contributions | Contribution counts | From {% data variables.product.product_name %} to {% data variables.product.prodname_ghe_cloud %} | {% data variables.product.prodname_ghe_cloud %} |
+
+## Enabling {% data variables.product.prodname_github_connect %}
+
+{% ifversion ghecom-github-connect %}
+
+To enable {% data variables.product.prodname_github_connect %}, see the article for your {% data variables.product.prodname_ghe_cloud %} environment.
+
+* "[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom)"
+* "[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom)"
+
+{% else %}
-## Further reading
+To enable {% data variables.product.prodname_github_connect %}, see "[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom)."
-* "[AUTOTITLE](/graphql/guides/managing-enterprise-accounts)" in the GraphQL API documentation
+{% endif %}
diff --git a/content/admin/configuring-settings/configuring-github-connect/disabling-github-connect.md b/content/admin/configuring-settings/configuring-github-connect/disabling-github-connect.md
new file mode 100644
index 000000000000..afa0e4f8b2e3
--- /dev/null
+++ b/content/admin/configuring-settings/configuring-github-connect/disabling-github-connect.md
@@ -0,0 +1,15 @@
+---
+title: Disabling GitHub Connect
+shortTitle: Disable GitHub Connect
+intro: 'You can disable {% data variables.product.prodname_github_connect %} to stop the connection from {% data variables.location.product_location %} to {% data variables.product.prodname_ghe_cloud %}.'
+versions:
+ ghes: '*'
+permissions: 'Enterprise owners'
+---
+
+When you disconnect from {% data variables.product.prodname_ghe_cloud %}, the {% data variables.product.prodname_github_connect %} {% data variables.product.prodname_github_app %} is deleted from your enterprise account and credentials stored on {% data variables.location.product_location %} are deleted.
+
+{% data reusables.enterprise-accounts.access-enterprise %}
+{% data reusables.enterprise-accounts.github-connect-tab %}
+1. Under "{% data variables.product.prodname_github_connect %}", to the right of the enterprise account you'd like to disconnect, click **Disable {% data variables.product.prodname_github_connect %}**.
+1. Read the information about disconnection, then click **Disable {% data variables.product.prodname_github_connect %}**.
diff --git a/content/admin/configuring-settings/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise.md b/content/admin/configuring-settings/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise.md
index 678d403d7cb9..b5a6db4e1175 100644
--- a/content/admin/configuring-settings/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise.md
+++ b/content/admin/configuring-settings/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise.md
@@ -22,9 +22,9 @@ shortTitle: Automatic user license sync
{% data reusables.enterprise-licensing.unique-user-licensing-model %}
-{% data reusables.enterprise-licensing.about-license-sync %} For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/about-github-connect#data-transmission-for-github-connect)."
+{% data reusables.enterprise-licensing.about-license-sync %} For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/about-github-connect#data-transmission)."
-If you enable automatic user license sync for your enterprise, {% data variables.product.prodname_github_connect %} will automatically synchronize license usage between {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %} weekly.{% ifversion ghes %} You can also synchronize your license data at any time outside of the automatic weekly sync, by manually triggering a license sync job. For more information, see "[AUTOTITLE](/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud#triggering-a-license-sync-job)."{% endif %}
+If you enable automatic user license sync for your enterprise, every week, {% data variables.product.prodname_github_connect %} will automatically synchronize license usage between {% data variables.product.prodname_ghe_server %} and your enterprise on {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-license-sync %} or {% data variables.enterprise.data_residency_site %}{% endif %}. You can also synchronize your license data at any time outside of the automatic weekly sync, by manually triggering a license sync job. For more information, see "[AUTOTITLE](/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud#triggering-a-license-sync-job)."
If you use multiple {% data variables.product.prodname_ghe_server %} instances, you can enable automatic license sync between each of your instances and the same enterprise account on {% data variables.product.prodname_ghe_cloud %}.
@@ -36,7 +36,7 @@ You can also manually upload {% data variables.product.prodname_ghe_server %} us
## Enabling license synchronization
-Before enabling license synchronization on {% data variables.location.product_location %}, you must enable {% data variables.product.prodname_github_connect %}. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/managing-github-connect)."
+Before enabling license synchronization on {% data variables.location.product_location %}, you must enable {% data variables.product.prodname_github_connect %}. See {% ifversion ghecom-license-sync %}"[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom) or {% endif %}"[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom)."
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.github-connect-tab %}
diff --git a/content/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom.md b/content/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom.md
new file mode 100644
index 000000000000..48530404b30f
--- /dev/null
+++ b/content/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom.md
@@ -0,0 +1,82 @@
+---
+title: Enabling GitHub Connect for GHE.com
+shortTitle: Enable for GHE.com
+intro: 'Enable {% data variables.product.prodname_github_connect %} to share data between {% data variables.enterprise.data_residency_site %} and {% data variables.location.product_location %}.'
+versions:
+ feature: ghecom-github-connect
+---
+
+You can access additional features and workflows on {% data variables.location.product_location %} by enabling {% data variables.product.prodname_github_connect %}. See "[AUTOTITLE](/admin/configuration/configuring-github-connect/about-github-connect)."
+
+On {% data variables.enterprise.data_residency_site %}, {% data variables.product.prodname_github_connect %} features do not include any functionality that relies on resources on {% data variables.product.prodname_dotcom_the_website %}.
+
+## What happens when {% data variables.product.prodname_github_connect %} is enabled?
+
+{% data reusables.github-connect.what-happens-when-enabled %}
+
+## Prerequisites
+
+* **Administrative access:** You need administrative access to both an enterprise account on {% data variables.enterprise.data_residency_site %} and a {% data variables.product.prodname_ghe_server %} instance.
+* **Version requirement:** Your {% data variables.product.prodname_ghe_server %} instance must run {% data variables.product.prodname_ghe_server %} 3.12 or later.
+* **Proxy configuration**: If using a proxy server, allow connectivity to the following {% data variables.enterprise.data_residency_site %} hostnames (replace SUBDOMAIN with your enterprise's subdomain).
+
+ * `{% data variables.enterprise.data_residency_domain %}`
+ * `{% data variables.enterprise.data_residency_api %}`
+ * `uploads.{% data variables.enterprise.data_residency_domain %}`
+
+ See "[AUTOTITLE](/admin/configuration/configuring-network-settings/configuring-an-outbound-web-proxy-server)."
+
+## Step 1: Enable connection to {% data variables.enterprise.data_residency_site %}
+
+By default, {% data variables.product.prodname_github_connect %} connects {% data variables.product.prodname_ghe_server %} to {% data variables.product.prodname_dotcom_the_website %}. You must enable your instance to connect to your enterprise's subdomain of {% data variables.enterprise.data_residency_site %}.
+
+To enable the connection, someone with administrative SSH access to {% data variables.location.product_location_enterprise %} must complete the following tasks.
+
+{% data reusables.enterprise_installation.ssh-into-instance %}
+1. To enable your instance to connect to {% data variables.enterprise.data_residency_site %} for {% data variables.product.prodname_github_connect %}, run the following command. Replace SUBDOMAIN with the subdomain for your enterprise on {% data variables.enterprise.data_residency_site %}, for example `octocorp`.
+
+ ```shell copy
+ ghe-config app.github.github-connect-ghe-com-enabled true
+ ghe-config app.github.github-connect-ghe-com-subdomain "SUBDOMAIN"
+ ```
+
+1. To apply the configuration, run the following command.
+
+ >[!NOTE] During a configuration run, services on {% data variables.location.product_location_enterprise %} may restart, which can cause brief downtime for users.
+
+ ```shell copy
+ ghe-config-apply
+ ```
+
+After the run completes, you can configure {% data variables.product.prodname_github_connect %}.
+
+## Step 2: Enable {% data variables.product.prodname_github_connect %}
+
+To enable {% data variables.product.prodname_github_connect %}, you must be an enterprise owner on both {% data variables.product.product_name %} and {% data variables.product.prodname_ghe_cloud %}.
+
+People with a user account in both environments can connect the accounts from {% data variables.location.product_location_enterprise %}.
+
+1. Sign in to {% data variables.location.product_location %} and {% data variables.enterprise.data_residency_site %}.
+{% data reusables.github-connect.enable-github-connect %}
+1. Choose which individual features of {% data variables.product.prodname_github_connect %} you want to enable. See "[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/about-github-connect#github-connect-features)."
+
+## Reenabling connections to {% data variables.product.prodname_dotcom_the_website %}
+
+If you need to reenable {% data variables.product.prodname_github_connect %} for {% data variables.product.prodname_dotcom_the_website %}, you must reconfigure your settings.
+
+{% data reusables.enterprise_installation.ssh-into-instance %}
+1. Run the following command.
+
+ ```shell copy
+ ghe-config app.github.github-connect-ghe-com-enabled false
+ ```
+
+1. To apply the configuration, run the following command.
+
+ >[!NOTE] During a configuration run, services on {% data variables.location.product_location_enterprise %} may restart, which can cause brief downtime for users.
+
+ ```shell copy
+ ghe-config-apply
+ ```
+
+1. Enable {% data variables.product.prodname_github_connect %} on {% data variables.product.prodname_dotcom_the_website %}. See "[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom)."
diff --git a/content/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom.md b/content/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom.md
new file mode 100644
index 000000000000..b42cbb036936
--- /dev/null
+++ b/content/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom.md
@@ -0,0 +1,47 @@
+---
+title: Enabling GitHub Connect for GitHub.com
+shortTitle: Enable for GitHub.com
+intro: 'Enable {% data variables.product.prodname_github_connect %} to access additional features and workflows from {% data variables.product.prodname_dotcom_the_website %} on {% data variables.location.product_location %}.'
+redirect_from:
+ - /enterprise/admin/guides/developer-workflow/connecting-github-enterprise-to-github-com
+ - /enterprise/admin/guides/developer-workflow/connecting-github-enterprise-server-to-github-com
+ - /enterprise/admin/developer-workflow/connecting-github-enterprise-server-to-githubcom
+ - /enterprise/admin/installation/connecting-github-enterprise-server-to-github-enterprise-cloud
+ - /enterprise/admin/configuration/connecting-github-enterprise-server-to-github-enterprise-cloud
+ - /admin/configuration/connecting-github-enterprise-server-to-github-enterprise-cloud
+ - /admin/configuration/managing-connections-between-github-enterprise-server-and-github-enterprise-cloud/connecting-github-enterprise-server-to-github-enterprise-cloud
+ - /admin/configuration/managing-connections-between-your-enterprise-accounts/connecting-your-enterprise-account-to-github-enterprise-cloud
+ - /admin/configuration/configuring-github-connect/managing-github-connect
+ - /admin/configuring-settings/configuring-github-connect/managing-github-connect
+versions:
+ ghes: '*'
+type: how_to
+topics:
+ - Enterprise
+ - GitHub Connect
+ - Infrastructure
+ - Networking
+---
+
+You can access additional features and workflows on {% data variables.location.product_location %} by enabling {% data variables.product.prodname_github_connect %}. See "[AUTOTITLE](/admin/configuration/configuring-github-connect/about-github-connect)."
+
+## What happens when {% data variables.product.prodname_github_connect %} is enabled?
+
+{% data reusables.github-connect.what-happens-when-enabled %}
+
+## Prerequisites
+
+* You must have an enterprise account on {% data variables.product.prodname_dotcom_the_website %} that uses {% data variables.product.prodname_ghe_cloud %}.
+* Your enterprise account on {% data variables.product.prodname_dotcom_the_website %} must be invoiced. Enterprise accounts on the free trial of {% data variables.product.prodname_ghe_cloud %} or that pay by credit card cannot be connected to {% data variables.location.product_location %}.
+* If your enterprise account on {% data variables.product.prodname_dotcom_the_website %} uses IP allow lists, you must add the IP address or network for {% data variables.location.product_location %} to your IP allow list. See "[AUTOTITLE](/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-allowed-ip-addresses-for-organizations-in-your-enterprise)" in the {% data variables.product.prodname_ghe_cloud %} documentation.
+* To configure a connection, your proxy configuration must allow connectivity to `github.com`, `api.github.com`, and `uploads.github.com`. For more information, see "[AUTOTITLE](/admin/configuration/configuring-network-settings/configuring-an-outbound-web-proxy-server)."
+{%- ifversion ghecom-github-connect %}
+* If you have previously enabled {% data variables.product.prodname_github_connect %} for an enterprise on {% data variables.enterprise.data_residency_site %}, you must change your configuration to allow connections to {% data variables.product.prodname_dotcom_the_website %}. See "[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom#reenabling-connections-to-githubcom)."
+{%- endif %}
+
+## Enabling {% data variables.product.prodname_github_connect %}
+
+To enable {% data variables.product.prodname_github_connect %}, you must be an enterprise owner on both {% data variables.product.product_name %} and {% data variables.product.prodname_ghe_cloud %}.
+
+1. Sign in to {% data variables.location.product_location %} and {% data variables.product.prodname_dotcom_the_website %}.
+{% data reusables.github-connect.enable-github-connect %}
diff --git a/content/admin/configuring-settings/configuring-github-connect/enabling-unified-contributions-for-your-enterprise.md b/content/admin/configuring-settings/configuring-github-connect/enabling-unified-contributions-for-your-enterprise.md
index 1b29c83d6b9b..63c26f59a6f4 100644
--- a/content/admin/configuring-settings/configuring-github-connect/enabling-unified-contributions-for-your-enterprise.md
+++ b/content/admin/configuring-settings/configuring-github-connect/enabling-unified-contributions-for-your-enterprise.md
@@ -1,7 +1,7 @@
---
title: Enabling unified contributions for your enterprise
shortTitle: Unified contributions
-intro: 'You can allow users to include anonymized contribution counts for their work on {% data variables.location.product_location %} in their contribution graphs on {% data variables.product.prodname_dotcom_the_website %}.'
+intro: 'You can allow users to include anonymized contribution counts for their work on {% data variables.location.product_location %} in their contribution graphs on {% data variables.product.prodname_ghe_cloud %}.'
redirect_from:
- /enterprise/admin/guides/developer-workflow/enabling-unified-contributions-between-github-enterprise-and-github-com
- /enterprise/admin/guides/developer-workflow/enabling-unified-contributions-between-github-enterprise-server-and-github-com
@@ -12,7 +12,7 @@ redirect_from:
- /admin/configuration/managing-connections-between-github-enterprise-server-and-github-enterprise-cloud/enabling-unified-contributions-between-github-enterprise-server-and-githubcom
- /admin/configuration/managing-connections-between-your-enterprise-accounts/enabling-unified-contributions-between-your-enterprise-account-and-githubcom
- /admin/configuration/configuring-github-connect/enabling-unified-contributions-for-your-enterprise
-permissions: 'Enterprise owners can enable unified contributions between {% data variables.location.product_location %} and {% data variables.product.prodname_dotcom_the_website %}.'
+permissions: 'Enterprise owners'
versions:
ghes: '*'
type: how_to
@@ -23,31 +23,27 @@ topics:
## About unified contributions
-As an enterprise owner, you can allow end users to send anonymized contribution counts for their work from {% data variables.location.product_location %} to their {% data variables.product.prodname_dotcom_the_website %} contribution graph.
+As an enterprise owner, you can allow end users to send anonymized contribution counts for their work from {% data variables.location.product_location %} to their contribution graph on {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-github-connect %} or {% data variables.enterprise.data_residency_site %}{% endif %}.
-After you enable {% data variables.enterprise.prodname_unified_contributions %}, before individual users can send contribution counts from {% data variables.location.product_location %} to {% data variables.product.prodname_dotcom_the_website %}, each user must also connect their user account on {% data variables.product.product_name %} with a personal account on {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile)."
+After you enable {% data variables.enterprise.prodname_unified_contributions %}, before individual users can send contribution counts from {% data variables.location.product_location %} to {% data variables.product.prodname_ghe_cloud %}, each user must also connect their user account on {% data variables.product.product_name %} with an account on {% data variables.product.prodname_ghe_cloud %}. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile)."
{% data reusables.github-connect.sync-frequency %}
-If the enterprise owner disables the functionality or individual users opt out of the connection, the contribution counts from {% data variables.product.product_name %} will be deleted on {% data variables.product.prodname_dotcom_the_website %}. If the user reconnects their profiles after disabling them, the contribution counts for the past 90 days are restored.
+If the enterprise owner disables the functionality or individual users opt out of the connection, the contribution counts from {% data variables.product.product_name %} will be deleted on {% data variables.product.prodname_ghe_cloud %}. If the user reconnects their profiles after disabling them, the contribution counts for the past 90 days are restored.
{% data variables.product.product_name %} **only** sends the contribution count and source ({% data variables.product.product_name %}) for connected users. It does not send any information about the contribution or how it was made.
## Enabling unified contributions
-Before enabling {% data variables.enterprise.prodname_unified_contributions %} on {% data variables.location.product_location %}, you must enable {% data variables.product.prodname_github_connect %}. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/managing-github-connect)."
+Before enabling {% data variables.enterprise.prodname_unified_contributions %} on {% data variables.location.product_location %}, you must enable {% data variables.product.prodname_github_connect %}. See {% ifversion ghecom-github-connect %}"[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom) or {% endif %}"[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom)."
-{% ifversion ghes %}
{% data reusables.github-connect.access-dotcom-and-enterprise %}
{% data reusables.enterprise_site_admin_settings.access-settings %}
{% data reusables.enterprise_site_admin_settings.business %}
-{% data reusables.enterprise-accounts.github-connect-tab %}{% else %}
-1. Sign in to {% data variables.location.product_location %} and {% data variables.product.prodname_dotcom_the_website %}.
-{% data reusables.enterprise-accounts.access-enterprise %}{% data reusables.enterprise-accounts.github-connect-tab %}{% endif %}
-1. To the right of "Unified contributions", click **Enable**.{% ifversion ghes %}
+{% data reusables.enterprise-accounts.github-connect-tab %}
+1. To the right of "Unified contributions", click **Enable**.
![Screenshot of the "Unified contributions" option on the GitHub Connect page. The "Enable" button is highlighted with an orange outline.](/assets/images/enterprise/site-admin-settings/dotcom-ghe-connection-request-access.png)
1. [Sign in](https://enterprise.github.com/login) to the {% data variables.product.prodname_ghe_server %} site to receive further instructions.
When you request access, we may redirect you to the {% data variables.product.prodname_ghe_server %} site to check your current terms of service.
-{% endif %}
diff --git a/content/admin/configuring-settings/configuring-github-connect/enabling-unified-search-for-your-enterprise.md b/content/admin/configuring-settings/configuring-github-connect/enabling-unified-search-for-your-enterprise.md
index 172b55e4f0d6..0f33a0d2123a 100644
--- a/content/admin/configuring-settings/configuring-github-connect/enabling-unified-search-for-your-enterprise.md
+++ b/content/admin/configuring-settings/configuring-github-connect/enabling-unified-search-for-your-enterprise.md
@@ -1,7 +1,7 @@
---
title: Enabling unified search for your enterprise
shortTitle: Unified search
-intro: 'You can allow users to include repositories on {% data variables.product.prodname_dotcom_the_website %} in their search results when searching from {% data variables.location.product_location %}.'
+intro: 'You can allow users to include repositories on {% data variables.product.prodname_ghe_cloud %} in their search results when searching from {% data variables.location.product_location %}.'
redirect_from:
- /enterprise/admin/guides/developer-workflow/enabling-unified-search-between-github-enterprise-and-github-com
- /enterprise/admin/guides/developer-workflow/enabling-unified-search-between-github-enterprise-server-and-github-com
@@ -12,7 +12,7 @@ redirect_from:
- /admin/configuration/managing-connections-between-github-enterprise-server-and-github-enterprise-cloud/enabling-unified-search-between-github-enterprise-server-and-githubcom
- /admin/configuration/managing-connections-between-your-enterprise-accounts/enabling-unified-search-between-your-enterprise-account-and-githubcom
- /admin/configuration/configuring-github-connect/enabling-unified-search-for-your-enterprise
-permissions: 'Enterprise owners can enable unified search between {% data variables.product.product_name %} and {% data variables.product.prodname_dotcom_the_website %}.'
+permissions: 'Enterprise owners'
versions:
ghes: '*'
type: how_to
@@ -24,27 +24,24 @@ topics:
## About {% data variables.enterprise.prodname_unified_search %}
-When you enable unified search, users can view search results from content on {% data variables.product.prodname_dotcom_the_website %} when searching from {% data variables.location.product_location %}.
+When you enable unified search, users can view search results from content on {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-github-connect %} or {% data variables.enterprise.data_residency_site %}{% endif %} when searching from {% data variables.location.product_location %}.
You can choose to allow search results for public repositories on {% data variables.product.prodname_dotcom_the_website %}, and you can separately choose to allow search results for private repositories on {% data variables.product.prodname_ghe_cloud %}. If you enable unified search for private repositories, users can only search private repositories that they have access to and that are owned by the connected enterprise account. For more information, see "[AUTOTITLE](/search-github/getting-started-with-searching-on-github/about-searching-on-github#searching-across-github-enterprise-and-githubcom-simultaneously)."
-Users will never be able to search {% data variables.location.product_location %} from {% data variables.product.prodname_dotcom_the_website %}, even if they have access to both environments.
+Users will never be able to search {% data variables.location.product_location %} from {% data variables.product.prodname_ghe_cloud %}, even if they have access to both environments.
-After you enable unified search for {% data variables.location.product_location %}, before individual users can see search results from private repositories on {% data variables.product.prodname_dotcom_the_website %} in {% data variables.location.product_location %}, each user must also connect their user account on {% data variables.product.product_name %} with a user account on {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment)."
+After you enable unified search for {% data variables.location.product_location %}, before individual users can see search results from private repositories on {% data variables.product.prodname_ghe_cloud %} in {% data variables.location.product_location %}, each user must also connect their user account on {% data variables.product.product_name %} with a user account on {% data variables.product.prodname_ghe_cloud %}. For more information, see "[AUTOTITLE](/search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment)."
-Searching via the REST and GraphQL APIs does not include {% data variables.product.prodname_dotcom_the_website %} search results. Advanced search and searching for wikis in {% data variables.product.prodname_dotcom_the_website %} are not supported.
+Searching via the REST and GraphQL APIs does not include {% data variables.product.prodname_ghe_cloud %} search results. Advanced search and searching for wikis in {% data variables.product.prodname_ghe_cloud %} are not supported.
## Enabling {% data variables.enterprise.prodname_unified_search %}
-Before you can enable {% data variables.enterprise.prodname_unified_search %}, you must enable {% data variables.product.prodname_github_connect %}. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/managing-github-connect)."
+Before you can enable {% data variables.enterprise.prodname_unified_search %}, you must enable {% data variables.product.prodname_github_connect %}. See {% ifversion ghecom-github-connect %}"[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom) or {% endif %}"[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom)."
-{% ifversion ghes %}
{% data reusables.github-connect.access-dotcom-and-enterprise %}
{% data reusables.enterprise_site_admin_settings.access-settings %}
{% data reusables.enterprise_site_admin_settings.business %}
-{% data reusables.enterprise-accounts.github-connect-tab %}{% else %}
-1. Sign into {% data variables.location.product_location %} and {% data variables.product.prodname_dotcom_the_website %}.
-{% data reusables.enterprise-accounts.access-enterprise %}{% data reusables.enterprise-accounts.github-connect-tab %}{% endif %}
+{% data reusables.enterprise-accounts.github-connect-tab %}
1. To the right of "Unified search", click **Enable**.
![Screenshot of the "Unified search" option on the GitHub Connect page. The "Enable" button is highlighted with an orange outline.](/assets/images/enterprise/site-admin-settings/github-dotcom-enable-search.png)
diff --git a/content/admin/configuring-settings/configuring-github-connect/index.md b/content/admin/configuring-settings/configuring-github-connect/index.md
index 3fc543b3d078..27d30af75905 100644
--- a/content/admin/configuring-settings/configuring-github-connect/index.md
+++ b/content/admin/configuring-settings/configuring-github-connect/index.md
@@ -18,12 +18,14 @@ topics:
- Enterprise
children:
- /about-github-connect
- - /managing-github-connect
+ - /enabling-github-connect-for-githubcom
+ - /enabling-github-connect-for-ghecom
- /enabling-automatic-user-license-sync-for-your-enterprise
- /enabling-dependabot-for-your-enterprise
- /enabling-server-statistics-for-your-enterprise
- /enabling-unified-search-for-your-enterprise
- /enabling-unified-contributions-for-your-enterprise
+ - /disabling-github-connect
shortTitle: GitHub Connect
---
diff --git a/content/admin/configuring-settings/configuring-github-connect/managing-github-connect.md b/content/admin/configuring-settings/configuring-github-connect/managing-github-connect.md
deleted file mode 100644
index 6aece42aebd8..000000000000
--- a/content/admin/configuring-settings/configuring-github-connect/managing-github-connect.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: Managing GitHub Connect
-shortTitle: Manage GitHub Connect
-intro: 'You can enable {% data variables.product.prodname_github_connect %} to access additional features and workflows for {% data variables.location.product_location %}.'
-redirect_from:
- - /enterprise/admin/guides/developer-workflow/connecting-github-enterprise-to-github-com
- - /enterprise/admin/guides/developer-workflow/connecting-github-enterprise-server-to-github-com
- - /enterprise/admin/developer-workflow/connecting-github-enterprise-server-to-githubcom
- - /enterprise/admin/installation/connecting-github-enterprise-server-to-github-enterprise-cloud
- - /enterprise/admin/configuration/connecting-github-enterprise-server-to-github-enterprise-cloud
- - /admin/configuration/connecting-github-enterprise-server-to-github-enterprise-cloud
- - /admin/configuration/managing-connections-between-github-enterprise-server-and-github-enterprise-cloud/connecting-github-enterprise-server-to-github-enterprise-cloud
- - /admin/configuration/managing-connections-between-your-enterprise-accounts/connecting-your-enterprise-account-to-github-enterprise-cloud
- - /admin/configuration/configuring-github-connect/managing-github-connect
-versions:
- ghes: '*'
-type: how_to
-topics:
- - Enterprise
- - GitHub Connect
- - Infrastructure
- - Networking
----
-
-## About {% data variables.product.prodname_github_connect %}
-
-You can access additional features and workflows on {% data variables.location.product_location %} by enabling {% data variables.product.prodname_github_connect %}. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/about-github-connect)."
-
-When you enable {% data variables.product.prodname_github_connect %}, you configure a connection between {% data variables.location.product_location %} and an enterprise account on {% data variables.product.prodname_ghe_cloud %}. {% data reusables.github-connect.connection-port-protocol %}
-
-Enabling {% data variables.product.prodname_github_connect %} creates a {% data variables.product.prodname_github_app %} owned by the enterprise account on {% data variables.product.prodname_ghe_cloud %}. {% data variables.product.product_name %} uses the {% data variables.product.prodname_github_app %}'s credentials to make requests to {% data variables.product.prodname_ghe_cloud %}.
-
-{% ifversion ghes %}
-{% data variables.product.prodname_ghe_server %} stores credentials from the {% data variables.product.prodname_github_app %}. The following credentials will be replicated to all nodes in a high availability or cluster environment, and stored in any backups, including snapshots created by {% data variables.product.prodname_enterprise_backup_utilities %}.
-* An authentication token, which is valid for one hour
-* A private key, which is used to generate a new authentication token
-{% endif %}
-
-## Prerequisites
-
-To use {% data variables.product.prodname_github_connect %}, you must have an enterprise account on {% data variables.product.prodname_dotcom_the_website %} that uses {% data variables.product.prodname_ghe_cloud %}. You may already have {% data variables.product.prodname_ghe_cloud %} included in your plan.
-
-{% note %}
-
-**Note:** Your enterprise account on {% data variables.product.prodname_dotcom_the_website %} must be invoiced. Enterprise accounts on the free trial of {% data variables.product.prodname_ghe_cloud %} or that pay by credit card cannot be connected to {% data variables.location.product_location %}.
-
-{% endnote %}
-
-{% ifversion ghes %}
-If your enterprise account on {% data variables.product.prodname_dotcom_the_website %} uses IP allow lists, you must add the IP address or network for {% data variables.location.product_location %} to your IP allow list on {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-allowed-ip-addresses-for-organizations-in-your-enterprise)" in the {% data variables.product.prodname_ghe_cloud %} documentation.
-
-To configure a connection, your proxy configuration must allow connectivity to `github.com`, `api.github.com`, and `uploads.github.com`. For more information, see "[AUTOTITLE](/admin/configuration/configuring-network-settings/configuring-an-outbound-web-proxy-server)."
-{% endif %}
-
-## Enabling {% data variables.product.prodname_github_connect %}
-
-To enable {% data variables.product.prodname_github_connect %}, you must be an enterprise owner on both {% data variables.product.product_name %} and {% data variables.product.prodname_ghe_cloud %}.
-
-{% ifversion ghes %}
-1. Sign in to {% data variables.location.product_location %} and {% data variables.product.prodname_dotcom_the_website %}.
-{% data reusables.enterprise-accounts.access-enterprise %}
-{% data reusables.enterprise-accounts.github-connect-tab %}{% else %}
-1. Sign in to {% data variables.location.product_location %} and {% data variables.product.prodname_dotcom_the_website %}.
-{% data reusables.enterprise-accounts.access-enterprise %}{% data reusables.enterprise-accounts.github-connect-tab %}{% endif %}
-1. Under "{% data variables.product.prodname_github_connect %} is not enabled yet", click **Enable {% data variables.product.prodname_github_connect %}**. By clicking **Enable {% data variables.product.prodname_github_connect %}**, you agree to the "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-terms-for-additional-products-and-features#connect)."
-1. To the right of the enterprise account you'd like to connect, click **Connect**.
-
-## Disabling {% data variables.product.prodname_github_connect %}
-
-Enterprise owners can disable {% data variables.product.prodname_github_connect %}.
-
-When you disconnect from {% data variables.product.prodname_ghe_cloud %}, the {% data variables.product.prodname_github_connect %} {% data variables.product.prodname_github_app %} is deleted from your enterprise account and credentials stored on {% data variables.location.product_location %} are deleted.
-
-{% data reusables.enterprise-accounts.access-enterprise %}
-{% data reusables.enterprise-accounts.github-connect-tab %}
-1. Under "{% data variables.product.prodname_github_connect %}", to the right of the enterprise account you'd like to disconnect, click **Disable {% data variables.product.prodname_github_connect %}**.
-1. Read the information about disconnection, then click **Disable {% data variables.product.prodname_github_connect %}**.
diff --git a/content/admin/configuring-settings/configuring-private-networking-for-hosted-compute-products/configuring-private-networking-for-github-hosted-runners-in-your-enterprise.md b/content/admin/configuring-settings/configuring-private-networking-for-hosted-compute-products/configuring-private-networking-for-github-hosted-runners-in-your-enterprise.md
index 229b81e0ea5c..76a24fbd81c6 100644
--- a/content/admin/configuring-settings/configuring-private-networking-for-hosted-compute-products/configuring-private-networking-for-github-hosted-runners-in-your-enterprise.md
+++ b/content/admin/configuring-settings/configuring-private-networking-for-hosted-compute-products/configuring-private-networking-for-github-hosted-runners-in-your-enterprise.md
@@ -56,7 +56,9 @@ Variables
}
```
-Alternatively, you can use the following curl command to find your `databaseId`.
+#### Example for {% data variables.product.prodname_dotcom_the_website %}
+
+You can use the following curl command to find your `databaseId`.
```shell copy
curl -H "Authorization: Bearer BEARER_TOKEN" -X POST \
@@ -68,6 +70,16 @@ curl -H "Authorization: Bearer BEARER_TOKEN" -X POST \
https://api.github.com/graphql
```
+#### Example for {% data variables.enterprise.data_residency_site %}
+
+You can use the following {% data variables.product.prodname_cli %} commands to retrieve the `databaseId`. Replace SUBDOMAIN with your enterprise's subdomain of {% data variables.enterprise.data_residency_site %}.
+
+ ```shell copy
+ gh auth login -s 'read:enterprise' -h SUBDOMAIN.ghe.com
+
+ gh api graphql --hostname SUBDOMAIN.ghe.com -f query='query($slug: String!) { enterprise (slug: $slug) { slug databaseId } }' -f slug='SUBDOMAIN'
+ ```
+
{% data reusables.actions.azure-vnet-configure-azure-resources-script %}
## Creating a network configuration for your enterprise in {% data variables.product.company_short %}
diff --git a/content/admin/data-residency/about-github-enterprise-cloud-with-data-residency.md b/content/admin/data-residency/about-github-enterprise-cloud-with-data-residency.md
new file mode 100644
index 000000000000..46eebc6ad5cc
--- /dev/null
+++ b/content/admin/data-residency/about-github-enterprise-cloud-with-data-residency.md
@@ -0,0 +1,104 @@
+---
+title: About GitHub Enterprise Cloud with data residency
+intro: "With {% data variables.product.prodname_ghe_cloud %}, you can have more control over your data without needing to host your own platform."
+shortTitle: What is data residency?
+versions:
+ ghec: '*'
+---
+
+By default, {% data variables.product.company_short %} stores data for {% data variables.product.prodname_dotcom_the_website %} in the USA. {% data reusables.data-residency.when-you-adopt-data-residency %} To learn how {% data variables.product.company_short %} handles data storage, see "[AUTOTITLE](/admin/data-residency/about-storage-of-your-data-with-data-residency)."
+
+Access to this feature is currently managed by {% data variables.contact.contact_enterprise_sales %}.
+
+## What is {% data variables.product.product_name %}?
+
+{% data variables.product.github %} is a complete developer platform for building, scaling, and delivering secure software. In addition to these capabilities, {% data variables.product.product_name %} offers several key features designed to further optimize and secure your use of the platform:
+
+* Includes an **enterprise account**: a dedicated, shared space for your company to store code, collaborate, and access {% data variables.product.company_short %} features
+* Centralizes billing, administration, governance, and audit of your company’s resources and activity
+* Is accessible only to authorized users, isolated from the wider {% data variables.product.prodname_dotcom_the_website %} community
+* Includes management of authentication and user lifecycles from an external identity management system:
+
+ * **SCIM** for provisioning
+ * **SAML** or **OIDC** for authentication
+
+With {% data variables.enterprise.data_residency_short %}, {% data variables.enterprise.prodname_managed_users %} access your resources through a dedicated subdomain of {% data variables.enterprise.data_residency_site %}, and can only interact with resources that belong to your enterprise.
+
+## Why move data to the cloud?
+
+If you currently use a self-hosted service like {% data variables.product.prodname_ghe_server %}, {% data variables.enterprise.data_residency %} will help you to have more control over your data while benefiting from a cloud-based, managed product.
+
+* Your users will have access to the latest features from {% data variables.product.prodname_dotcom_the_website %}, such as {% data variables.product.prodname_copilot %}, without needing to wait for features to be available in {% data variables.product.prodname_ghe_server %} releases.
+* You'll have a simplified administrative experience, and won't need to schedule downtime for maintenance or upgrades.
+
+## How does billing work?
+
+To adopt {% data variables.enterprise.data_residency %}, you'll sign up for the **{% data variables.product.prodname_enterprise %} plan**, which covers your enterprise on {% data variables.enterprise.data_residency_site %} and, if you need it, {% data variables.product.prodname_ghe_server %}. For pricing details, see our [Pricing](https://github.com/pricing) page.
+
+To pay for user licenses and services, you can:
+* Add a credit card or PayPal account to your enterprise and bill directly through {% data variables.product.company_short %}
+* Connect your enterprise to a Microsoft Azure subscription
+
+You will be on our latest billing platform, which allows you to estimate spending, create cost centers to manage expenses, and pay flexibly for the services you use.
+
+You can also sign up for usage-based billing for {% data variables.product.prodname_enterprise %} and {% data variables.product.prodname_GH_advanced_security %} licenses, meaning you won't need to purchase a pre-defined number of licenses in advance.
+
+## Developer experience
+
+The developer experience on {% data variables.enterprise.data_residency_site %} differs in some ways from {% data variables.product.prodname_dotcom_the_website %} and {% data variables.product.prodname_ghe_server %}.
+
+* [Identity and access](#identity-and-access)
+* [Functionality for managed user accounts](#functionality-for-managed-user-accounts)
+* [Repository visibility](#repository-visibility)
+* [API access](#api-access)
+* [Documentation](#documentation)
+
+### Identity and access
+
+Enterprises on {% data variables.enterprise.data_residency_site %} use **{% data variables.product.prodname_emus %}**. In an {% data variables.enterprise.prodname_emu_enterprise %}, your company manages the user accounts that people use to access your resources. These accounts can only access your enterprise's resources, and are isolated from the wider open source community on {% data variables.product.prodname_dotcom_the_website %}.
+
+People access your enterprise via the {% data variables.enterprise.data_residency_site %} URL that you choose during onboarding. To access your enterprise's resources, people must authenticate through the identity management system that your company uses.
+
+### Network access
+
+Network details such as IP ranges and SSH key fingerprints differ between {% data variables.enterprise.data_residency_site %} and {% data variables.product.prodname_dotcom_the_website %}. You must give client systems such as storage accounts or identity provider integrations access to your enterprise. See "[AUTOTITLE](/admin/data-residency/network-details-for-ghecom)."
+
+### Functionality for {% data variables.enterprise.prodname_managed_users %}
+
+Administrators and developers with access to your enterprise can take advantage of the full {% data variables.product.prodname_dotcom %} platform, with the exception of some features that are currently unavailable.
+
+Developers may have experience using a personal account on {% data variables.product.prodname_dotcom_the_website %}, or a user account on a {% data variables.product.prodname_ghe_server %} instance. The experience of using a {% data variables.enterprise.prodname_managed_user %} on {% data variables.enterprise.data_residency_site %} differs in some ways. See "[AUTOTITLE](/admin/identity-and-access-management/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts)."
+
+### Repository visibility
+
+Public repositories are not available in an {% data variables.enterprise.prodname_emu_enterprise %}. To practice innersource, users can create internal repositories that are visible to all enterprise members. See "[AUTOTITLE](/repositories/creating-and-managing-repositories/about-repositories#about-internal-repositories)."
+
+### API access
+
+{% data reusables.data-residency.data-resident-enterprises-api-access %} For example, if your enterprise's subdomain is `octocorp`, users should send requests to `https://api.octocorp.ghe.com`.
+
+Users can simplify API requests by using the {% data variables.product.prodname_cli %}. However, if they also need to access resources on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.product.prodname_ghe_server %}, they will need to authenticate to multiple accounts and specify a target platform for most requests. See "[AUTOTITLE](/github-cli/github-cli/using-multiple-accounts)."
+
+Rate limits apply for requests to the REST API. See "[AUTOTITLE](/rest/overview/rate-limits-for-the-rest-api)."
+
+### Documentation
+
+In general, the content on [{% data variables.product.prodname_docs %}](/enterprise-cloud@latest) reflects the user experience on {% data variables.enterprise.data_residency_site %}. Readers should use the "{% data variables.product.product_name %}" version of the site. See "[AUTOTITLE](/get-started/using-github-docs/about-versions-of-github-docs#about-versions-of-github-docs)."
+
+When reading the documentation, readers may need to substitute references to {% data variables.product.prodname_dotcom_the_website %} with your enterprise's dedicated URL on {% data variables.enterprise.data_residency_site %}.
+
+## Feature overview
+
+{% data reusables.data-residency.data-resident-enterprise-feature-availability %} See "[AUTOTITLE](/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency)."
+
+## Getting started
+
+When you have worked with your account team in {% data variables.contact.contact_enterprise_sales %} to create a new enterprise account and choose a subdomain on {% data variables.enterprise.data_residency_site %}, you can get started with your new enterprise.
+
+You will:
+
+* Create accounts for your company's administrators and developers
+* Add your billing details
+* Optionally, migrate data from another platform
+
+To get started, see "[AUTOTITLE](/admin/data-residency/getting-started-with-data-residency-for-github-enterprise-cloud)."
diff --git a/content/admin/data-residency/about-storage-of-your-data-with-data-residency.md b/content/admin/data-residency/about-storage-of-your-data-with-data-residency.md
new file mode 100644
index 000000000000..d4c361f741fd
--- /dev/null
+++ b/content/admin/data-residency/about-storage-of-your-data-with-data-residency.md
@@ -0,0 +1,46 @@
+---
+title: About storage of your data with data residency
+shortTitle: How is data stored?
+intro: "Learn how your data is stored when you use {% data variables.enterprise.data_residency %}."
+versions:
+ ghec: '*'
+---
+
+{% data reusables.data-residency.when-you-adopt-data-residency %}
+
+Although your code and user data are stored within your chosen region, {% data variables.product.company_short %} may store certain types of data outside your region, and may need to transfer some data outside your region.
+
+If you are in doubt about any aspect of {% data variables.enterprise.data_residency_short %}, contact your account manager in {% data variables.contact.contact_enterprise_sales %}.
+
+## Data stored in your region
+
+{% data variables.product.company_short %} stores the following data for your enterprise within your chosen region.
+
+| Description of data | Examples |
+| :- | :- |
+| Customer content, including text, data, software, images, and other data available on the service |
Repositories, including repository name and source code
User-generated content or URLs from the service, such as a pull request, comment, file path, raw URL, or filename
Structured or blob storage
|
+| Data or logs that identify your company |
Data and logs for GitHub Actions
Data for business continuity and disaster recovery (BCDR)
|
+| Data or logs that identify a person |
Email address
Username
First or last name
IP address
|
+
+## Data stored outside your region
+
+For the purposes outlined in our [Data Protection Agreement](https://github.com/customer-terms/github-data-protection-agreement), {% data variables.product.company_short %} may store the following data for your enterprise outside your chosen region.
+
+| Description of data | Examples |
+| :- | :- |
+| Telemetry or logs containing consistent identifiers tied to a person, that by themselves do not identify the person without additional information |
User ID or GUID as integer value in a database
Unsalted hash of other data that could identify a person
Email address
Username
First or last name
IP address
|
+| Information that GitHub needs to administer a paid plan |
Contact information
Billing, purchase, payment, or license information
|
+| Support and feedback data |
Support requests or case notes
Phone conversations
Online chat sessions
Remote assistance sessions
|
+| {% data variables.product.prodname_copilot %} data | Data and logs for {% data variables.product.prodname_copilot %} |
+
+## Data transfers
+
+{% data variables.product.company_short %} will document reasons for the transfer of data out of your enterprise's region, but does not notify you when transfers occur.
+
+Additionally, {% data variables.product.company_short %} sends information about the TLS certificate for your enterprise's subdomain on {% data variables.enterprise.data_residency_site %} to certificate authorities (CAs) and the certificate transparency (CT) ecosystem. Some entities may be outside of your enterprise's region.
+
+## Data subject requests
+
+If you need to comply with a data subject request (DSR), contact {% data variables.contact.contact_support_page %}.
+
+If {% data variables.product.company_short %} receives a request from one of your data subjects pertaining to {% data variables.enterprise.data_residency_short %} for {% data variables.product.prodname_ghe_cloud %}, where {% data variables.product.company_short %} functions as your processor or subprocessor, {% data variables.product.company_short %} will redirect the data subject to you. Consistent with the functionality of the services and {% data variables.product.company_short %}'s role, we will cooperate with you and provide you the necessary means to respond.
diff --git a/content/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency.md b/content/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency.md
new file mode 100644
index 000000000000..a043b8bca422
--- /dev/null
+++ b/content/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency.md
@@ -0,0 +1,83 @@
+---
+title: Feature overview for GitHub Enterprise Cloud with data residency
+shortTitle: Which features are available?
+intro: "Learn about the available features on {% data variables.enterprise.data_residency_site %}, plus features that work differently from {% data variables.product.prodname_dotcom_the_website %}."
+versions:
+ ghec: '*'
+---
+
+{% data reusables.data-residency.data-resident-enterprise-feature-availability %} Some features work differently or require additional configuration compared to the equivalent feature on {% data variables.product.prodname_dotcom_the_website %}.
+
+## Available features
+
+{% data variables.product.prodname_ghe_cloud %} is a developer platform that supports the entire software development lifecycle, including planning work, automating tests and deployments, and keeping code secure. To learn about available features, see "[AUTOTITLE](/enterprise-cloud@latest/admin/overview/feature-overview-for-github-enterprise-cloud)."
+
+## Currently unavailable features
+
+The following features are currently unavailable on {% data variables.enterprise.data_residency_site %}.
+
+| Feature | Details | More information |
+| :- | :- | :- |
+| {% data variables.product.prodname_github_codespaces %} | Currently unavailable. | "[AUTOTITLE](/codespaces/overview)" |
+| {% data variables.product.prodname_marketplace %} | Currently, apps from {% data variables.product.prodname_marketplace %} are unavailable. {% data variables.product.prodname_actions %} workflows from {% data variables.product.prodname_marketplace %} may not function as expected. For more information, see "[GitHub Actions workflows from GitHub Marketplace](#github-actions-workflows-from-github-marketplace)." | "[AUTOTITLE](/search-github/searching-on-github/searching-github-marketplace)" | "[AUTOTITLE](/enterprise-server@latest/admin/configuration/configuring-github-connect/about-github-connect#github-connect-features)" in the {% data variables.product.prodname_ghe_server %} documentation |
+| macOS runners for {% data variables.product.prodname_actions %} | Currently unavailable. | "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners)" |
+| Maven and Gradle support for {% data variables.product.prodname_registry %} | Currently unavailable. | "[AUTOTITLE](/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry)" |
+| Achievements | Currently unavailable. | "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile)" |
+| Microsoft Teams integrations | Currently unavailable. | "[AUTOTITLE](/get-started/exploring-integrations/featured-github-integrations#team-communication-tools)" |
+| {% data variables.product.prodname_importer %} | Currently unavailable | "[AUTOTITLE](/migrations/importing-source-code/using-github-importer/about-github-importer)" |
+| {% data variables.product.prodname_copilot %} Workspaces | Currently unavailable | |
+| Interactive maps | Currently can't use GeoJSON/TopoJSON syntax to create interactive maps. | "[AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/creating-diagrams#creating-geojson-and-topojson-maps)" |
+| Usage metrics for {% data variables.product.prodname_actions %} | Currently unavailable | "[AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions)" |
+| 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 %} | |
+
+## Features that work differently
+
+The following features are either specific to {% data variables.enterprise.data_residency_site %} or work differently compared to {% data variables.product.prodname_dotcom_the_website %}.
+
+* [API access](#api-access)
+* [URL differences](#url-differences)
+* [{% data variables.product.prodname_actions %} workflows from {% data variables.product.prodname_marketplace %}](#github-actions-workflows-from-github-marketplace)
+* [Retirement of namespaces for actions accessed on {% data variables.product.prodname_dotcom_the_website %}](#retirement-of-namespaces-for-actions-accessed-on-githubcom)
+* [GitHub Connect](#github-connect)
+
+### API access
+
+{% data reusables.data-residency.data-resident-enterprises-api-access %} For more information, see "[AUTOTITLE](/admin/data-residency/about-github-enterprise-cloud-with-data-residency#api-access)."
+
+### URL differences
+
+The URL formats for certain features and services vary between {% data variables.product.prodname_dotcom_the_website %} and {% data variables.enterprise.data_residency_site %}. If you're migrating to {% data variables.enterprise.data_residency_site %} and have automations or integrations that depend on URL values for {% data variables.product.prodname_dotcom_the_website %}, you will need to updates these values.
+
+The following examples are not exhaustive.
+
+{% rowheaders %}
+
+| Feature | Example on {% data variables.product.prodname_dotcom_the_website %} | Example on {% data variables.enterprise.data_residency_site %} |
+| ------ | ------------ | ----------- |
+| {% data variables.product.prodname_registry %} | The {% data variables.product.prodname_container_registry %} is located at {% data variables.product.prodname_container_registry_namespace %}. | The {% data variables.product.prodname_container_registry %} is located at `https://containers.SUBDOMAIN.ghe.com`. |
+| User provisioning | The "tenant URL" for Microsoft Entra ID is `https://api.github.com/scim/v2/enterprises/ENTERPRISE` | The "tenant URL" for Microsoft Entra ID is `https://api.SUBDOMAIN.ghe.com/scim/v2/enterprises/SUBDOMAIN` |
+| OIDC trusts for {% data variables.product.prodname_actions %} deployments | The OIDC token is issued from `https://token.actions.githubusercontent.com`. | The OIDC token is issued from `https://token.actions.SUBDOMAIN.ghe.com` |
+| Raw URLs | `https://raw.githubusercontent.com/` | `https://raw.SUBDOMAIN.ghe.com/` |
+| Anonymized URLs for images and videos | `https://private-user-images.githubusercontent.com/` | `https://SUBDOMAIN.ghe.com/user-attachments/assets/` |
+
+{% endrowheaders %}
+
+### {% data variables.product.prodname_actions %} workflows from {% data variables.product.prodname_marketplace %}
+
+{% data variables.product.prodname_actions %} workflows from the {% data variables.product.prodname_marketplace %} may not work as users expect.
+
+* Some actions hard-code API calls to api.github.com, which don't currently work for enterprises on {% data variables.enterprise.data_residency_site %}.
+* Some actions make requests to resources on {% data variables.location.product_location %}, and these actions will **not** work for enterprises on {% data variables.enterprise.data_residency_site %} unless the author has built a mechanism to inject a secondary token for API calls. A `GITHUB_TOKEN` within a workflow run for your enterprise on {% data variables.enterprise.data_residency_site %} does not grant access to resources on {% data variables.location.product_location %}.
+
+### Retirement of namespaces for actions accessed on {% data variables.product.prodname_dotcom_the_website %}
+
+{% data reusables.actions.namespace-retirement-ghecom %}
+
+To allow people to use namespaces that match actions you have used from {% data variables.product.prodname_dotcom_the_website %}, you can make a retired namespace available. See "[AUTOTITLE](/actions/administering-github-actions/making-retired-namespaces-available-on-ghecom)."
+
+### {% data variables.product.prodname_github_connect %}
+
+You can use {% data variables.product.prodname_github_connect %} to connect to {% data variables.enterprise.data_residency_site %} from {% data variables.product.prodname_ghe_server %}.
+
+* {% data variables.product.prodname_github_connect %} features that rely on data from {% data variables.product.prodname_dotcom_the_website %} are not available.
+* To enable {% data variables.product.prodname_github_connect %}, you must configure your {% data variables.product.prodname_ghe_server %} instance to connect to your {% data variables.enterprise.data_residency_site %} subdomain. See "[AUTOTITLE](/enterprise-server@latest/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom)."
diff --git a/content/admin/data-residency/getting-started-with-data-residency-for-github-enterprise-cloud.md b/content/admin/data-residency/getting-started-with-data-residency-for-github-enterprise-cloud.md
new file mode 100644
index 000000000000..5b51ed6e3262
--- /dev/null
+++ b/content/admin/data-residency/getting-started-with-data-residency-for-github-enterprise-cloud.md
@@ -0,0 +1,113 @@
+---
+title: Getting started with data residency for GitHub Enterprise Cloud
+shortTitle: Get started
+intro: "Set up your enterprise on {% data variables.enterprise.data_residency_site %} by onboarding users, enabling billing, and migrating data."
+versions:
+ ghec: '*'
+---
+
+When you adopt {% data variables.enterprise.data_residency %}, you can choose where your company's code and data are stored.
+
+After you have **worked with {% data variables.contact.contact_enterprise_sales %}** to create an enterprise account with a dedicated URL on {% data variables.enterprise.data_residency_site %}, you'll use this guide to set up your enterprise. You will:
+
+* Add users by configuring authentication and provisioning with an identity management system
+* Set up billing for your enterprise
+* Optionally, migrate data from another platform
+* Learn about available features, including features that work differently or require additional configuration
+
+After this initial setup, you'll be able to create organizations and repositories, collaborate on code, configure policies, and more.
+
+## Prerequisites
+
+* You must have been provisioned with an enterprise on {% data variables.enterprise.data_residency_site %}.
+
+* If you intend to pay with a Microsoft Azure subscription, you must have admin access to the Azure portal or work with someone to configure an admin consent workflow. For a full list of prerequisites, see "[AUTOTITLE](/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription#prerequisites)."
+
+* {% data reusables.data-residency.data-resident-enterprises-network-access %}
+
+## 1. Add users to your enterprise
+
+Enterprises on {% data variables.enterprise.data_residency_site %} use {% data variables.product.prodname_emus %}. To create user accounts and grant access to your new enterprise on {% data variables.enterprise.data_residency_site %}, you must configure authentication and SCIM provisioning. See "[AUTOTITLE](/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users)."
+
+### Sign in as the setup user
+
+After we create your enterprise, you will receive an email inviting you to choose a password for the setup user, which is used to configure authentication and provisioning. The username is a randomly generated shortcode, suffixed with `_admin`.
+
+Using an **incognito or private browsing window**:
+
+1. Set the user's password.
+1. Save the user's recovery codes.
+
+{% data reusables.enterprise-accounts.emu-password-reset-session %}
+
+### Create a {% data variables.product.pat_generic %}
+
+{% data reusables.enterprise-accounts.emu-create-a-pat %}
+
+### Configure authentication
+
+{% data reusables.enterprise-accounts.emu-configure-authentication %}
+
+### Configure provisioning
+
+{% data reusables.enterprise-accounts.emu-configure-provisioning %}
+
+### Manage organization membership
+
+{% data reusables.enterprise-accounts.emu-manage-org-membership %}
+
+## 2. Set up billing
+
+To pay for licenses and services, you can use a credit card, PayPal, or a Microsoft Azure subscription.
+
+* To add a credit card or PayPal details, see "[AUTOTITLE](/billing/using-the-new-billing-platform/managing-your-payment-and-billing-information#viewing-payment-information)."
+* To link an Azure subscription, see "[AUTOTITLE](/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription#connecting-your-azure-subscription-to-your-enterprise-account)."
+
+## 3. Migrate data
+
+Optionally, to migrate existing data to your new enterprise on {% data variables.enterprise.data_residency_site %}, you can use {% data variables.product.company_short %}'s migration tools.
+
+* If you're migrating from {% data variables.product.prodname_dotcom_the_website %}, {% data variables.product.prodname_ghe_server %}, Azure DevOps, or Bitbucket Server, you can migrate source code history and metadata with {% data variables.product.prodname_importer_proper_name %}. See "[AUTOTITLE](/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer)."
+* If you're migrating from a different platform, see "[AUTOTITLE](/migrations/overview/migration-paths-to-github#migrations-to-ghecom)."
+
+### Example script for {% data variables.product.prodname_importer_proper_name %}
+
+The following script demonstrates the use of {% data variables.product.prodname_importer_proper_name %} for migration of an individual source repository from {% data variables.product.prodname_dotcom_the_website %} to a target repository on {% data variables.enterprise.data_residency_site %}. The `--target-api-url` parameter sets your enterprise on {% data variables.enterprise.data_residency_site %} as the destination of the migration.
+
+You can use the environment variable definitions in the script as an example to create additional commands that migrate data using {% data variables.product.prodname_importer_proper_name %}.
+
+In the following script, **replace the following placeholder text** with actual values.
+
+| Placeholder | Description |
+| :- | :- |
+| TARGET-TOKEN | {% data variables.product.pat_generic_caps %} (PAT) for accessing the target enterprise on {% data variables.enterprise.data_residency_site %} |
+| SOURCE-TOKEN | PAT for accessing the source resources on {% data variables.product.prodname_dotcom_the_website %} |
+| TARGET-GHE-API-URL | The URL for accessing API endpoints for your enterprise. For example, if your enterprise's subdomain is `octocorp`, this value must be `https://api.octocorp.ghe.com`. |
+| SOURCE-GH-ORGANIZATION-NAME | The name of the source organization on {% data variables.product.prodname_dotcom_the_website %}. |
+| SOURCE-GH-REPOSITORY-NAME | The name of the source repository on {% data variables.product.prodname_dotcom_the_website %}. |
+| TARGET-GHE-ORGANIZATION-NAME | The name of the target organization on {% data variables.enterprise.data_residency_site %}. |
+| TARGET-GHE-REPOSITORY-NAME | The name of the target repository on {% data variables.enterprise.data_residency_site %}. |
+
+```bash copy
+#!/bin/sh
+
+export GH_PAT="TARGET-TOKEN"
+export GH_SOURCE_PAT="SOURCE-TOKEN"
+export TARGET_API_URL="TARGET-GHE-API-URL"
+export GITHUB_SOURCE_ORG="SOURCE-GH-ORGANIZATION-NAME"
+export SOURCE_REPO="SOURCE-GH-REPOSITORY-NAME"
+export GITHUB_TARGET_ORG="TARGET-GHE-ORGANIZATION-NAME"
+export TARGET_REPO="TARGET-GHE-REPOSITORY-NAME"
+
+gh gei migrate-repo --target-api-url $TARGET_API_URL --github-source-org $GITHUB_SOURCE_ORG --source-repo $SOURCE_REPO --github-target-org $GITHUB_TARGET_ORG --target-repo $TARGET_REPO --verbose
+```
+
+## 4. Learn about {% data variables.product.github %}'s features
+
+When you have completed the initial setup of your enterprise, you and your enterprise's members can start using {% data variables.product.github %}'s features.
+
+{% data reusables.data-residency.data-resident-enterprise-feature-availability %} Some features work differently or require additional configuration compared to the equivalent feature on {% data variables.product.prodname_dotcom_the_website %}. See "[AUTOTITLE](/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency)."
+
+## Further reading
+
+* "[AUTOTITLE](/admin/data-residency/resolving-issues-with-your-enterprise-on-ghecom)
diff --git a/content/admin/data-residency/index.md b/content/admin/data-residency/index.md
new file mode 100644
index 000000000000..e48db3798f32
--- /dev/null
+++ b/content/admin/data-residency/index.md
@@ -0,0 +1,13 @@
+---
+title: GitHub Enterprise Cloud with data residency
+shortTitle: Data residency
+versions:
+ ghec: '*'
+children:
+ - /about-github-enterprise-cloud-with-data-residency
+ - /about-storage-of-your-data-with-data-residency
+ - /feature-overview-for-github-enterprise-cloud-with-data-residency
+ - /getting-started-with-data-residency-for-github-enterprise-cloud
+ - /network-details-for-ghecom
+ - /resolving-issues-with-your-enterprise-on-ghecom
+---
diff --git a/content/admin/data-residency/network-details-for-ghecom.md b/content/admin/data-residency/network-details-for-ghecom.md
new file mode 100644
index 000000000000..aab0b21dc1fe
--- /dev/null
+++ b/content/admin/data-residency/network-details-for-ghecom.md
@@ -0,0 +1,57 @@
+---
+title: Network details for GHE.com
+shortTitle: Network details
+intro: 'Ensure client systems can access your resources on {% data variables.enterprise.data_residency_site %}.'
+versions:
+ ghec: '*'
+---
+
+To access your enterprise on {% data variables.enterprise.data_residency_site %}, client systems must:
+
+* Trust the following SSH key fingerprints
+* Have access to the following hostnames and IP addresses
+
+## {% data variables.product.github %}'s SSH key fingerprints
+
+* `SHA256:PYES2CtancLX+w0+VvwWRQclfulUkqj6hpZmcKFAO3w` (RSA)
+* `SHA256:TKoEXigNsj5b6XaSOSf20L0y3cuNx41WWM+l4AAK9k4` (ECDSA)
+* `SHA256:LqPvjvQugr3MmzVYw9M3gT7won8/lUPZCSvmNydl7vU` (Ed25519)
+
+## {% data variables.product.github %}'s hostnames
+
+* `*.{% data variables.enterprise.data_residency_domain %}`, where SUBDOMAIN is your enterprise's dedicated subdomain on {% data variables.enterprise.data_residency_site %}
+* `*.githubassets.com`
+* `*.githubusercontent.com`
+* `*.blob.core.windows.net`
+
+## {% data variables.product.github %}'s IP addresses
+
+These are {% data variables.product.company_short %}'s IP address ranges for enterprises on {% data variables.enterprise.data_residency_site %}.
+
+### Ranges for egress traffic
+
+* 108.143.221.96/28
+* 20.61.46.32/28
+* 20.224.62.160/28
+* 51.12.252.16/28
+* 74.241.131.48/28
+* 20.240.211.176/28
+
+### Ranges for ingress traffic
+
+* 108.143.197.176/28
+* 20.123.213.96/28
+* 20.224.46.144/28
+* 20.240.194.240/28
+* 20.240.220.192/28
+* 20.240.211.208/28
+
+## Supported regions for Azure private networking
+
+If you use Azure private networking for {% data variables.product.company_short %}-hosted runners, the supported Azure regions on {% data variables.enterprise.data_residency_site %} differ from those on {% data variables.product.prodname_dotcom_the_website %}.
+
+The following regions are available:
+
+* x64: `francecentral`, `swedencentral`
+* arm64: `francecentral`, `northeurope`
+* GPU: `italynorth`, `swedencentral`
diff --git a/content/admin/data-residency/resolving-issues-with-your-enterprise-on-ghecom.md b/content/admin/data-residency/resolving-issues-with-your-enterprise-on-ghecom.md
new file mode 100644
index 000000000000..28dc6d00321a
--- /dev/null
+++ b/content/admin/data-residency/resolving-issues-with-your-enterprise-on-ghecom.md
@@ -0,0 +1,25 @@
+---
+title: Resolving issues with your enterprise on GHE.com
+shortTitle: Resolving issues
+intro: "Learn the best course of action when you encounter problems."
+versions:
+ ghec: '*'
+---
+
+## Viewing service status
+
+If you're experiencing problems with a service that usually works, like pull requests or {% data variables.product.prodname_copilot %}, you can check if an ongoing incident is affecting the service in your region. See {% data variables.product.company_short %}'s status page at https://githubstatus.com.
+
+## Getting support
+
+If you need help to resolve an issue, contact {% data variables.contact.contact_ent_support %}. Ensure you are signed in to the support portal with your {% data variables.enterprise.data_residency_site %} account. You can also purchase {% data variables.contact.premium_support %}.
+
+Some requests, such as configuration of an external identity management system, may not be in the scope of what {% data variables.contact.github_support %} can help with. See "[AUTOTITLE](/support/learning-about-github-support/about-github-support#scope-of-support)."
+
+## Giving feedback
+
+We encourage you to engage with your account team to provide feedback about your company's experience on {% data variables.enterprise.data_residency_site %}.
+
+## Further reading
+
+* "[AUTOTITLE](/support/learning-about-github-support/about-github-premium-support)"
diff --git a/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-codespaces-in-your-enterprise.md b/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-codespaces-in-your-enterprise.md
index 997ff96bccfc..f4257ee96689 100644
--- a/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-codespaces-in-your-enterprise.md
+++ b/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-codespaces-in-your-enterprise.md
@@ -15,6 +15,8 @@ redirect_from:
- /admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-codespaces-in-your-enterprise
---
+>[!NOTE] {% data variables.product.prodname_github_codespaces %} is not available for enterprises that use {% data variables.enterprise.data_residency %}.
+
## About enterprise policies for {% data variables.product.prodname_github_codespaces %}
As an enterprise owner, you can set a policy to enable or disable {% data variables.product.prodname_github_codespaces %} across organizations in your enterprise. You can enable {% data variables.product.prodname_github_codespaces %} for all organizations, enable for specific organizations, or disable for all organizations.
diff --git a/content/admin/index.md b/content/admin/index.md
index 8c3cf20b3463..56142094c2e0 100644
--- a/content/admin/index.md
+++ b/content/admin/index.md
@@ -100,6 +100,7 @@ versions:
ghes: '*'
children:
- /overview
+ - /data-residency
- /managing-your-enterprise-account
- /installing-your-enterprise-server
- /configuring-settings
diff --git a/content/admin/managing-github-actions-for-your-enterprise/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect.md b/content/admin/managing-github-actions-for-your-enterprise/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect.md
index 84a19e88a8db..fc51130edbb3 100644
--- a/content/admin/managing-github-actions-for-your-enterprise/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect.md
+++ b/content/admin/managing-github-actions-for-your-enterprise/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect.md
@@ -47,7 +47,7 @@ Before enabling access to public actions from {% data variables.product.prodname
When you enable {% data variables.product.prodname_github_connect %}, users see no change in behavior for existing workflows because {% data variables.product.prodname_actions %} searches {% data variables.location.product_location %} for each action before falling back to {% data variables.product.prodname_dotcom_the_website%}. This ensures that any custom versions of actions your enterprise has created are used in preference to their counterparts on {% data variables.product.prodname_dotcom_the_website%}.
-Automatic retirement of namespaces for actions accessed on {% data variables.product.prodname_dotcom_the_website %} blocks the potential for a man-in-the-middle attack by a malicious user with access to {% data variables.location.product_location %}. When an action on {% data variables.product.prodname_dotcom_the_website %} is used for the first time, that namespace is retired in {% data variables.location.product_location %}. This blocks any user creating an organization and repository in your enterprise that matches that organization and repository name on {% data variables.product.prodname_dotcom_the_website %}. This ensures that when a workflow runs, the intended action is always run.
+{% data reusables.actions.namespace-retirement-ghecom %}
After using an action from {% data variables.product.prodname_dotcom_the_website %}, if you want to create an action in {% data variables.location.product_location %} with the same name, first you need to make the namespace for that organization and repository available.
diff --git a/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-oidc-for-enterprise-managed-users.md b/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-oidc-for-enterprise-managed-users.md
index 3dc148f6eef1..8d779e52f3b9 100644
--- a/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-oidc-for-enterprise-managed-users.md
+++ b/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-oidc-for-enterprise-managed-users.md
@@ -44,7 +44,7 @@ OIDC does not support IdP-initiated authentication.
## Configuring OIDC for Enterprise Managed Users
1. Sign into {% data variables.product.prodname_dotcom %} as the setup user for your new enterprise with the username **@SHORT-CODE_admin**.
-{% data reusables.enterprise-accounts.access-enterprise %}
+{% data reusables.enterprise-accounts.access-enterprise-emu %}
{% data reusables.enterprise-accounts.settings-tab %}
{% data reusables.enterprise-accounts.security-tab %}
1. Under "OpenID Connect single sign-on", select **Require OIDC single sign-on**.
diff --git a/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users.md b/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users.md
index 79a7dab561ff..af1bf222866a 100644
--- a/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users.md
+++ b/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users.md
@@ -25,7 +25,7 @@ If your enterprise uses **personal accounts**, you must follow a different proce
## About SAML SSO for {% data variables.product.prodname_emus %}
-With {% data variables.product.prodname_emus %}, access to your enterprise's resources on {% data variables.product.github %} must be authenticated through your identity provider (IdP). Instead of signing in to {% data variables.product.prodname_dotcom %} with a {% data variables.product.prodname_dotcom %} username and password, members of your enterprise will sign in through your IdP.
+With {% data variables.product.prodname_emus %}, access to your enterprise's resources on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %} must be authenticated through your identity provider (IdP). Instead of signing in with a {% data variables.product.prodname_dotcom %} username and password, members of your enterprise will sign in through your IdP.
After you configure SAML SSO, we recommend storing your recovery codes so you can recover access to your enterprise in the event that your IdP is unavailable.
@@ -53,22 +53,32 @@ To configure SAML SSO for your {% data variables.enterprise.prodname_emu_enterpr
### Configure your IdP
-1. {% ifversion emu-public-scim-schema %}If you use a partner IdP, to install the {% data variables.product.prodname_emu_idp_application %} application, click one of the following links.{% else %}To install the {% data variables.product.prodname_emu_idp_application %} application, click the link for your IdP below:{% endif %}
+1. If you use a partner IdP, to install the {% data variables.product.prodname_emu_idp_application %} application, click the link for your IdP and environment.
- * [Microsoft Entra ID application](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/aad.githubenterprisemanageduser?tab=Overview) in Azure Marketplace (Entra ID was previously known as Azure AD)
- * [Okta application](https://www.okta.com/integrations/github-enterprise-managed-user) in Okta's integrations directory
- * [PingFederate downloads website](https://www.pingidentity.com/en/resources/downloads/pingfederate.html)
+ {% rowheaders %}
- * To download the PingFederate connector, navigate to the **Add-ons** tab and select **{% data variables.product.prodname_dotcom %} EMU Connector 1.0**.
+ | Identity provider | App for {% data variables.product.prodname_dotcom_the_website %} | App for {% data variables.enterprise.data_residency_site %} |
+ | ----------------- | ------------- | ------------------- |
+ | Microsoft Entra ID | [{% data variables.product.prodname_emu_idp_application %}](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/aad.githubenterprisemanageduser?tab=Overview) | [{% data variables.product.prodname_emu_idp_application %}](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/aad.githubenterprisemanageduser?tab=Overview) |
+ | Okta | [{% data variables.product.prodname_emu_idp_application %}](https://www.okta.com/integrations/github-enterprise-managed-user) | [{% data variables.product.prodname_emu_idp_application %} - ghe.com](https://www.okta.com/integrations/github-enterprise-managed-user-ghe-com/) |
+ | PingFederate | [PingFederate downloads website](https://www.pingidentity.com/en/resources/downloads/pingfederate.html) (navigate to the **Add-ons** tab, then select **{% data variables.product.prodname_dotcom %} EMU Connector 1.0**) | [PingFederate downloads website](https://www.pingidentity.com/en/resources/downloads/pingfederate.html) (navigate to the **Add-ons** tab, then select **{% data variables.product.prodname_dotcom %} EMU Connector 1.0**) |
-1. To configure SAML SSO for {% data variables.product.prodname_emus %} on your IdP, read the following documentation. {% ifversion emu-public-scim-schema %}If you don't use a partner IdP, you can use the SAML configuration reference for {% data variables.product.product_name %} to create and configure a generic SAML 2.0 application on your IdP.{% endif %}
+ {% endrowheaders %}
+
+1. To configure SAML SSO for {% data variables.product.prodname_emus %} on a partner IdP, read the relevant documentation for your IdP and environment.
+
+ {% rowheaders %}
+
+ | Identity provider | Documentation for {% data variables.product.prodname_dotcom_the_website %} | Documentation for {% data variables.enterprise.data_residency_site %} |
+ | ----------------- | ------------- | ------------------- |
+ | Microsoft Entra ID | [Microsoft Learn](https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/github-enterprise-managed-user-tutorial) | [Microsoft Learn](https://learn.microsoft.com/en-us/entra/identity/saas-apps/github-enterprise-managed-user-ghe-com-tutorial) |
+ | Okta | "[AUTOTITLE](/admin/identity-and-access-management/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-with-okta-for-enterprise-managed-users)" | "[AUTOTITLE](/admin/identity-and-access-management/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-with-okta-for-enterprise-managed-users)" |
+ | PingFederate | "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-authentication-and-provisioning-with-pingfederate)" ("Prerequisities" and "1. Configure SAML" sections) | "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-authentication-and-provisioning-with-pingfederate)" ("Prerequisities" and "1. Configure SAML" sections) |
+
+ {% endrowheaders %}
+
+ Alternatively, if you don't use a partner IdP, you can use the SAML configuration reference for {% data variables.product.product_name %} to create and configure a generic SAML 2.0 application on your IdP. See "[AUTOTITLE](/admin/identity-and-access-management/iam-configuration-reference/saml-configuration-reference)."
- * [Entra ID](https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/github-enterprise-managed-user-tutorial) on Microsoft Learn
- * "[AUTOTITLE](/admin/identity-and-access-management/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-with-okta-for-enterprise-managed-users)"
- * [PingFederate instructions](https://docs.pingidentity.com/integrations/github/github_emu_provisioner/pf_github_emu_connector.html) in the PingIdentity documentation
- {%- ifversion emu-public-scim-schema %}
- * "[AUTOTITLE](/admin/identity-and-access-management/iam-configuration-reference/saml-configuration-reference)"
- {%- endif %}
1. To test and configure your enterprise, assign yourself or the user that will configure SAML SSO for your enterprise on {% data variables.product.github %} to the application you configured for {% data variables.product.prodname_emus %} on your IdP.
> [!NOTE]
@@ -95,7 +105,7 @@ After the initial configuration of SAML SSO, the only setting you can update on
**Note**: {% data reusables.enterprise-accounts.emu-password-reset-session %}
{% endnote %}
-{% data reusables.enterprise-accounts.access-enterprise %}
+{% data reusables.enterprise-accounts.access-enterprise-emu %}
{% data reusables.enterprise-accounts.settings-tab %}
{% data reusables.enterprise-accounts.security-tab %}
diff --git a/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-with-okta-for-enterprise-managed-users.md b/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-with-okta-for-enterprise-managed-users.md
index ac1497cc4359..b9927b55455c 100644
--- a/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-with-okta-for-enterprise-managed-users.md
+++ b/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-with-okta-for-enterprise-managed-users.md
@@ -1,7 +1,7 @@
---
title: Configuring SAML single sign-on with Okta for Enterprise Managed Users
shortTitle: Configure SAML on Okta
-intro: 'Learn how to configure SAML SSO for {% data variables.product.prodname_emus %} on Okta and {% data variables.product.prodname_ghe_cloud %}.'
+intro: 'Learn how to configure Okta for {% data variables.product.prodname_emus %} on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}.'
product: '{% data reusables.gated-features.emus %}'
versions:
ghec: '*'
@@ -26,13 +26,17 @@ The {% data variables.product.prodname_emu_idp_application %} application on Okt
## Configuring Okta
-1. Install the [{% data variables.product.prodname_emu_idp_application %} application](https://www.okta.com/integrations/github-enterprise-managed-user) from Okta's integrations direction.
-1. In the {% data variables.product.prodname_emu_idp_application %} application on Okta, click the **Assignments** tab and assign the application to your Okta account.
+1. Install the Okta application for your environment.
+
+ * For **{% data variables.product.prodname_dotcom_the_website %}**, install the [{% data variables.product.prodname_emu_idp_application %} application](https://www.okta.com/integrations/github-enterprise-managed-user).
+ * For **{% data variables.enterprise.data_residency_site %}**, install the [{% data variables.product.prodname_emu_idp_application %} - {% data variables.enterprise.data_residency_site %} application](https://www.okta.com/integrations/github-enterprise-managed-user-ghe-com/).
+
+1. In the application on Okta, click the **Assignments** tab and assign the application to your Okta account.
1. Click the **Sign on** tab.
1. Next to "Enterprise Name," type the name of your {% data variables.enterprise.prodname_emu_enterprise %}.
>[!NOTE]
- >For example, if you sign in to `https://github.com/enterprises/octo-enterprise`, your enterprise name is `octo-enterprise`.
+ >For example, if you sign in to `github.com/enterprises/octocorp` or `{% data variables.enterprise.data_residency_example_domain %}`, your enterprise name is `octocorp`.
1. On the "Sign on" tab, under "SAML 2.0," click **More details**.
1. In order to configure your enterprise on {% data variables.product.product_name %} later, note down the following items:
@@ -44,24 +48,7 @@ The {% data variables.product.prodname_emu_idp_application %} application on Okt
## Configuring your enterprise
1. Sign in to your {% data variables.enterprise.prodname_emu_enterprise %}.
-{% data reusables.enterprise-accounts.access-enterprise %}
-{% data reusables.enterprise-accounts.settings-tab %}
-{% data reusables.enterprise-accounts.security-tab %}
-
-1. Under "SAML single sign-on", select **Require SAML authentication**.
-1. Under **Sign on URL**, type the "Sign on URL" that you noted down from Okta.
-1. Under **Issuer**, type the "Issuer" that you noted down from Okta.
-1. Under **Public Certificate**, paste the certificate that you noted from Okta.
-1. Before enabling SAML SSO for your enterprise, to ensure that the information you've entered is correct, click **Test SAML configuration**. {% data reusables.saml.test-must-succeed %}
-1. Click **Save**.
-
- {% note %}
-
- **Note:** After you require SAML SSO for your enterprise and save SAML settings, the setup user will continue to have access to the enterprise and will remain signed in to GitHub {% data variables.product.prodname_dotcom %} along with the {% data variables.enterprise.prodname_managed_users %} provisioned by your IdP who will also have access to the enterprise.
-
- {% endnote %}
-
-{% data reusables.enterprise-accounts.download-recovery-codes %}
+1. Using the details you noted from Okta, follow the steps in "[AUTOTITLE](/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users#configure-your-enterprise)."
## Enabling provisioning
diff --git a/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/disabling-authentication-and-provisioning-for-enterprise-managed-users.md b/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/disabling-authentication-and-provisioning-for-enterprise-managed-users.md
index 81e9e3705d8d..f7c530a8f891 100644
--- a/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/disabling-authentication-and-provisioning-for-enterprise-managed-users.md
+++ b/content/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/disabling-authentication-and-provisioning-for-enterprise-managed-users.md
@@ -46,7 +46,7 @@ If you want to migrate to a new identity provider (IdP) or tenant rather than di
{% data reusables.emus.sign-in-as-setup-user %}
1. Attempt to access your enterprise account, and use a recovery code to bypass SAML SSO or OIDC. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/managing-recovery-codes-for-your-enterprise/accessing-your-enterprise-account-if-your-identity-provider-is-unavailable)."
-{% data reusables.enterprise-accounts.access-enterprise %}
+{% data reusables.enterprise-accounts.access-enterprise-emu %}
{% data reusables.enterprise-accounts.settings-tab %}
{% data reusables.enterprise-accounts.security-tab %}
1. Under "SAML single sign-on", deselect **Require SAML authentication** or **Require OIDC single sign-on**.
diff --git a/content/admin/managing-iam/iam-configuration-reference/saml-configuration-reference.md b/content/admin/managing-iam/iam-configuration-reference/saml-configuration-reference.md
index 267a32d70de4..6ec4dbeb0539 100644
--- a/content/admin/managing-iam/iam-configuration-reference/saml-configuration-reference.md
+++ b/content/admin/managing-iam/iam-configuration-reference/saml-configuration-reference.md
@@ -23,7 +23,7 @@ To use SAML single sign-on (SSO) for authentication to {% data variables.product
{% data variables.product.product_name %} provides integration according to the SAML 2.0 specification. For more information, see the [SAML Wiki](https://wiki.oasis-open.org/security) on the OASIS website.
-You must enter unique values from your SAML IdP when configuring SAML SSO for {% data variables.product.product_name %}, and you must also enter unique values from {% data variables.product.product_name %} on your IdP. For more information about authentication for
+You must enter unique values from your SAML IdP when configuring SAML SSO for {% data variables.product.product_name %}, and you must also enter unique values from {% data variables.product.product_name %} on your IdP.
## SAML metadata
@@ -31,6 +31,8 @@ You must enter unique values from your SAML IdP when configuring SAML SSO for {%
The SP metadata for {% data variables.product.product_name %} is available for either organizations or enterprises with SAML SSO. {% data variables.product.product_name %} uses the `urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST` binding.
+If you use {% data variables.product.prodname_emus %}, you can only enable SAML SSO at the enterprise level.
+
### Organizations
You can configure SAML SSO for an individual organization in your enterprise. You can also configure SAML SSO for an organization if you use an individual organization on {% data variables.product.product_name %} and do not use an enterprise account. For more information, see "[AUTOTITLE](/organizations/managing-saml-single-sign-on-for-your-organization)."
@@ -45,7 +47,10 @@ The SP metadata for an organization on {% data variables.product.github %} is av
### Enterprises
-The SP metadata for an enterprise on {% data variables.product.github %} is available at `https://github.com/enterprises/ENTERPRISE/saml/metadata`, where **ENTERPRISE** is the name of your enterprise on {% data variables.product.github %}.
+Depending on your environment, the SP metadata for an enterprise on {% data variables.product.prodname_ghe_cloud %} is available at either:
+
+* `https://github.com/enterprises/ENTERPRISE/saml/metadata`, where **ENTERPRISE** is the name of your enterprise
+* `https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN/saml/metadata`, where **SUBDOMAIN** is the subdomain for your enterprise
| Value | Other names | Description | Example |
| :- | :- | :- | :- |
@@ -100,7 +105,7 @@ To specify more than one value for an attribute, use multiple `` element or by signing the `` element.
* Your IdP must provide a `` element as part of the `` element. You may use any persistent name identifier format.
diff --git a/content/admin/managing-iam/iam-configuration-reference/username-considerations-for-external-authentication.md b/content/admin/managing-iam/iam-configuration-reference/username-considerations-for-external-authentication.md
index 53624f9dec02..b4d2d76db57e 100644
--- a/content/admin/managing-iam/iam-configuration-reference/username-considerations-for-external-authentication.md
+++ b/content/admin/managing-iam/iam-configuration-reference/username-considerations-for-external-authentication.md
@@ -38,7 +38,12 @@ When you use external authentication, {% data variables.location.product_locatio
If you use an enterprise with {% data variables.product.prodname_emus %}, members of your enterprise authenticate to access {% data variables.product.prodname_dotcom %} through your SAML identity provider (IdP). For more information, see "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users)" and "[AUTOTITLE](/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-authentication-for-your-enterprise#authentication-methods-for-github-enterprise-server)."
-{% data variables.product.prodname_dotcom %} automatically creates a username for each person when their user account is provisioned via SCIM, by normalizing an identifier provided by your IdP, then adding an underscore and short code. If multiple identifiers are normalized into the same username, a username conflict occurs, and only the first user account is created. You can resolve username problems by making a change in your IdP so that the normalized usernames will be unique and within the 39-character limit.
+{% data variables.product.github %} automatically creates a username for each person when their user account is provisioned via SCIM.
+
+* To create the username, {% data variables.product.github %} normalizes an identifier provided by your IdP.
+* On {% data variables.product.prodname_dotcom_the_website %}, {% data variables.product.github %} also adds an underscore and your enterprise's shortcode to the end of each username.
+
+If multiple identifiers are normalized into the same username, a username conflict occurs, and only the first user account is created. You can resolve username problems by making a change in your IdP so that the normalized usernames will be unique and within the 39-character limit.
{% data reusables.enterprise-accounts.emu-only-emails-within-the-enterprise-can-conflict %}
@@ -46,13 +51,31 @@ If you use an enterprise with {% data variables.product.prodname_emus %}, member
{% ifversion ghec %}
-## About usernames for {% data variables.enterprise.prodname_managed_users %}
+## About shortcodes for {% data variables.enterprise.prodname_managed_users %}
+
+Each enterprise that uses {% data variables.enterprise.prodname_managed_users %} is associated with a shortcode, which is an alphanumeric string between three and eight characters.
+
+### Shortcodes on {% data variables.product.prodname_dotcom_the_website %}
+
+When you create an {% data variables.enterprise.prodname_emu_enterprise %} on {% data variables.product.prodname_dotcom_the_website %}, you choose a shortcode that will be used as the suffix for all your enterprise members' usernames.
-When your {% data variables.enterprise.prodname_emu_enterprise %} is created, you will choose a short code that will be used as the suffix for your enterprise members' usernames. {% data reusables.enterprise-accounts.emu-shortcode %}
+* The short code must be unique to your enterprise and contain no special characters.
+* Choose carefully, because it is **not possible** to modify the shortcode after your {% data variables.enterprise.prodname_emu_enterprise %} has been created.
The setup user who configures SAML SSO has a username in the format of **SHORT-CODE_admin**. For example, if your enterprise's shortcode is "octo", the setup user will be "octo_admin."
-When you provision a new user from your identity provider, the new {% data variables.enterprise.prodname_managed_user %} will have a {% data variables.product.prodname_dotcom %} username in the format of **@IDP-USERNAME_SHORT-CODE** (for example, "mona-cat_octo"). The IDP-USERNAME component is formed by normalizing the SCIM `userName` attribute value sent from the IdP.
+When you provision a new user from your identity provider, the new {% data variables.enterprise.prodname_managed_user %} will have a {% data variables.product.prodname_dotcom %} username in the format of **@IDP-USERNAME_SHORT-CODE** (for example, "mona-cat_octo").
+
+### Shortcodes on {% data variables.enterprise.data_residency_site %}
+
+If you use {% data variables.enterprise.data_residency %}, when you create an {% data variables.enterprise.prodname_emu_enterprise %} on {% data variables.enterprise.data_residency_site %}, your enterprise's shortcode is randomly generated.
+
+* The shortcode is **not** used as a suffix in the usernames of provisioned users.
+* The only place you are likely to see the shortcode is in the username of the setup admin, which will look like `2abvd19d_admin`.
+
+## About normalized usernames
+
+Usernames are formed by normalizing the SCIM `userName` attribute value sent from the IdP.
| Identity provider | {% data variables.product.prodname_dotcom %} username |
|-----------------------------------|----------------------|
@@ -92,7 +115,7 @@ When you configure CAS, LDAP, or SAML authentication, {% data variables.product.
### Examples of username normalization
-| Identifier on provider | Normalized username on {% data variables.product.prodname_dotcom %} | Result |
+| Identifier on provider | Normalized username on {% data variables.product.prodname_dotcom_the_website %} | Result |
| :- | :- | :- |
| The.Octocat | `the-octocat{% ifversion ghec %}_SHORT-CODE{% endif %}` | This username is created successfully. |
| !The.Octocat | `-the-octocat{% ifversion ghec %}_SHORT-CODE{% endif %}` | This username is not created, because it starts with a dash. |
diff --git a/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-authentication-and-provisioning-with-pingfederate.md b/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-authentication-and-provisioning-with-pingfederate.md
index f267cf7af021..7d0116609acc 100644
--- a/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-authentication-and-provisioning-with-pingfederate.md
+++ b/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-authentication-and-provisioning-with-pingfederate.md
@@ -1,10 +1,11 @@
---
title: Configuring authentication and provisioning with PingFederate
-intro: 'You can use PingFederate as an identity provider (IdP) to centrally manage authentication and user provisioning for {% data variables.location.product_location %}.'
-permissions: Site administrators with admin access to the IdP
+intro: 'Set up PingFederate as an identity provider (IdP) {% ifversion ghes %}to centrally manage authentication and provisioning for your enterprise{% else %}for {% data variables.product.prodname_emus %} on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}{% endif %}.'
+permissions: Enterprise owners with admin access to the IdP
shortTitle: Set up PingFederate
versions:
feature: scim-for-ghes-public-beta
+ ghec: '*'
type: how_to
topics:
- Accounts
@@ -16,31 +17,48 @@ topics:
{% data reusables.scim.ghes-beta-note %}
-{% data reusables.saml.idp-saml-and-scim-explanation %} For more information, see "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/user-provisioning-with-scim-on-ghes)."
+{% data reusables.saml.idp-saml-and-scim-explanation %} For more information, see {% ifversion ghec %}"[AUTOTITLE](/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users)."{% else %}"[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/user-provisioning-with-scim-on-ghes)."{% endif %}
## Overview
-This guide will help you to set up both SAML authentication and SCIM provisioning for {% data variables.product.prodname_ghe_server %} on PingFederate.
+This guide will help you to set up both SAML authentication and SCIM provisioning for {% data variables.product.github %} on PingFederate.
Before you start, please note the following:
+{%- ifversion ghes %}
* The use of PingFederate as an IdP for {% data variables.product.prodname_ghe_server %} is in {% data variables.release-phases.public_preview %}. Please contact your account team to provide feedback.
+{%- endif %}
* This guide is based on PingFederate version 12.1. Instructions may vary for other versions.
-* This guide assumes that you are using an LDAP server as the backing data store. JDBC data stores should work, but the instructions may vary slightly.
* This guide provides the minimal steps to configure a working setup. Because your identity directory may be connected to PingFederate differently, you’ll need to pick the correct data attributes for SAML and SCIM based on what is available from your backing data store.
## Prerequisites
+{% ifversion ghec %}
+
+If you're configuring SCIM provisioning for a new enterprise, make sure to complete all previous steps in the initial configuration process. See "[AUTOTITLE](/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users)."
+
+{% else %}
+
The general prerequisites for using SCIM on {% data variables.product.product_name %} apply. See the "Prerequisites" section in "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users#prerequisites)."
+{% endif %}
+
In addition:
+{%- ifversion ghes %}
* To configure SCIM, you must have completed **steps 1 to 4** in "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users)."
* You will need the {% data variables.product.pat_v1 %} created for the setup user to authenticate requests from PingFederate.
+{%- endif %}
* You must have installed the "GitHub EMU connector" on PingFederate. To download and install the connector, see [Install the provisioner](https://docs.pingidentity.com/integrations/github/github_emu_provisioner/wie1563995015164.html) in the PingIdentity documentation.
- * You may need to configure the firewall in PingFederate to allow outbound connections to the `https://HOSTNAME/api/v3/scim/v2` endpoint on your {% data variables.product.prodname_ghe_server %} instance.
+* To provision users with SCIM, you must use an LDAP server as the backing data store.
+* You may need to configure the firewall in PingFederate to allow outbound connections to {% ifversion ghes %}the `https://HOSTNAME/api/v3/scim/v2` endpoint on your {% data variables.product.prodname_ghe_server %} instance.{% else %}the SCIM endpoints on {% data variables.product.github %}:
+ * For **{% data variables.product.prodname_dotcom_the_website %}**: `https://api.github.com/scim/v2/enterprises/ENTERPRISE`
+ * For **{% data variables.enterprise.data_residency_site %}**: `https://api.SUBDOMAIN.ghe.com/scim/v2/enterprises/SUBDOMAIN`{% endif %}
* PingFederate's "provisioner mode" must be set to a value that allows SCIM provisioning. See the "Before you begin" section in PingIdentity's [Configuring outbound provisioning settings](https://docs.pingidentity.com/pingfederate/11.2/administrators_reference_guide/help_protocolsettingstasklet_saasglobalprovisioningsettingsstate.html) guide.
* During this procedure, you will need to upload an X509 certificate to PingFederate. You may want to create and store the certificate before proceeding. You will also need the challenge password for the certificate. See the "[Example of creating an X509 certificate](#example-of-creating-an-x509-certificate)" section later in this article.
+{%- ifversion ghec %}
+* During this procedure, you will need to upload a SAML metadata file to PingFederate. If you're setting up an enterprise that uses **{% data variables.enterprise.data_residency_short %} on {% data variables.enterprise.data_residency_site %}**, it is easiest to create this file before you start. See "[Creating a SAML metadata file for {% data variables.enterprise.data_residency_site %}](#creating-a-saml-metadata-file-for-ghecom)."
+{%- endif %}
## 1. Configure SAML
@@ -50,7 +68,7 @@ In this section you will create a SAML connector in PingFederate, set up an LDAP
1. [Set up an LDAP IdP adapter instance](#set-up-an-ldap-idp-adapter-instance)
1. [Manage SAML output from your IdP adapter](#manage-saml-output-from-your-idp-adapter)
-Before starting this section, ensure you have followed steps **1 and 2** in "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users)."
+Before starting this section, ensure you have followed {% ifversion ghec %}the previous steps in "[AUTOTITLE](/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users)."{% else %}steps **1 and 2** in "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users)."{% endif %}
### Create a SAML adapter
@@ -59,8 +77,20 @@ Before starting this section, ensure you have followed steps **1 and 2** in "[AU
1. Click **Use a template for this connection**, then select the "GitHub EMU Connector" from the "Connection Template" dropdown.
>[!NOTE] If you don't see this option, the GitHub EMU Connector has not been installed. If you need assistance, contact your Ping representative.
-1. In a new tab, sign in to your {% data variables.product.prodname_ghe_server %} instance as the built-in setup user, then navigate to `https://HOSTNAME/saml/metadata`. Download the page as an XML file.
-1. On the PingFederate "SP Connection" page, upload the file from the previous step as the metadata file. Ensure you do this within 5 minutes of downloading the file.
+
+1. To populate some fields in PingFederate's configuration, you will upload an XML file containing SAML metadata for your enterprise.
+ {%- ifversion ghes %}
+ 1. In a new tab, sign in to {% data variables.product.github %} as the built-in setup user.
+ Navigate to your SAML metadata page at `https://HOSTNAME/saml/metadata`.
+ 1. Download the page as an XML file.
+ {%- else %}
+ To locate the file:
+
+ * If you're setting up an enterprise on **{% data variables.product.prodname_dotcom_the_website %}**, you will find this file in a ZIP file attached to the "GitHub EMU Connector" on PingFederate.
+ * If you're setting up an enterprise on **{% data variables.enterprise.data_residency_site %}**, you will create the file manually. See "[Creating a SAML metadata file for {% data variables.enterprise.data_residency_site %}](#creating-a-saml-metadata-file-for-ghecom)."
+ {%- endif %}
+
+1. On the PingFederate "SP Connection" page, upload the file from the previous step as the metadata file.{% ifversion ghes %} Ensure you do this within 5 minutes of downloading the file.{% endif %}
1. Go to the "Connection Type" tab.
1. Select **Browser SSO Profiles**, and deselect **Outbound provisioning** (this will be enabled later).
1. Click **Next**.
@@ -68,9 +98,9 @@ Before starting this section, ensure you have followed steps **1 and 2** in "[AU
1. Click **Next**.
1. On the "General Info" tab, enter the following details.
- * "Partner’s Entity ID": your {% data variables.product.prodname_ghe_server %} host URL (`https://HOSTNAME.com`)
+ * "Partner’s Entity ID": your {% data variables.product.github %} host URL ({% ifversion ghec %}`https://github.com` or `https://SUBDOMAIN.ghe.com`{% else %}`https://HOSTNAME.com`{% endif %})
* "Connection Name": A descriptive name for your SP connection within PingFederate
- * "Base URL": your {% data variables.product.prodname_ghe_server %} host URL (`https://HOSTNAME.com`)
+ * "Base URL": your {% data variables.product.github %} host URL ({% ifversion ghec %}`https://github.com` or `https://SUBDOMAIN.ghe.com`{% else %}`https://HOSTNAME.com`{% endif %})
* "Transaction Logging": Standard
* All other fields may be left blank.
@@ -83,8 +113,6 @@ Before starting this section, ensure you have followed steps **1 and 2** in "[AU
### Set up an LDAP IdP adapter instance
->[!NOTE] This section applies if you use an LDAP server. If you don't use LDAP, you will need to connect to your adapter using the appropriate settings for your requirements.
-
1. On the "Create Adapter Instance" page on PingFederate, on the "Type" tab, enter the following details.
* "Instance Name": A name to identify the instance, such as `pfghadapter`
@@ -140,7 +168,7 @@ Before starting this section, ensure you have followed steps **1 and 2** in "[AU
* "Unique User Key Attribute": `username`
* Next to the `username` attribute, select "Pseudonym".
- >[!NOTE] This step is important. The adapter attribute is used to uniquely identify a user on your instance during SCIM provisioning.
+ >[!NOTE] This step is important. The adapter attribute is used to uniquely identify a user on {% data variables.product.github %} during SCIM provisioning.
1. Click **Next**, then **Next** again.
1. Review your settings on the summary page, then click **Save**.
1. On the "IdP Adapters" tab, you should see the adapter you just created. Click **Done**.
@@ -153,6 +181,23 @@ Before starting this section, ensure you have followed steps **1 and 2** in "[AU
>[!NOTE] This step is important. The normalized `SAML_SUBJECT` will need to match the normalized usernames of users provisioned by SCIM.
1. Click **Next**, **Next** again, then **Done**.
1. You should be back on the "Authentication Source Mapping" tab, and the "Adapter Instance Name" section should contain the adapter instance that you just created.
+1. Click **Next**.
+1. On the "Protocol Settings" tab, click **Configure Protocol Settings**.
+1. For the "Assertion Consumer Service URL" add a row with the following details:
+
+ * "Default" selected
+ * "Index": 0
+ * "Binding": POST
+ * "Endpoint URL": `{% ifversion ghes %}HOSTNAME{% else %}/enterprises/ENTERPRISE{% endif %}/saml/consume`{% ifversion ghec %}, where ENTERPRISE is your enterprise name or subdomain{% endif %}
+
+1. Click **Next**.
+1. On the "Allowable SAML Bindings" tab, ensure only "POST" and "REDIRECT" are selected.
+1. Click **Next**.
+1. On the "Signature Policy" page, ensure only "SIGN RESPONSE AS REQUIRED" is selected.
+1. Click **Next**.
+1. On the "Encryption Policy" tab, ensure "NONE" is selected.
+1. Click **Next**.
+1. Click **Save**.
1. Click **Next** and **Done** until you reach the "Credentials" tab.
1. On the "Credentials" tab, click **Configure Credentials**, then click **Manage Certificates**.
1. On the "Certificate Management" page, click **Import**, then upload an X509 certificate (for help, see the "[Example of creating an X509 certificate](#example-of-creating-an-x509-certificate)" section).
@@ -171,18 +216,18 @@ Before starting this section, ensure you have followed steps **1 and 2** in "[AU
### Collect information for your SAML configuration
-You will need some details from PingFederate to configure SAML on {% data variables.product.prodname_dotcom %}.
+You will need some details from PingFederate to configure SAML on {% data variables.product.github %}.
1. On the "SP Connections" page, in the row for your new connection, click **Select Action**, then **Export Metadata**.
1. On the "Metadata Signing" tab, in the row for your new connection, select the signing certificate you created above. To download the certificate, click **Next**, then click **Export**.
-1. On PingFederate, click **System** in the header, then **Server**, then **Protocol Settings**. Check that the `SAML 2.0 ENTITY ID` is defined. Make a note of this, as you will need it for the “Issuer” field in {% data variables.product.prodname_dotcom %}'s SAML settings.
+1. On PingFederate, click **System** in the header, then **Server**, then **Protocol Settings**. Check that the `SAML 2.0 ENTITY ID` is defined. Make a note of this, as you will need it for the “Issuer” field in {% data variables.product.github %}'s SAML settings.
1. Open the metadata file you downloaded, and have it ready for the next steps.
-### Configure {% data variables.product.prodname_ghe_server %}
+### Configure {% data variables.product.github %}
-1. Sign in to {% data variables.location.product_location %} as a user with access to the Management Console.
-1. Navigate to the "Authentication" section of the Management Console, then enable SAML. See "[AUTOTITLE](/admin/managing-iam/using-saml-for-enterprise-iam/configuring-saml-single-sign-on-for-your-enterprise#configuring-saml-sso)."
-1. Enter the following values from the metadata file you downloaded in the previous section.
+1. Sign in to {% data variables.product.github %} as {% ifversion ghec %}the setup user for your enterprise{% else %}a user with access to the Management Console{% endif %}.
+1. Enable SAML in your enterprise settings. See {% ifversion ghec %}"[AUTOTITLE](/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users#configure-saml-sso-for-enterprise-managed-users)."{% else %}"[AUTOTITLE](/admin/managing-iam/using-saml-for-enterprise-iam/configuring-saml-single-sign-on-for-your-enterprise#configuring-saml-sso)."{% endif %}
+1. Enter the following values from the SAML metadata file from the previous section.
* For the "Single sign-on URL," use the `location` value of the `` field. This should be a URL ending `/idp/SSO.saml2`.
* For the "Issuer," use the `entityId` value of the `` field (a URL).
@@ -198,7 +243,7 @@ In this section, you'll configure SCIM settings and attribute mapping on PingFed
1. [Map LDAP fields to SCIM](#map-ldap-fields-to-scim)
1. [Finish configuration and test](#finish-configuration-and-test)
-Before starting this section, ensure you have followed steps **1 to 4** in "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users)."
+Before starting this section, ensure you have followed {% ifversion ghec %}the previous steps in "[AUTOTITLE](/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users)."{% else %}steps **1 to 4** in "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users)."{% endif %}
### Configure SCIM settings
@@ -209,8 +254,8 @@ Before starting this section, ensure you have followed steps **1 to 4** in "[AUT
1. Click **Next** until you reach the "Outbound Provisioning" tab, then click **Configure Provisioning**.
1. On the "Target" tab, enter the following details.
- * "Base URL": `https://HOSTNAME/api/v3/scim/v2/`
- * "Access Token": The {% data variables.product.pat_v1 %} created for the built-in setup user
+ * "Base URL": {% ifversion ghes %}`https://HOSTNAME/api/v3/scim/v2`{% else %}`https://api.github.com/scim/v2/enterprises/{enterprise}/` or `https://api.SUBDOMAIN.ghe.com/scim/v2/enterprises/SUBDOMAIN`{% endif %}
+ * "Access Token": The {% data variables.product.pat_v1 %} created for the setup user
1. Click **Next**.
1. On the "Manage Channel" tab, click **Create**, then enter a unique channel name, such as `pfghscim`.
1. Click **Next**.
@@ -222,16 +267,16 @@ Before starting this section, ensure you have followed steps **1 to 4** in "[AUT
### Map LDAP fields to SCIM
-On the "Attribute Mapping" tab, you will need to map fields from your LDAP server to SCIM fields. See the following list for {% data variables.product.prodname_dotcom %}'s supported SCIM fields and the values expected in each one.
+On the "Attribute Mapping" tab, you will need to map fields from your LDAP server to SCIM fields. See the following list for {% data variables.product.github %}'s supported SCIM fields and the values expected in each one.
-* **Username**: This will be normalized and used as the {% data variables.product.company_short %} username for the provisioned user. See "[AUTOTITLE](/admin/managing-iam/iam-configuration-reference/username-considerations-for-external-authentication#about-username-normalization)." This must match the normalization of the subject sent with the SAML assertion that you configured with the `SAML_SUBJECT` property in PingFederate.
+* **Username**: This will be normalized and used as the {% data variables.product.github %} username for the provisioned user. See "[AUTOTITLE](/admin/managing-iam/iam-configuration-reference/username-considerations-for-external-authentication#about-username-normalization)." This must match the normalization of the subject sent with the SAML assertion that you configured with the `SAML_SUBJECT` property in PingFederate.
* **Email**: A field containing the user's email address.
* **Display Name**: A human-readable name for the user.
* **Formatted Name**: The user's full name, including all middle names, titles, and suffixes, formatted for display.
* **First Name**: The first name of the user.
* **Last Name**: The last name of the user.
* **External ID**: This identifier is generated by an IdP provider.
-* **Roles**: This field should contain a string that represents the user's intended role on {% data variables.product.prodname_dotcom %}. Valid roles are `enterprise_owner` and `user`.
+* **Roles**: This field should contain a string that represents the user's intended role on {% data variables.product.github %}. Valid roles are {% ifversion ghec %}`enterprise_owner`, `user`, `billing_manager`, and `guest_collaborator`{% else %}`enterprise_owner` and `user`{% endif %}.
When you have finished configuring these settings, click **Next**.
@@ -240,14 +285,18 @@ When you have finished configuring these settings, click **Next**.
1. On the "Activation & Summary" tab, for the "Channel Status," select **Active**.
1. On the "Manage Channels" tab, click **Done**.
1. On the "Outbound Provisioning" tab, click **Save**. SCIM is now configured and enabled.
-1. Wait a few minutes for provisioning to run, then open a new private browser window and navigate to your instance at `https://HOSTNAME/login`.
+1. Wait a few minutes for provisioning to run, then open a new private browser window and navigate to {% data variables.product.github %}.
1. Click **Sign in with SAML**. You should be redirected to the PingFederate login page.
-1. You should be able to sign in with the credentials for a user in the LDAP server that has been provisioned to {% data variables.product.prodname_ghe_server %}.
+1. You should be able to sign in with the credentials for a user in the LDAP server that has been provisioned to {% data variables.product.github %}.
PingFederate provisioning handles users and groups independently. Users must be assigned directly in order to be provisioned. Users who are in an assigned group but not directly assigned will not be provisioned.
+{% ifversion ghes %}
+
When you have finished configuring SCIM, you may want to disable some SAML settings you enabled for the configuration process. See "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users#6-disable-optional-settings)."
+{% endif %}
+
## Example of creating an X509 certificate
There are multiple ways to create an X509 certificate. Here is an example that may work for your requirements.
@@ -289,3 +338,31 @@ There are multiple ways to create an X509 certificate. Here is an example that m
```shell copy
ls | grep pfgh256.p12
```
+
+{% ifversion ghec %}
+
+## Creating a SAML metadata file for {% data variables.enterprise.data_residency_site %}
+
+Because some values differ from the metadata file that PingFederate provides for {% data variables.product.prodname_dotcom_the_website %}, you will create an XML file for your enterprise's SAML metadata manually.
+
+1. Copy the following XML into a text editor.
+
+ ```xml copy
+
+
+
+ urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
+
+
+
+ ```
+
+1. Replace all instances of SUBDOMAIN with your enterprise's subdomain of {% data variables.enterprise.data_residency_site %}. For example: `octocorp`.
+1. Save the file as an XML file.
+1. Return to the instructions in "[Creating a SAML adapter](#create-a-saml-adapter)."
+
+{% endif %}
diff --git a/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users.md b/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users.md
index 09fc513b87a6..6d13799eca08 100644
--- a/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users.md
+++ b/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users.md
@@ -120,7 +120,7 @@ To ensure you can continue to sign in and configure settings when SCIM is enable
## 4. Enable SCIM on your instance
1. Sign in to your instance as the **built-in setup user** you created earlier.
-{% data reusables.enterprise-accounts.access-enterprise %}
+{% data reusables.enterprise-accounts.access-enterprise-emu %}
{% data reusables.enterprise-accounts.settings-tab %}
{% data reusables.enterprise-accounts.security-tab %}
1. Under "SCIM Configuration", select **Enable SCIM configuration**.
@@ -150,12 +150,12 @@ To use a partner IdP's application both authentication and provisioning, review
{% rowheaders %}
-| IdP | SSO method | More information |
+| IdP | SSO method | Instructions |
|---|---|---|
| Microsoft Entra ID (previously known as Azure AD) | OIDC | [Tutorial: Configure GitHub Enterprise Managed User (OIDC) for automatic user provisioning](https://docs.microsoft.com/azure/active-directory/saas-apps/github-enterprise-managed-user-oidc-provisioning-tutorial) on Microsoft Learn |
| Entra ID | SAML | [Tutorial: Configure GitHub Enterprise Managed User for automatic user provisioning](https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/github-enterprise-managed-user-provisioning-tutorial) on Microsoft Learn |
| Okta | SAML | "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/configuring-scim-provisioning-for-enterprise-managed-users-with-okta)" |
-| PingFederate | SAML | [Configure PingFederate for provisioning and SSO](https://docs.pingidentity.com/integrations/github/github_emu_provisioner/vup1682006069653.html) and [Managing channels](https://docs.pingidentity.com/pingfederate/latest/administrators_reference_guide/help_saasmanagementtasklet_saasmanagementstate.html) in the PingFederate documentation |
+| PingFederate | SAML | The "Prerequisites" and "2. Configure SCIM" sections in "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-authentication-and-provisioning-with-pingfederate)" |
{% endrowheaders %}
@@ -171,7 +171,7 @@ To use a partner IdP's application for both authentication and provisioning, rev
### Configuring provisioning for other identity management systems
-If you don't use a partner IdP, or if you only use a partner IdP for authentication, you can manage the lifecycle of user accounts using {% data variables.product.company_short %}'s REST API endpoints for SCIM provisioning. These endpoints are in {% data variables.release-phases.public_preview %} and subject to change. See "[AUTOTITLE](/admin/identity-and-access-management/provisioning-user-accounts-for-enterprise-managed-users/provisioning-users-and-groups-with-scim-using-the-rest-api)."
+If you don't use a partner IdP, or if you only use a partner IdP for authentication, you can manage the lifecycle of user accounts using {% data variables.product.company_short %}'s REST API endpoints for SCIM provisioning. See "[AUTOTITLE](/admin/identity-and-access-management/provisioning-user-accounts-for-enterprise-managed-users/provisioning-users-and-groups-with-scim-using-the-rest-api)."
{% ifversion emu-public-scim-schema %}
@@ -182,7 +182,7 @@ If you don't use a partner IdP, or if you only use a partner IdP for authenticat
**Note**: {% data reusables.enterprise-accounts.emu-password-reset-session %}
{% endnote %}
-{% data reusables.enterprise-accounts.access-enterprise %}
+{% data reusables.enterprise-accounts.access-enterprise-emu %}
{% data reusables.enterprise-accounts.settings-tab %}
{% data reusables.enterprise-accounts.security-tab %}
1. Under "Open SCIM Configuration", select "Enable open SCIM configuration".
diff --git a/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-with-okta.md b/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-with-okta.md
index 13a88c720a22..a7f91ad37db3 100644
--- a/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-with-okta.md
+++ b/content/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-with-okta.md
@@ -1,7 +1,7 @@
---
title: Configuring {% ifversion ghec %}SCIM{% else %}authentication and{% endif %} provisioning with Okta
shortTitle: Set up Okta
-intro: 'Learn how to configure Okta to communicate with your enterprise using System for Cross-domain Identity Management (SCIM).'
+intro: 'Learn how to configure Okta to communicate with your enterprise{% ifversion ghec %} on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}{% endif %}.'
product: '{% data reusables.gated-features.emus %}'
permissions: '{% ifversion ghes %}Site administrators{% else %}People{% endif %} with admin access to the IdP'
allowTitleToDifferFromFilename: true
@@ -63,24 +63,14 @@ In addition:
* To configure SCIM, you must have completed **steps 1 to 4** in "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users)."
* You will need the {% data variables.product.pat_v1 %} created for the setup user to authenticate requests from Okta.
{% else %}
-* {% data variables.product.company_short %} recommends that you only authenticate requests with Okta's SCIM application using a {% data variables.product.pat_v1 %} associated with your enterprise's setup user. The token requires the **scim:enterprise** scope. For more information, see "[AUTOTITLE](/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users#create-a-personal-access-token)."
+If you're configuring SCIM provisioning for a new enterprise, make sure to complete all previous steps in the initial configuration process. See "[AUTOTITLE](/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users)."
+
+In addition:
{% endif %}
* You must use Okta's application for both authentication and provisioning.
* {% data reusables.scim.your-okta-product-must-support-scim %}
-{% ifversion ghec %}
-
-## 1. Set your enterprise name
-
-After your {% data variables.enterprise.prodname_emu_enterprise %} has been created, you can begin to configure provisioning by setting your enterprise name in Okta.
-
-1. Navigate to your {% data variables.product.prodname_emu_idp_application %} application on Okta.
-1. Click the **Sign On** tab.
-1. To make changes, click **Edit**.
-1. Under "Advanced Sign-on Settings", in the "Enterprise Name" text box, type your enterprise name. For example, if you access your enterprise at `https://github.com/enterprises/octoinc`, your enterprise name would be "octoinc".
-1. To save your enterprise name, click **Save**.
-
-{% else %}
+{% ifversion ghes %}
## 1. Configure SAML
@@ -108,11 +98,17 @@ Before starting this section, ensure you have followed steps **1 and 2** in "[AU
1. Sign in to {% data variables.location.product_location %} as a user with access to the Management Console.
1. Configure SAML using the information you have gathered. See "[AUTOTITLE](/admin/managing-iam/using-saml-for-enterprise-iam/configuring-saml-single-sign-on-for-your-enterprise#configuring-saml-sso)."
-{% endif %}
-
## 2. Configure SCIM
-After {% ifversion ghec %}setting your enterprise name{% else %}configuring your SAML settings{% endif %}, you can proceed to configure provisioning settings.
+After configuring your SAML settings, you can proceed to configure provisioning settings.
+
+{% elsif ghec %}
+
+## Configuring SCIM
+
+After you have configured your SAML settings in Okta's app, you can proceed to configure provisioning settings. If you haven't already configured SAML settings, see "[AUTOTITLE](/admin/managing-iam/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-with-okta-for-enterprise-managed-users)."
+
+{% endif %}
{% ifversion ghec %}
To configure provisioning, the setup user {% ifversion ghec %}with the **@SHORT-CODE_admin** username {% endif %}will need to provide a {% data variables.product.pat_v1 %} with the **scim:enterprise** scope. See "[AUTOTITLE](/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users#create-a-personal-access-token)."
@@ -125,7 +121,7 @@ Before starting this section, ensure you have followed steps **1 to 4** in "[AUT
1. In the settings menu, click **Integration**.
1. To make changes, click **Edit**.
1. Click **Configure API integration**.
-1. In the "API Token" field, enter the {% data variables.product.pat_v1 %} with the **admin:enterprise** scope belonging to the setup user.
+1. In the "API Token" field, enter the {% data variables.product.pat_v1 %} belonging to the setup user.
{% data reusables.scim.import-groups-unsupported %}
@@ -136,8 +132,12 @@ Before starting this section, ensure you have followed steps **1 to 4** in "[AUT
1. Select **Enable** to the right of **Create Users**, **Update User Attributes**, and **Deactivate Users**.
1. To finish configuring provisioning, click **Save**.
+{% ifversion ghes %}
+
When you have finished configuring SCIM, you may want to disable some SAML settings you enabled for the configuration process. See "[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/configuring-scim-provisioning-for-users#6-disable-optional-settings)."
+{% endif %}
+
## How do I assign users and groups?
{% data reusables.enterprise-managed.assigning-users %}
diff --git a/content/admin/managing-iam/provisioning-user-accounts-with-scim/provisioning-users-and-groups-with-scim-using-the-rest-api.md b/content/admin/managing-iam/provisioning-user-accounts-with-scim/provisioning-users-and-groups-with-scim-using-the-rest-api.md
index 49ec4dfef56e..da0291ad9f0e 100644
--- a/content/admin/managing-iam/provisioning-user-accounts-with-scim/provisioning-users-and-groups-with-scim-using-the-rest-api.md
+++ b/content/admin/managing-iam/provisioning-user-accounts-with-scim/provisioning-users-and-groups-with-scim-using-the-rest-api.md
@@ -117,6 +117,9 @@ However, you can safely retrieve information from {% data variables.product.comp
* Requests that don't match the API's expectations will return a `400 Bad Request` error.
* REST API endpoints for provisioning users with SCIM require a `User-Agent` header. {% data variables.product.product_name %} will reject requests without this header.
+{%- ifversion ghec %}
+* If your enterprise is on {% data variables.enterprise.data_residency_site %}, ensure you send API requests to the endpoint for your enterprise at `{% data variables.enterprise.data_residency_api %}`.
+{%- endif %}
### Provision users before you provision groups
diff --git a/content/admin/managing-iam/reconfiguring-iam-for-enterprise-managed-users/migrating-from-saml-to-oidc.md b/content/admin/managing-iam/reconfiguring-iam-for-enterprise-managed-users/migrating-from-saml-to-oidc.md
index f2fe83100aa3..2e44893f5724 100644
--- a/content/admin/managing-iam/reconfiguring-iam-for-enterprise-managed-users/migrating-from-saml-to-oidc.md
+++ b/content/admin/managing-iam/reconfiguring-iam-for-enterprise-managed-users/migrating-from-saml-to-oidc.md
@@ -66,10 +66,12 @@ To migrate your enterprise from SAML to OIDC, you will disable your existing {%
{% endwarning %}
1. In a new tab or window, while signed in as the setup user, create a {% data variables.product.pat_v1 %} with the **scim:enterprise** scope and **no expiration** and copy it to your clipboard. For more information about creating a new token, see "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/configuring-scim-provisioning-for-enterprise-managed-users#creating-a-personal-access-token)."
-1. In the provisioning settings for the {% data variables.product.prodname_emu_idp_oidc_application %} application in the Microsoft Entra admin center, under "Tenant URL", type `https://api.github.com/scim/v2/enterprises/YOUR_ENTERPRISE`, replacing YOUR_ENTERPRISE with the name of your enterprise account.
+1. In the provisioning settings for the {% data variables.product.prodname_emu_idp_oidc_application %} application in the Microsoft Entra admin center, under "Tenant URL", type the tenant URL for your enterprise:
- For example, if your enterprise account's URL is `https://github.com/enterprises/octo-corp`, the name of the enterprise account is `octo-corp`.
-1. Under "Secret token", paste the {% data variables.product.pat_v1 %} with the **admin:enterprise** scope that you created earlier.
+ * For **{% data variables.product.prodname_dotcom_the_website %}**: `https://api.github.com/scim/v2/enterprises/YOUR_ENTERPRISE`, replacing YOUR_ENTERPRISE with the name of your enterprise account. For example, if your enterprise account's URL is `https://github.com/enterprises/octo-corp`, the name of the enterprise account is `octo-corp`.
+ * For **{% data variables.enterprise.data_residency_site %}**: `https://api.SUBDOMAIN.ghe.com/scim/v2/enterprises/SUBDOMAIN`, where SUBDOMAIN is your enterprise's subdomain on {% data variables.enterprise.data_residency_site %}.
+
+1. Under "Secret token", paste the {% data variables.product.pat_v1 %} with the **scim:enterprise** scope that you created earlier.
1. To test the configuration, click **Test Connection**.
1. To save your changes, at the top of the form, click **Save**.
1. In the Microsoft Entra admin center, copy the users and groups from the old {% data variables.product.prodname_emu_idp_application %} application to the new {% data variables.product.prodname_emu_idp_oidc_application %} application.
diff --git a/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md b/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md
index 31b082828c4f..9bbfbb22e07f 100644
--- a/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md
+++ b/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md
@@ -16,7 +16,7 @@ redirect_from:
With {% data variables.product.prodname_emus %}, you can control the user accounts of your enterprise members through your identity provider (IdP). See "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users)."
-{% data variables.enterprise.prodname_managed_users_caps %} can contribute only to private and internal repositories within their enterprise and their own private repositories. They have read-only access to the wider {% data variables.product.prodname_dotcom %} community. These visibility and access restrictions apply to all requests, including API requests.
+{% data variables.enterprise.prodname_managed_users_caps %} can contribute only to private and internal repositories within their enterprise and their own private repositories. On {% data variables.product.prodname_dotcom_the_website %}, they have read-only access to the wider {% data variables.product.prodname_dotcom %} community. These visibility and access restrictions apply to all requests, including API requests.
## Authentication
@@ -42,14 +42,15 @@ With {% data variables.product.prodname_emus %}, you can control the user accoun
## {% data variables.product.prodname_github_codespaces %}
-* {% data variables.enterprise.prodname_managed_users_caps %} can only create codespaces that are owned by the enterprise. This means that {% data variables.enterprise.prodname_managed_users %}:
+* On {% data variables.product.prodname_dotcom_the_website %}, {% data variables.enterprise.prodname_managed_users %} can only create codespaces that are owned by the enterprise. This means that {% data variables.enterprise.prodname_managed_users %}:
* Can create codespaces for repositories owned by their organization, or forks of these repositories, provided that the organization can pay for {% data variables.product.prodname_github_codespaces %}. See "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization)."
* Cannot create codespaces for their personal repositories, any repositories outside their organizations, or {% data variables.product.company_short %}'s public templates for {% data variables.product.prodname_github_codespaces %}.
* Cannot publish a codespace created from a template to a new repository.
+* On {% data variables.enterprise.data_residency_site %}, {% data variables.product.prodname_github_codespaces %} is not available to any users.
## {% data variables.product.prodname_copilot %}
-* {% data variables.enterprise.prodname_managed_users_caps %} cannot sign up for {% data variables.product.prodname_copilot_for_individuals %}. To allow a managed user to use {% data variables.product.prodname_copilot_short %}, you must grant the user access to a {% data variables.product.prodname_copilot_business_short %} or {% data variables.product.prodname_copilot_enterprise_short %} subscription. See "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+* {% data variables.enterprise.prodname_managed_users_caps %} cannot sign up for {% data variables.product.prodname_copilot_for_individuals %}. To allow a managed user to use {% data variables.product.prodname_copilot_short %}, you must grant the user access to a {% data variables.product.prodname_copilot_business_short %} or {% data variables.product.prodname_copilot_enterprise_short %} subscription. See "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
## {% data variables.product.prodname_pages %}
@@ -57,7 +58,7 @@ With {% data variables.product.prodname_emus %}, you can control the user accoun
## Interactions
-* {% data variables.enterprise.prodname_managed_users_caps %} can view all public repositories, but cannot interact with repositories outside of the enterprise in any of the following ways:
+* On {% data variables.product.prodname_dotcom_the_website %}, {% data variables.enterprise.prodname_managed_users %} can view all public repositories, but cannot interact with repositories outside of the enterprise in any of the following ways:
* Push code to the repository
* Create issues or pull requests within the repository
* Create or comment on discussions within the repository
diff --git a/content/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users.md b/content/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users.md
index 3223567fabc8..c207b6c9834a 100644
--- a/content/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users.md
+++ b/content/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users.md
@@ -27,7 +27,7 @@ topics:
allowTitleToDifferFromFilename: true
---
-With {% data variables.product.prodname_emus %}, you manage the lifecycle and authentication of your users on {% data variables.product.prodname_dotcom %} from an external identity management system, or IdP:
+With {% data variables.product.prodname_emus %}, you manage the lifecycle and authentication of your users on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %} from an external identity management system, or IdP:
* Your IdP **provisions new user accounts** on {% data variables.product.prodname_dotcom %}, with access to your enterprise.
* Users must **authenticate on your IdP** to access your enterprise's resources on {% data variables.product.prodname_dotcom %}.
diff --git a/content/admin/managing-iam/understanding-iam-for-enterprises/about-identity-and-access-management.md b/content/admin/managing-iam/understanding-iam-for-enterprises/about-identity-and-access-management.md
index cbf98bc657c0..d5855b760d76 100644
--- a/content/admin/managing-iam/understanding-iam-for-enterprises/about-identity-and-access-management.md
+++ b/content/admin/managing-iam/understanding-iam-for-enterprises/about-identity-and-access-management.md
@@ -58,7 +58,7 @@ You can choose between configuring SAML at the enterprise level, which applies t
### Authentication with {% data variables.product.prodname_emus %} and federation
-If you need more control of the accounts for your enterprise members on {% data variables.product.github %}, you can use {% data variables.product.prodname_emus %}. With {% data variables.product.prodname_emus %}, you provision and manage accounts for your enterprise members on {% data variables.product.github %} using your IdP. Each member signs into an account that you create, and your enterprise manages the account. Contributions to the rest of {% data variables.product.prodname_dotcom_the_website %} are restricted. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users)."
+If you need more control of the accounts for your enterprise members on {% data variables.product.github %}, you can use {% data variables.product.prodname_emus %}. With {% data variables.product.prodname_emus %}, you provision and manage accounts for your enterprise members on {% data variables.product.github %} using your IdP. Each member signs into an account that you create, and your enterprise manages the account. Contributions outside the enterprise are restricted. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users)."
{% elsif ghes %}
diff --git a/content/admin/managing-iam/understanding-iam-for-enterprises/about-saml-for-enterprise-iam.md b/content/admin/managing-iam/understanding-iam-for-enterprises/about-saml-for-enterprise-iam.md
index 7ae7705122df..4d39c13cad5e 100644
--- a/content/admin/managing-iam/understanding-iam-for-enterprises/about-saml-for-enterprise-iam.md
+++ b/content/admin/managing-iam/understanding-iam-for-enterprises/about-saml-for-enterprise-iam.md
@@ -26,7 +26,7 @@ redirect_from:
- /admin/identity-and-access-management/understanding-iam-for-enterprises/about-saml-for-enterprise-iam
---
-## About SAML SSO for {% ifversion ghec %}your enterprise on {% endif %}{% ifversion ghec or ghes %}{% data variables.location.product_location %}{% endif %}
+## About SAML SSO for your enterprise
{% ifversion ghec %}
diff --git a/content/admin/managing-iam/understanding-iam-for-enterprises/choosing-an-enterprise-type-for-github-enterprise-cloud.md b/content/admin/managing-iam/understanding-iam-for-enterprises/choosing-an-enterprise-type-for-github-enterprise-cloud.md
index 7b6df4cf0d38..a05356b20c7b 100644
--- a/content/admin/managing-iam/understanding-iam-for-enterprises/choosing-an-enterprise-type-for-github-enterprise-cloud.md
+++ b/content/admin/managing-iam/understanding-iam-for-enterprises/choosing-an-enterprise-type-for-github-enterprise-cloud.md
@@ -46,6 +46,12 @@ If you do not choose {% data variables.product.prodname_emus %}:
Consider personal accounts if using your external identity management system as the source of truth for user and access management would add too much complexity. For example, you do not have an established process for onboarding new users in the system.
+## Do you need to choose where your data is stored?
+
+To help you meet compliance requirements, {% data variables.product.prodname_ghe_cloud %} includes the option to store your enterprise's code and data in a specific region, on your own subdomain of {% data variables.enterprise.data_residency_site %}. See "[AUTOTITLE](/admin/data-residency/about-github-enterprise-cloud-with-data-residency)."
+
+If you adopt {% data variables.enterprise.data_residency %}, you **must** use {% data variables.product.prodname_emus %}.
+
## Is your external identity management system supported?
Consider whether you already use, or can adopt, a supported identity management system.
diff --git a/content/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users.md b/content/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users.md
index 52bf95738513..bef610257f98 100644
--- a/content/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users.md
+++ b/content/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users.md
@@ -21,11 +21,18 @@ Before your developers can use {% data variables.product.prodname_ghe_cloud %} w
To use {% data variables.product.prodname_emus %}, you need a **separate type of enterprise account** with {% data variables.product.prodname_emus %} enabled.
-Start a free 30-day trial of {% data variables.product.prodname_ghe_cloud %}, and choose **Enterprise with managed users**. See "[AUTOTITLE](/admin/overview/setting-up-a-trial-of-github-enterprise-cloud)."
+* To create an enterprise on {% data variables.product.prodname_dotcom_the_website %}, start a free 30-day trial of {% data variables.product.prodname_ghe_cloud %}, and choose **Enterprise with managed users**. See "[AUTOTITLE](/admin/overview/setting-up-a-trial-of-github-enterprise-cloud)."
+* If you require {% data variables.enterprise.data_residency_short %}, contact {% data variables.contact.contact_enterprise_sales %}.
+
+### Understand where your enterprise is hosted
+
+{% data variables.product.prodname_emus %} are available on {% data variables.product.prodname_dotcom_the_website %} or, if you use {% data variables.enterprise.data_residency_short %}, on your own subdomain of {% data variables.enterprise.data_residency_site %}.
+
+The setup process for the environments is similar. However, you will need to **pay attention** to where your enterprise is hosted as you follow the process. For example, there may be differences in the application you need to use in your identity provider, or the configuration values you need to provide.
## Create the setup user
-After we create your enterprise, you will receive an email inviting you to choose a password for the setup user, which is used to configure authentication and provisioning. The username is your enterprise's shortcode suffixed with `_admin`, for example `fabrikam_admin`.
+After we create your enterprise, you will receive an email inviting you to choose a password for the setup user, which is used to configure authentication and provisioning. The username is your enterprise's shortcode (chosen by you or randomly generated), suffixed with `_admin`. For example: `fabrikam_admin`.
Using an **incognito or private browsing window**:
@@ -37,38 +44,21 @@ Using an **incognito or private browsing window**:
## Create a {% data variables.product.pat_generic %}
-Next, create a {% data variables.product.pat_generic %} that you can use to configure provisioning.
-
-* You must be **signed in as the setup user** when you create the token.
-* The token must have at least the **scim:enterprise** scope.
-* The token must have **no expiration**.
-
-To learn how to create a {% data variables.product.pat_v1 %}, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)."
+{% data reusables.enterprise-accounts.emu-create-a-pat %}
## Configure authentication
-Next, configure how your members will authenticate.
-
-**If you're using Entra ID** as your IdP, you can choose between OpenID Connect (OIDC) and Security Assertion Markup Language (SAML).
-* We recommend OIDC, which includes support for Conditional Access Policies (CAP).
-* If you require multiple enterprises provisioned from one tenant, you must use SAML for each enterprise after the first.
-
-**If you're using another IdP**, like Okta or PingFederate, you must use SAML to authenticate your members.
-
-To get started, read the guide for your chosen authentication method.
-
-* "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/configuring-oidc-for-enterprise-managed-users)"
-* "[AUTOTITLE](/admin/identity-and-access-management/managing-iam-with-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users)"
+{% data reusables.enterprise-accounts.emu-configure-authentication %}
{% data variables.product.company_short %} offers a "paved-path" integration and full support if you use a partner IdP for both authentication and provisioning. Alternatively, you can use any system, or combination of systems, that conforms to SAML 2.0 and SCIM 2.0. However, support for resolving problems with these systems may be limited. For more details, see "[AUTOTITLE](/admin/identity-and-access-management/understanding-iam-for-enterprises/about-enterprise-managed-users#identity-management-systems)."
## Configure provisioning
-After you configure authentication, you can configure SCIM provisioning, which is how your IdP will create {% data variables.enterprise.prodname_managed_users %} on {% data variables.product.prodname_dotcom %}. See "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/configuring-scim-provisioning-for-enterprise-managed-users)."
+{% data reusables.enterprise-accounts.emu-configure-provisioning %}
## Manage organization membership
-After authentication and provisioning are configured, you can start managing organization membership for your {% data variables.enterprise.prodname_managed_users %} by synchronizing IdP groups with teams. See "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/managing-team-memberships-with-identity-provider-groups)."
+{% data reusables.enterprise-accounts.emu-manage-org-membership %}
## Support developers with multiple user accounts
diff --git a/content/admin/managing-your-enterprise-account/changing-the-url-for-your-enterprise.md b/content/admin/managing-your-enterprise-account/changing-the-url-for-your-enterprise.md
index 7c5a1bec48a3..1ca94de3f765 100644
--- a/content/admin/managing-your-enterprise-account/changing-the-url-for-your-enterprise.md
+++ b/content/admin/managing-your-enterprise-account/changing-the-url-for-your-enterprise.md
@@ -13,7 +13,7 @@ shortTitle: Change enterprise URL
## About changes to enterprise slugs
-When you create an enterprise, you choose a "slug" for the enterprise, which is a string used in the URL for your enterprise. For example, if you chose `octo-enterprise` as the slug, the URL for your enterprise would be `https://github.com/enterprises/octo-enterprise`.
+When you create an enterprise, you choose a "slug" for the enterprise, which is a string used in the URL for your enterprise. For example, if you chose `octo-enterprise` as the slug, the URL for your enterprise on {% data variables.product.prodname_dotcom_the_website %} would be `https://github.com/enterprises/octo-enterprise`.
If your company pays for {% data variables.product.prodname_ghe_cloud %} by credit card or PayPal, you can change the slug in the settings for your enterprise. When you change the slug, {% data variables.product.company_short %} does not set up any redirects from the old URL. Your old enterprise slug will immediately become available for another customer to use.
diff --git a/content/admin/managing-your-enterprise-account/creating-a-readme-for-an-enterprise.md b/content/admin/managing-your-enterprise-account/creating-a-readme-for-an-enterprise.md
index be62eb9013c2..3309ea4feb3a 100644
--- a/content/admin/managing-your-enterprise-account/creating-a-readme-for-an-enterprise.md
+++ b/content/admin/managing-your-enterprise-account/creating-a-readme-for-an-enterprise.md
@@ -15,7 +15,7 @@ shortTitle: Create a README
{% data reusables.enterprise.about-readmes %}
-The README is displayed on the enterprise's "Overview" page, which is the page you see when you navigate to the enterprise at `{% data variables.product.product_url %}/enterprises/YOUR-ENTERPRISE`. This page is only visible to members of the enterprise.
+The README is displayed on the enterprise's "Overview" page, which is the landing page you see when you navigate to the enterprise. This page is only visible to members of the enterprise.
You can also create READMEs for organizations in your enterprise, visible either publicly or only to members. For more information, see "[AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/customizing-your-organizations-profile)."
diff --git a/content/admin/managing-your-enterprise-account/creating-an-enterprise-account.md b/content/admin/managing-your-enterprise-account/creating-an-enterprise-account.md
index d6a3fcde9e41..635835c14ff3 100644
--- a/content/admin/managing-your-enterprise-account/creating-an-enterprise-account.md
+++ b/content/admin/managing-your-enterprise-account/creating-an-enterprise-account.md
@@ -28,11 +28,12 @@ In most cases, you can create an enterprise account **yourself**.
* When you start a free trial of {% data variables.product.prodname_ghe_cloud %}, you'll create an enterprise account as part of the process. See "[AUTOTITLE](/admin/overview/setting-up-a-trial-of-github-enterprise-cloud)."
* If you currently use {% data variables.product.prodname_ghe_cloud %} with a single organization, you can upgrade to an enterprise account by following the steps later in this article.
-You'll **need help** creating an enterprise account for:
+You'll **need help** creating an enterprise account if you require:
* {% data variables.product.prodname_ghe_server %}
+* {% data variables.enterprise.data_residency %}
* Invoicing
-* Managing {% data variables.product.prodname_copilot_for_business %} licenses without adopting {% data variables.product.prodname_enterprise %}
+* A dedicated enterprise for managing {% data variables.product.prodname_copilot_for_business %} licenses without adopting {% data variables.product.prodname_enterprise %}
In these cases, contact {% data variables.contact.contact_enterprise_sales %}.
diff --git a/content/admin/managing-your-enterprise-account/deleting-an-enterprise-account.md b/content/admin/managing-your-enterprise-account/deleting-an-enterprise-account.md
index 06af4b623123..e97626a218dd 100644
--- a/content/admin/managing-your-enterprise-account/deleting-an-enterprise-account.md
+++ b/content/admin/managing-your-enterprise-account/deleting-an-enterprise-account.md
@@ -14,7 +14,13 @@ redirect_from:
- /admin/overview/deleting-an-enterprise-account
---
-## About enterprise account deletion
+## Can I delete my enterprise account?
+
+You can only delete your enterprise account if your enterprise uses personal accounts on {% data variables.product.prodname_dotcom_the_website %}, and your business pays by credit card or PayPal.
+
+If your company uses {% data variables.product.prodname_emus %} or pays via invoice, and you want to stop paying for {% data variables.product.prodname_enterprise %} altogether, contact {% data variables.contact.contact_enterprise_sales %}.
+
+## What happens when I delete the account?
Deleting your enterprise account cancels the enterprise license and removes the enterprise account from {% data variables.product.prodname_dotcom %}.
@@ -22,10 +28,6 @@ If there are any outstanding balances on your account, you will be charged a one
When you delete your enterprise account, you lose the policies, billing settings, and user roles you've configured. You do not lose data like repositories or packages, unless you choose to delete the organizations that contain that data.
-If you want to restore an enterprise account that you have deleted, you must contact {% data variables.contact.contact_support %}.
-
-You can only delete your enterprise account if your company pays by credit card or PayPal. If your company pays via invoice and you want to stop paying for {% data variables.product.prodname_enterprise %} altogether, contact {% data variables.contact.contact_enterprise_sales %}.
-
If you upgraded to an enterprise account from a single organization and then delete that enterprise account, the associated billing history will also be deleted. We recommend that you save any important billing information before deleting your enterprise account.
## Prerequisites
@@ -44,3 +46,5 @@ You must remove, transfer, or delete all organizations in the enterprise before
{% data reusables.enterprise-accounts.billing-tab %}
1. At the top of the page, click **Cancel trial** if your trial is active, or click **Delete trial** if your trial is expired.
1. Follow the prompts.
+
+If you want to restore an enterprise account that you have deleted, you must contact {% data variables.contact.contact_support %}.
diff --git a/content/admin/overview/about-github-enterprise-cloud.md b/content/admin/overview/about-github-enterprise-cloud.md
index 2501a34a03bb..898ad40482f0 100644
--- a/content/admin/overview/about-github-enterprise-cloud.md
+++ b/content/admin/overview/about-github-enterprise-cloud.md
@@ -9,15 +9,16 @@ topics:
- Fundamentals
---
-{% data variables.product.prodname_ghe_cloud %} is a deployment option for {% data variables.product.prodname_enterprise %}, adding advanced features to {% data variables.product.prodname_dotcom %}, including:
+{% data variables.product.prodname_ghe_cloud %} is a deployment option for {% data variables.product.prodname_enterprise %}, adding advanced features to {% data variables.product.prodname_dotcom %}, including:
* SAML authentication
* Additional {% data variables.product.prodname_actions %} minutes
-* Restrict email notifications to verified domains
+* Restriction of email notifications to verified domains
* Privately published {% data variables.product.prodname_pages %} sites
* {% data variables.enterprise.prodname_managed_users_caps %}
* Repository rulesets
* {% data variables.product.company_short %}'s compliance reports
+* The option to host your company's data in a specific region, on a unique subdomain
For a full list of features included with {% data variables.product.product_name %}, see our [Pricing](https://github.com/pricing) page.
@@ -40,9 +41,12 @@ Documentation for both administrators and users of {% data variables.product.pro
## Can I try {% data variables.product.product_name %}?
-You can sign up for a free, 30-day trial of {% data variables.product.product_name %}. See "[AUTOTITLE](/admin/overview/setting-up-a-trial-of-github-enterprise-cloud)."
+You can sign up for a free, 30-day trial of {% data variables.product.product_name %} on {% data variables.product.prodname_dotcom_the_website %}. See "[AUTOTITLE](/admin/overview/setting-up-a-trial-of-github-enterprise-cloud)."
+
+If you require {% data variables.enterprise.data_residency_short %}, contact {% data variables.contact.contact_enterprise_sales %}.
## Further reading
* "[AUTOTITLE](/get-started/onboarding/getting-started-with-github-enterprise-cloud)"
+* "[AUTOTITLE](/admin/data-residency/about-github-enterprise-cloud-with-data-residency)"
* [ {% data variables.product.prodname_roadmap %} ]( {% data variables.product.prodname_roadmap_link %} ) in the `github/roadmap` repository
diff --git a/content/admin/overview/about-github-enterprise-server.md b/content/admin/overview/about-github-enterprise-server.md
index 5d34dce81e88..3b1c23b0aa8a 100644
--- a/content/admin/overview/about-github-enterprise-server.md
+++ b/content/admin/overview/about-github-enterprise-server.md
@@ -13,6 +13,8 @@ topics:
{% data variables.product.product_name %} is suitable for enterprises that are subject to regulatory compliance. It runs on your infrastructure and is governed by access and security controls that you define, such as firewalls, network policies, IAM, monitoring, and VPNs.
+If your main compliance requirement is for your company's data to reside in a specific region, you may want to consider {% data variables.enterprise.data_residency %}. With this option, you won't need to schedule downtime for maintenance or upgrades, and your users will have access to the latest features from {% data variables.product.prodname_dotcom_the_website %}, such as {% data variables.product.prodname_copilot %}. See "[AUTOTITLE](/enterprise-cloud@latest/admin/data-residency/about-github-enterprise-cloud-with-data-residency)" in the {% data variables.product.prodname_ghe_cloud %} documentation.
+
{% data variables.product.product_name %} is a deployment option for the {% data variables.product.prodname_enterprise %} plan. To learn about available features and assess other deployment options, see "[AUTOTITLE](/admin/overview/about-github-for-enterprises)."
## Features and releases
diff --git a/content/admin/overview/about-github-for-enterprises.md b/content/admin/overview/about-github-for-enterprises.md
index 3bcf3803b4df..0afe4b9e096a 100644
--- a/content/admin/overview/about-github-for-enterprises.md
+++ b/content/admin/overview/about-github-for-enterprises.md
@@ -71,8 +71,9 @@ When businesses adopt {% data variables.product.prodname_enterprise %}, their re
**With {% data variables.product.prodname_ghe_cloud %}**:
-* Your repositories and other resources are hosted on {% data variables.product.prodname_dotcom_the_website %}.
-* To access your resources, members of your enterprise can use their personal account or, if you use {% data variables.product.prodname_emus %}, you can provision accounts for users using an external system.
+* Your repositories and other resources are hosted by {% data variables.product.company_short %}, and you'll automatically have access to the latest features and bugfixes.
+* You can choose for your enterprise to be hosted on {% data variables.product.prodname_dotcom_the_website %} or, for more control over where your company's code and data reside, on your own subdomain of {% data variables.enterprise.data_residency_site %}.
+* To access your resources, members of your enterprise can use their personal account or, if you use {% data variables.product.prodname_emus %}, you will provision accounts for users using an external system.
**With {% data variables.product.prodname_ghe_server %}**:
@@ -94,6 +95,7 @@ When businesses adopt {% data variables.product.prodname_enterprise %}, their re
## Further reading
* "[AUTOTITLE](/admin/overview/about-enterprise-accounts)"
+* "[AUTOTITLE](/enterprise-cloud@latest/admin/data-residency/about-github-enterprise-cloud-with-data-residency)"{% ifversion ghes %} in the {% data variables.product.prodname_ghe_cloud %} documentation{% endif %}
* "[AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security)"
* "[AUTOTITLE](/support/learning-about-github-support/about-github-premium-support)"
* "[AUTOTITLE](/enterprise-server@latest/admin/configuration/configuring-github-connect/about-github-connect)"
diff --git a/content/admin/overview/feature-overview-for-github-enterprise-cloud.md b/content/admin/overview/feature-overview-for-github-enterprise-cloud.md
new file mode 100644
index 000000000000..254684b5e88b
--- /dev/null
+++ b/content/admin/overview/feature-overview-for-github-enterprise-cloud.md
@@ -0,0 +1,45 @@
+---
+title: Feature overview for GitHub Enterprise Cloud
+intro: 'Make the most of {% data variables.product.prodname_ghe_cloud %} by learning about its features.'
+shortTitle: Feature overview
+versions:
+ ghec: '*'
+type: overview
+topics:
+ - Enterprise
+ - Fundamentals
+---
+
+{% data variables.product.prodname_ghe_cloud %} is a developer platform that supports the entire software development lifecycle, including planning work, automating tests and deployments, and keeping code secure.
+
+This article provides an overview and links to more information for some of {% data variables.product.github %}'s major features.
+
+## Features for administrators
+
+| Goal | More information |
+| :- | :- |
+| View people in your enterprise | "[AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/viewing-people-in-your-enterprise)" |
+| Implement governance and enforce policies | "[AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise)" |
+| Communicate information to users | "[AUTOTITLE](/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise)"
+| Introduce continuous integration and continuous deployment (CI/CD) at scale | "[AUTOTITLE](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/introducing-github-actions-to-your-enterprise)" |
+| Ensure code quality and security at scale | "[AUTOTITLE](/code-security/adopting-github-advanced-security-at-scale/introduction-to-adopting-github-advanced-security-at-scale)" |
+| Audit, understand, and troubleshoot user activity | "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise)" |
+
+## Features for developers
+
+| Goal | More information |
+| :- | :- |
+| Store and collaborate on code |
|
+| Protect important branches in repositories | "[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets)" |
+| Organize and manage access to repositories |
|
+| Receive, customize, triage, and manage updates about activity | "[AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications)" |
+| Format and structure text in comments | "[AUTOTITLE](/get-started/writing-on-github)" |
+| Search for code | "[AUTOTITLE](/search-github/github-code-search/using-github-code-search)" |
+| Configure continuous integration and continuous delivery (CI/CD) using {% data variables.product.prodname_actions %} |
|
+| Improve code quality and security | "[AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security#about-advanced-security-features)" |
+| Plan and track work |
|
+| Subscribe to events using webhooks | "[AUTOTITLE](/webhooks/using-webhooks/creating-webhooks)" |
+| Extend, customize, and automate | "[AUTOTITLE](/rest/overview/comparing-githubs-rest-api-and-graphql-api)" |
+| Triage, collaborate, and manage work using a desktop application | "[AUTOTITLE](/desktop/overview/about-github-desktop)" |
+| Triage, collaborate, and manage work using a mobile application | "[AUTOTITLE](/get-started/using-github/github-mobile)" |
+| Triage, collaborate, and manage work using the command-line interface | "[AUTOTITLE](/github-cli/github-cli/about-github-cli)" |
diff --git a/content/admin/overview/index.md b/content/admin/overview/index.md
index 471eb939dbce..de217c07539f 100644
--- a/content/admin/overview/index.md
+++ b/content/admin/overview/index.md
@@ -10,6 +10,7 @@ children:
- /about-github-for-enterprises
- /about-github-enterprise-cloud
- /setting-up-a-trial-of-github-enterprise-cloud
+ - /feature-overview-for-github-enterprise-cloud
- /about-github-enterprise-server
- /setting-up-a-trial-of-github-enterprise-server
- /about-upgrades-to-new-releases
diff --git a/content/admin/overview/setting-up-a-trial-of-github-enterprise-cloud.md b/content/admin/overview/setting-up-a-trial-of-github-enterprise-cloud.md
index dbecd4d72eef..2e76a1d8a187 100644
--- a/content/admin/overview/setting-up-a-trial-of-github-enterprise-cloud.md
+++ b/content/admin/overview/setting-up-a-trial-of-github-enterprise-cloud.md
@@ -18,6 +18,8 @@ shortTitle: Enterprise Cloud trial
You can set up a trial to evaluate the additional features that come with {% data variables.product.prodname_ghe_cloud %}, such as SAML single sign-on (SSO), internal repositories, and audit log streaming. For a list of available features, see our [Pricing](https://github.com/pricing) page.
+Your trial **won't** include {% data variables.enterprise.data_residency_short %} on {% data variables.enterprise.data_residency_site %} or access to {% data variables.product.prodname_ghe_server %}. To test these features, contact {% data variables.contact.contact_enterprise_sales %}.
+
Set up a trial of {% data variables.product.prodname_ghe_cloud %} {% octicon "link-external" height:16 %}
To set up a trial, you must be signed in to a personal account. If you don't have a personal account, see "[AUTOTITLE](/free-pro-team@latest/get-started/start-your-journey/creating-an-account-on-github)."
@@ -38,7 +40,6 @@ The trial lasts for **{% data reusables.enterprise.ghec-trial-length %} days** a
## Features not included in the trial
-* {% data variables.product.prodname_ghe_server %}
* {% data variables.product.prodname_github_codespaces %}
* {% data variables.product.prodname_copilot_for_business %} or {% data variables.product.prodname_copilot_enterprise %}
* {% data variables.product.prodname_sponsors %}
diff --git a/content/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app.md b/content/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app.md
index ed357a7d66a1..df2800978425 100644
--- a/content/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app.md
+++ b/content/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app.md
@@ -12,7 +12,12 @@ shortTitle: Generate a user access token
## About user access tokens
-{% data reusables.pre-release-program.expiring-user-access-tokens %}
+> [!NOTE] {% data reusables.pre-release-program.expiring-user-access-tokens %}
+>
+> {% data reusables.apps.github_app_auth_saml %}
+> {% ifversion ghec %}
+> {% data reusables.enterprise-data-residency.access-domain %}
+{% endif %}
A user access token is a type of OAuth token. Unlike a traditional OAuth token, the user access token does not use scopes. Instead, it uses fine-grained permissions. A user access token only has permissions that both the user and the app have. For example, if the app was granted permission to write the contents of a repository, but the user can only read the contents, then the user access token can only read the contents.
@@ -26,12 +31,6 @@ Users can revoke their authorization of a {% data variables.product.prodname_git
You should keep user access tokens and refresh tokens secure. For more information, see "[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/best-practices-for-creating-a-github-app)."
-{% note %}
-
-**Note**: {% data reusables.apps.github_app_auth_saml %}
-
-{% endnote %}
-
## Using the web application flow to generate a user access token
If your app runs in the browser, you should use the web application flow to generate a user access token. For a tutorial about using the web application flow, see "[AUTOTITLE](/apps/creating-github-apps/guides/using-the-web-application-flow-to-generate-a-user-access-token-for-a-github-app)."
diff --git a/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-cli-with-a-github-app.md b/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-cli-with-a-github-app.md
index dddc948c7203..7f02513a0947 100644
--- a/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-cli-with-a-github-app.md
+++ b/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-cli-with-a-github-app.md
@@ -24,6 +24,12 @@ The CLI will have three commands:
This tutorial uses Ruby, but you can write a CLI and use the device flow to generate a user access token with any programming language.
+{% ifversion ghec %}
+
+> [!NOTE] {% data reusables.enterprise-data-residency.access-domain %}
+
+{% endif %}
+
### About device flow and user access tokens
The CLI will use the device flow to authenticate a user and generate a user access token. Then, the CLI can use the user access token to make API requests on behalf of the authenticated user.
diff --git a/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-login-with-github-button-with-a-github-app.md b/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-login-with-github-button-with-a-github-app.md
index 1591f392b521..bece6a905020 100644
--- a/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-login-with-github-button-with-a-github-app.md
+++ b/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-login-with-github-button-with-a-github-app.md
@@ -19,6 +19,12 @@ This tutorial demonstrates how to build a "Login with {% data variables.product.
This tutorial uses Ruby, but you can use the web application flow with any programming language that is used for web development.
+{% ifversion ghec %}
+
+> [!NOTE] {% data reusables.enterprise-data-residency.access-domain %}
+
+{% endif %}
+
### About web application flow and user access tokens
Your app should use a user access token if you want to attribute the app's actions to a user. For more information, see "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-with-a-github-app-on-behalf-of-a-user)."
diff --git a/content/apps/github-marketplace/github-marketplace-overview/about-github-marketplace-for-apps.md b/content/apps/github-marketplace/github-marketplace-overview/about-github-marketplace-for-apps.md
index 869c7bcef840..ed8461fef76b 100644
--- a/content/apps/github-marketplace/github-marketplace-overview/about-github-marketplace-for-apps.md
+++ b/content/apps/github-marketplace/github-marketplace-overview/about-github-marketplace-for-apps.md
@@ -20,12 +20,16 @@ topics:
{% data reusables.actions.actions-not-verified %}
+{% data reusables.actions.actions-marketplace-ghecom %}
+
To learn about publishing {% data variables.product.prodname_actions %} in {% data variables.product.prodname_marketplace %}, see "[AUTOTITLE](/actions/creating-actions/publishing-actions-in-github-marketplace)."
## Apps
Anyone can share their apps with other users for free on {% data variables.product.prodname_marketplace %} but only apps owned by organizations can sell their app.
+{% data reusables.data-residency.github-marketplace-apps-unsupported %}
+
To publish paid plans for your app and display a marketplace badge, you must complete the publisher verification process. For more information, see "[AUTOTITLE](/apps/github-marketplace/github-marketplace-overview/applying-for-publisher-verification-for-your-organization)" or "[AUTOTITLE](/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app)."
Once the organization meets the requirements, someone with owner permissions in the organization can publish paid plans for any of their apps. Each app with a paid plan also goes through a financial onboarding process to enable payments.
diff --git a/content/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps.md b/content/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps.md
index 3496f134d7c8..6b039372c749 100644
--- a/content/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps.md
+++ b/content/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps.md
@@ -37,6 +37,12 @@ To authorize your {% data variables.product.prodname_oauth_app %}, consider whic
* [web application flow](#web-application-flow): Used to authorize users for standard {% data variables.product.prodname_oauth_apps %} that run in the browser. (The [implicit grant type](https://tools.ietf.org/html/rfc6749#section-4.2) is not supported.)
* [device flow](#device-flow): Used for headless apps, such as CLI tools.
+{% ifversion ghec %}
+
+> [!NOTE] {% data reusables.enterprise-data-residency.access-domain %}
+
+{% endif %}
+
## Web application flow
{% note %}
diff --git a/content/apps/oauth-apps/building-oauth-apps/differences-between-github-apps-and-oauth-apps.md b/content/apps/oauth-apps/building-oauth-apps/differences-between-github-apps-and-oauth-apps.md
index ba37142e7f8f..bc4bc9fb072a 100644
--- a/content/apps/oauth-apps/building-oauth-apps/differences-between-github-apps-and-oauth-apps.md
+++ b/content/apps/oauth-apps/building-oauth-apps/differences-between-github-apps-and-oauth-apps.md
@@ -43,8 +43,7 @@ You can install GitHub Apps in your personal account or organizations you own. I
By contrast, users authorize {% data variables.product.prodname_oauth_apps %}, which gives the app the ability to act as the authenticated user. For example, you can authorize an {% data variables.product.prodname_oauth_app %} that finds all notifications for the authenticated user. You can always revoke permissions from an {% data variables.product.prodname_oauth_app %}.
-{% ifversion limit-app-access-requests %}
-{% data reusables.organizations.restricted-app-access-requests %}{% endif %}
+{% data reusables.organizations.restricted-app-access-requests %}
{% data reusables.apps.deletes_ssh_keys %}
diff --git a/content/apps/sharing-github-apps/registering-a-github-app-using-url-parameters.md b/content/apps/sharing-github-apps/registering-a-github-app-using-url-parameters.md
index 05fdde2f96b7..e43ec4617425 100644
--- a/content/apps/sharing-github-apps/registering-a-github-app-using-url-parameters.md
+++ b/content/apps/sharing-github-apps/registering-a-github-app-using-url-parameters.md
@@ -24,6 +24,12 @@ This approach is useful for integrators who want customers to set up an app on t
Alternatively, you can create a {% data variables.product.prodname_github_app %} manifest. For more information, see "[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app-from-a-manifest)."
+{% ifversion ghec %}
+
+> [!NOTE] {% data reusables.enterprise-data-residency.access-domain %}
+
+{% endif %}
+
## Creating a custom configuration URL with query parameters
To create a custom configuration URL for a {% data variables.product.prodname_github_app %} on a personal or organization account, add query parameters after the following base URLs.
diff --git a/content/apps/using-github-apps/about-using-github-apps.md b/content/apps/using-github-apps/about-using-github-apps.md
index 222c250211c4..1a6f3ba66e78 100644
--- a/content/apps/using-github-apps/about-using-github-apps.md
+++ b/content/apps/using-github-apps/about-using-github-apps.md
@@ -19,6 +19,8 @@ topics:
{% ifversion fpt or ghec %}
You can discover {% data variables.product.prodname_github_apps %} on [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace). {% else %}You cannot install third-party applications on your enterprise. If you want to use the functionality of a third-party app, you can contact the app developer about creating an app from a manifest or from URL parameters. For more information, see "[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app-from-a-manifest)" and "[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app-using-url-parameters)."{% endif %}
+{% data reusables.data-residency.github-marketplace-apps-unsupported %}
+
You can also build your own {% data variables.product.prodname_github_app %}. For more information, see "[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/about-creating-github-apps)."
## Using {% data variables.product.prodname_github_apps %}
diff --git a/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations.md b/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations.md
index 661221fd9b3e..3ac2ae5a5959 100644
--- a/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations.md
+++ b/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations.md
@@ -20,6 +20,8 @@ shortTitle: Install from Marketplace for org
This article applies to installing and purchasing {% data variables.product.prodname_github_apps %} from {% data variables.product.prodname_marketplace %}. For more information on installing {% data variables.product.prodname_github_apps %} from a source other than {% data variables.product.prodname_marketplace %}, see "[AUTOTITLE](/apps/using-github-apps/installing-a-github-app-from-a-third-party)."
+{% data reusables.data-residency.github-marketplace-apps-unsupported %}
+
If you install a {% data variables.product.prodname_github_app %} on your organization account and you choose a paid plan, you will pay for your app subscription on your organization's current billing date using your organization's existing payment method.
{% data reusables.marketplace.free-trials %}
diff --git a/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-personal-account.md b/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-personal-account.md
index 5971321f8f03..b17237f0ec6d 100644
--- a/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-personal-account.md
+++ b/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-personal-account.md
@@ -18,6 +18,8 @@ shortTitle: Install from Marketplace for user
This article applies to installing and purchasing {% data variables.product.prodname_github_apps %} from {% data variables.product.prodname_marketplace %}. For more information on installing {% data variables.product.prodname_github_apps %} from a source other than {% data variables.product.prodname_marketplace %}, see "[AUTOTITLE](/apps/using-github-apps/installing-a-github-app-from-a-third-party)."
+{% data reusables.data-residency.github-marketplace-apps-unsupported %}
+
If you install a {% data variables.product.prodname_github_app %} on your personal account and you choose a paid plan, you will pay for your app subscription on your personal account's current billing date using your existing payment method.
{% data reusables.marketplace.free-trials %}
diff --git a/content/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection.md b/content/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection.md
index 4765b36bf1a7..4a5108d8de02 100644
--- a/content/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection.md
+++ b/content/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection.md
@@ -21,6 +21,12 @@ Before testing your SSH connection, you should have already:
You'll need to authenticate this action using your password, which is the SSH key passphrase you created earlier. See "[AUTOTITLE](/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases)."
+{% ifversion ghec %}
+
+> [!NOTE] {% data reusables.enterprise-data-residency.access-domain %}
+
+{% endif %}
+
{% data reusables.command_line.open_the_multi_os_terminal %}
1. Enter the following:
diff --git a/content/authentication/keeping-your-account-and-data-secure/about-anonymized-urls.md b/content/authentication/keeping-your-account-and-data-secure/about-anonymized-urls.md
index 413696adf778..99ae8598b943 100644
--- a/content/authentication/keeping-your-account-and-data-secure/about-anonymized-urls.md
+++ b/content/authentication/keeping-your-account-and-data-secure/about-anonymized-urls.md
@@ -14,7 +14,7 @@ topics:
- Identity
- Access management
---
-To host your images, {% data variables.product.product_name %} uses the [open-source project Camo](https://github.com/atmos/camo). Camo generates an anonymous URL proxy for each file which hides your browser details and related information from other users. The URL starts `https://.githubusercontent.com/`, with different subdomains depending on how you uploaded the image.
+To host your images, {% data variables.product.product_name %} uses the [open-source project Camo](https://github.com/atmos/camo). Camo generates an anonymous URL proxy for each file which hides your browser details and related information from other users. On {% data variables.product.prodname_dotcom_the_website %}, the URL starts `https://.githubusercontent.com/`, with different subdomains depending on how you uploaded the image.
Videos also get anonymized URLs with the same format as image URLs, but are not processed through Camo. This is because {% data variables.product.prodname_dotcom %} does not support externally hosted videos, so the anonymized URL is a link to the uploaded video hosted by {% data variables.product.prodname_dotcom %}.
diff --git a/content/authentication/keeping-your-account-and-data-secure/about-githubs-ip-addresses.md b/content/authentication/keeping-your-account-and-data-secure/about-githubs-ip-addresses.md
index a7159b307e2e..6c98ad6fefef 100644
--- a/content/authentication/keeping-your-account-and-data-secure/about-githubs-ip-addresses.md
+++ b/content/authentication/keeping-your-account-and-data-secure/about-githubs-ip-addresses.md
@@ -19,7 +19,13 @@ topics:
shortTitle: GitHub's IP addresses
---
-You can retrieve a list of {% data variables.product.prodname_dotcom %}'s IP addresses from the [meta](https://api.github.com/meta) API endpoint. For more information, see "[AUTOTITLE](/rest/meta)."
+You can retrieve a list of the IP addresses for {% data variables.product.prodname_dotcom_the_website %} from the [meta](https://api.github.com/meta) API endpoint. For more information, see "[AUTOTITLE](/rest/meta)."
+
+{% ifversion ghec %}
+
+If you access {% data variables.product.github %} on a subdomain of {% data variables.enterprise.data_residency_site %}, the meta endpoint does not return IP ranges for your subdomain. See "[AUTOTITLE](/admin/data-residency/network-details-for-ghecom#githubs-ip-addresses)."
+
+{% endif %}
{% note %}
diff --git a/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md b/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md
index f166da977231..293810d3606c 100644
--- a/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md
+++ b/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md
@@ -16,6 +16,12 @@ topics:
- Access management
shortTitle: Update access credentials
---
+{% ifversion ghec %}
+
+> [!NOTE] {% data reusables.enterprise-data-residency.access-domain %}
+
+{% endif %}
+
## Requesting a new password
1. To request a new password, visit {% ifversion fpt or ghec %}https://{% data variables.product.product_url %}/password_reset{% else %}`https://{% data variables.product.product_url %}/password_reset`{% endif %}.
diff --git a/content/authentication/troubleshooting-ssh/error-permission-denied-publickey.md b/content/authentication/troubleshooting-ssh/error-permission-denied-publickey.md
index 306c5495378f..d49f490632da 100644
--- a/content/authentication/troubleshooting-ssh/error-permission-denied-publickey.md
+++ b/content/authentication/troubleshooting-ssh/error-permission-denied-publickey.md
@@ -13,6 +13,11 @@ topics:
- SSH
shortTitle: Permission denied (publickey)
---
+{% ifversion ghec %}
+
+> [!NOTE] {% data reusables.enterprise-data-residency.access-domain %}
+
+{% endif %}
## Should the `sudo` command or elevated privileges be used with Git?
diff --git a/content/authentication/troubleshooting-ssh/using-ssh-over-the-https-port.md b/content/authentication/troubleshooting-ssh/using-ssh-over-the-https-port.md
index bd5c1415b340..623ed5078252 100644
--- a/content/authentication/troubleshooting-ssh/using-ssh-over-the-https-port.md
+++ b/content/authentication/troubleshooting-ssh/using-ssh-over-the-https-port.md
@@ -26,14 +26,13 @@ $ ssh -T -p 443 git@ssh.github.com
# provide shell access.
```
-{% note %}
-
-**Note**: The hostname for port 443 is `ssh.{% data variables.product.product_url %}`, not `{% data variables.product.product_url %}`.
-
-{% endnote %}
-
If that worked, great! If not, you may need to [follow our troubleshooting guide](/authentication/troubleshooting-ssh/error-permission-denied-publickey).
+> [!NOTE] The hostname for port 443 is `ssh.{% data variables.product.product_url %}`, not `{% data variables.product.product_url %}`.
+> {% ifversion ghec %}
+> {% data reusables.enterprise-data-residency.access-domain %}
+{% endif %}
+
Now, to clone the repository, you can run the following command:
```shell
diff --git a/content/billing/managing-the-plan-for-your-github-account/about-per-user-pricing.md b/content/billing/managing-the-plan-for-your-github-account/about-per-user-pricing.md
index 41c738a435bb..89e23af7603c 100644
--- a/content/billing/managing-the-plan-for-your-github-account/about-per-user-pricing.md
+++ b/content/billing/managing-the-plan-for-your-github-account/about-per-user-pricing.md
@@ -41,7 +41,9 @@ In addition to licensed seats, your bill may include other charges, such as {% d
## Two billing models for {% data variables.product.prodname_enterprise %} licenses
-If you created a trial of {% data variables.product.prodname_ghe_cloud %} on or after August 1, 2024, you use usage-based billing to pay for your licenses. With usage-based billing, you pay for the number of licenses you use each month. You do not need to buy a predefined number of licenses in advance. See, "[AUTOTITLE](/billing/using-the-new-billing-platform/about-usage-based-billing-for-licenses)."
+With usage-based billing, you pay for the number of licenses you use each month. You do not need to buy a predefined number of licenses in advance. See, "[AUTOTITLE](/billing/using-the-new-billing-platform/about-usage-based-billing-for-licenses)."
+
+You are already enrolled in usage-based billing if you created a trial of {% data variables.product.prodname_ghe_cloud %} on or after August 1, 2024.
If you currently pay for your {% data variables.product.prodname_enterprise %} licenses by invoice with a volume, subscription, or prepaid agreement, you will continue to be billed in this way until your agreement expires. At renewal, you have the option to switch to the metered billing model.
diff --git a/content/billing/managing-the-plan-for-your-github-account/downgrading-your-accounts-plan.md b/content/billing/managing-the-plan-for-your-github-account/downgrading-your-accounts-plan.md
index c82cdba49a62..1e834eb4c29e 100644
--- a/content/billing/managing-the-plan-for-your-github-account/downgrading-your-accounts-plan.md
+++ b/content/billing/managing-the-plan-for-your-github-account/downgrading-your-accounts-plan.md
@@ -94,7 +94,7 @@ To reduce the number of paid seats your organization uses, you can remove member
Enterprise accounts are only available with {% data variables.product.prodname_enterprise %}, so it's not possible to downgrade an enterprise account to another plan.
-If you want to stop paying for {% data variables.product.prodname_enterprise %} altogether and your company pays via invoice, contact {% data variables.contact.contact_enterprise_sales %}. If your company pays for {% data variables.product.prodname_enterprise %} by credit card or PayPal, an enterprise owner can delete the enterprise account. For more information, see "[AUTOTITLE](/admin/managing-your-enterprise-account/deleting-an-enterprise-account)."
+If you want to stop paying for {% data variables.product.prodname_enterprise %} altogether and your company pays via invoice, contact {% data variables.contact.contact_enterprise_sales %}. If your company uses personal accounts on {% data variables.product.prodname_dotcom_the_website %} and pays for {% data variables.product.prodname_enterprise %} by credit card or PayPal, an enterprise owner can delete the enterprise account. For more information, see "[AUTOTITLE](/admin/managing-your-enterprise-account/deleting-an-enterprise-account)."
To downgrade the plan of an individual organization within the enterprise account, you must remove the organization from the enterprise account. Removing an organization from an enterprise automatically downgrades the organization to {% data variables.product.prodname_free_team %}. For more information, see "[AUTOTITLE](/admin/user-management/managing-organizations-in-your-enterprise/removing-organizations-from-your-enterprise)."
diff --git a/content/billing/managing-your-license-for-github-enterprise/downloading-your-license-for-github-enterprise.md b/content/billing/managing-your-license-for-github-enterprise/downloading-your-license-for-github-enterprise.md
index 9540ce226562..689a47c09aca 100644
--- a/content/billing/managing-your-license-for-github-enterprise/downloading-your-license-for-github-enterprise.md
+++ b/content/billing/managing-your-license-for-github-enterprise/downloading-your-license-for-github-enterprise.md
@@ -28,9 +28,9 @@ After you purchase or upgrade a license for {% data variables.product.prodname_e
There are two possible ways to download a license file for {% data variables.product.prodname_ghe_server %}.
-1. If you are using a trial of {% data variables.product.prodname_ghe_server %}, if you do not have an enterprise account on {% data variables.product.prodname_dotcom_the_website %}, or if you are not sure, you may be able to download your license file from the [{% data variables.product.prodname_enterprise %} website](https://enterprise.github.com/download).
+1. If you are using a trial of {% data variables.product.prodname_ghe_server %}, if you do not have an enterprise account on {% data variables.product.prodname_ghe_cloud %}, or if you are not sure, you may be able to download your license file from the [{% data variables.product.prodname_enterprise %} website](https://enterprise.github.com/download).
-1. If you are an existing {% data variables.product.prodname_enterprise %} customer with an enterprise account on {% data variables.product.prodname_dotcom_the_website %}, you can download your license file from {% data variables.product.prodname_dotcom_the_website %} using the following instructions.
+1. If you are an existing {% data variables.product.prodname_enterprise %} customer with an enterprise account on {% data variables.product.prodname_ghe_cloud %}, you can download your license file from {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %} using the following instructions.
If you have any questions about downloading your license, contact {% data variables.contact.contact_enterprise_sales %}. For more information about enterprise accounts, see "[AUTOTITLE](/enterprise-cloud@latest/admin/overview/about-enterprise-accounts){% ifversion ghes %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% elsif ghec %}."{% endif %}
diff --git a/content/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud.md b/content/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud.md
index bfed6cc4ec02..e38fe88a027b 100644
--- a/content/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud.md
+++ b/content/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud.md
@@ -18,7 +18,7 @@ shortTitle: Sync license usage
{% data reusables.enterprise-licensing.about-license-sync %}
-To ensure that you see up-to-date license details on {% data variables.product.prodname_dotcom_the_website %}, you can sync license usage between the environments automatically, using {% data variables.product.prodname_github_connect %}. For more information about {% data variables.product.prodname_github_connect %}, see "[About {% data variables.product.prodname_github_connect %}]({% ifversion ghec %}/enterprise-server@latest{% endif %}/admin/configuration/configuring-github-connect/about-github-connect){% ifversion ghec %}" in the {% data variables.product.prodname_ghe_server %} documentation.{% elsif ghes %}."{% endif %}
+To ensure that you see up-to-date license details on {% data variables.product.prodname_ghe_cloud %}, you can sync license usage to {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-license-sync %} or {% data variables.enterprise.data_residency_site %}{% endif %} automatically, using {% data variables.product.prodname_github_connect %}. For more information about {% data variables.product.prodname_github_connect %}, see "[About {% data variables.product.prodname_github_connect %}]({% ifversion ghec %}/enterprise-server@latest{% endif %}/admin/configuration/configuring-github-connect/about-github-connect){% ifversion ghec %}" in the {% data variables.product.prodname_ghe_server %} documentation.{% elsif ghes %}."{% endif %}
If you don't want to enable {% data variables.product.prodname_github_connect %}, you can manually sync license usage by uploading a file from {% data variables.product.prodname_ghe_server %} to {% data variables.product.prodname_dotcom_the_website %}.
diff --git a/content/billing/managing-your-license-for-github-enterprise/troubleshooting-license-usage-for-github-enterprise.md b/content/billing/managing-your-license-for-github-enterprise/troubleshooting-license-usage-for-github-enterprise.md
index 4e359e2ae2e3..0c938f750aea 100644
--- a/content/billing/managing-your-license-for-github-enterprise/troubleshooting-license-usage-for-github-enterprise.md
+++ b/content/billing/managing-your-license-for-github-enterprise/troubleshooting-license-usage-for-github-enterprise.md
@@ -34,7 +34,7 @@ For each user to consume a single seat regardless of how many deployments they u
After you synchronize license usage, {% data variables.product.prodname_dotcom %} matches user accounts on {% data variables.product.prodname_ghe_server %} with user accounts on {% data variables.product.prodname_ghe_cloud %} by email address.
-First, we check the primary email address of each user on {% data variables.product.prodname_ghe_server %}. Then, we attempt to match that address with the email address for a user account on {% data variables.product.prodname_ghe_cloud %}. If your enterprise on {% data variables.product.prodname_dotcom_the_website %} or any of the enterprise's organizations use SAML authentication or SCIM provisioning, we first check the linked SAML or SCIM identities to see if the identity contains one of the attributes below. We attempt to match the values of these attributes to the primary email address of each {% data variables.product.prodname_ghe_server %} user.
+First, we check the primary email address of each user on {% data variables.product.prodname_ghe_server %}. Then, we attempt to match that address with the email address for a user account on {% data variables.product.prodname_ghe_cloud %}. If your enterprise on {% data variables.product.prodname_ghe_cloud %} or any of the enterprise's organizations use SAML authentication or SCIM provisioning, we first check the linked SAML or SCIM identities to see if the identity contains one of the attributes below. We attempt to match the values of these attributes to the primary email address of each {% data variables.product.prodname_ghe_server %} user.
* `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`
* `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
@@ -42,13 +42,13 @@ First, we check the primary email address of each user on {% data variables.prod
* `NameID`
* `emails`
-If there is no match, or if SAML authentication or SCIM provisioning is not in use, we attempt to match the primary email address on {% data variables.product.prodname_ghe_server %} with a verified email address for a user account on {% data variables.product.prodname_dotcom_the_website %}. For more information about verification of email addresses on {% data variables.product.prodname_dotcom_the_website %}, see "[AUTOTITLE](/enterprise-cloud@latest/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address){% ifversion not ghec %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %}
+If there is no match, or if SAML authentication or SCIM provisioning is not in use, we attempt to match the primary email address on {% data variables.product.prodname_ghe_server %} with a verified email address for a user account on {% data variables.product.prodname_ghe_cloud %}. For more information about verification of email addresses on {% data variables.product.prodname_ghe_cloud %}, see "[AUTOTITLE](/enterprise-cloud@latest/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address){% ifversion not ghec %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %}
## Fields in the consumed license files
-The {% data variables.product.prodname_dotcom_the_website %} license usage report and {% data variables.product.prodname_ghe_server %} exported license usage file include a variety of fields to help you troubleshoot license usage for your enterprise.
+The {% data variables.product.prodname_ghe_cloud %} license usage report and {% data variables.product.prodname_ghe_server %} exported license usage file include a variety of fields to help you troubleshoot license usage for your enterprise.
-### {% data variables.product.prodname_dotcom_the_website %} license usage report (CSV file)
+### {% data variables.product.prodname_ghe_cloud %} license usage report (CSV file)
The license usage report for your enterprise is a CSV file that contains the following information about members of your enterprise. Some fields are specific to your {% data variables.product.prodname_ghe_cloud %} (GHEC) deployment, {% data variables.product.prodname_ghe_server %} (GHES) connected environments, or your {% data variables.product.prodname_vs %} subscriptions (VSS) with GitHub Enterprise.
@@ -59,7 +59,7 @@ The license usage report for your enterprise is a CSV file that contains the fol
| github_com_profile | The URL for the user's profile page on GHEC
| github_com_user | Whether or not the user has an account on GHEC |
| github_com_member_roles | For each of the organizations the user belongs to on GHEC, the organization name and the user's role in that organization (`Owner` or `Member`) separated by a colon
Organizations delimited by commas |
-| github_com_enterprise_role | Can be one of: `Owner`, `Member`, `Outside collaborator` (for an enterprise with personal accounts on {% data variables.product.prodname_dotcom_the_website %}), or `Repository collaborator` (for an enterprise that uses {% data variables.enterprise.prodname_managed_users %} on {% data variables.product.prodname_dotcom_the_website %})
+| github_com_enterprise_role | Can be one of: `Owner`, `Member`, `Outside collaborator` (for an enterprise with personal accounts on {% data variables.product.prodname_dotcom_the_website %}), or `Repository collaborator` (for an enterprise that uses {% data variables.enterprise.prodname_managed_users %})
| github_com_verified_domain_emails | All email addresses associated with the user's GHEC account that match your enterprise's verified domains |
| github_com_saml_name_id | The SAML username |
| github_com_orgs_with_pending_invites | All pending invitations for the user's GHEC account to join organizations within your enterprise |
@@ -96,11 +96,11 @@ Your {% data variables.product.prodname_ghe_server %} license usage is a JSON fi
To ensure that the each user is only consuming a single seat for different deployments and subscriptions, try the following troubleshooting steps.
-1. To help identify users that are consuming multiple seats, if your enterprise uses verified domains for {% data variables.product.prodname_ghe_cloud %}, review the list of enterprise members who do not have an email address from a verified domain associated with their account on {% data variables.product.prodname_dotcom_the_website %}. Often, these are the users who erroneously consume more than one licensed seat. For more information, see "[AUTOTITLE](/admin/user-management/managing-users-in-your-enterprise/viewing-people-in-your-enterprise#viewing-members-without-an-email-address-from-a-verified-domain)."
+1. To help identify users that are consuming multiple seats, if your enterprise uses verified domains for {% data variables.product.prodname_ghe_cloud %}, review the list of enterprise members who do not have an email address from a verified domain associated with their account on {% data variables.product.prodname_ghe_cloud %}. Often, these are the users who erroneously consume more than one licensed seat. For more information, see "[AUTOTITLE](/admin/user-management/managing-users-in-your-enterprise/viewing-people-in-your-enterprise#viewing-members-without-an-email-address-from-a-verified-domain)."
{% note %}
- **Note:** To make troubleshooting easier, we recommend using verified domains with your enterprise account on {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/configuration/configuring-your-enterprise/verifying-or-approving-a-domain-for-your-enterprise)."
+ **Note:** To make troubleshooting easier, we recommend using verified domains with your enterprise account on {% data variables.product.prodname_ghe_cloud %}. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/configuration/configuring-your-enterprise/verifying-or-approving-a-domain-for-your-enterprise)."
{% endnote %}
diff --git a/content/billing/managing-your-license-for-github-enterprise/viewing-license-usage-for-github-enterprise.md b/content/billing/managing-your-license-for-github-enterprise/viewing-license-usage-for-github-enterprise.md
index 97c12cfce08a..32dcc7c11ca4 100644
--- a/content/billing/managing-your-license-for-github-enterprise/viewing-license-usage-for-github-enterprise.md
+++ b/content/billing/managing-your-license-for-github-enterprise/viewing-license-usage-for-github-enterprise.md
@@ -1,6 +1,6 @@
---
title: Viewing license usage for GitHub Enterprise
-intro: 'You can view license usage for your enterprise on {% ifversion ghec %}{% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}{% data variables.location.product_location %}{% endif %}.'
+intro: 'You can view license usage for your enterprise on {% ifversion ghec %}{% data variables.product.prodname_ghe_cloud %}{% elsif ghes %}{% data variables.location.product_location %}{% endif %}.'
permissions: 'Enterprise owners{% ifversion ghec %} and billing managers{% endif %}'
versions:
ghec: '*'
@@ -20,13 +20,13 @@ shortTitle: View license usage
## About license usage for {% data variables.product.prodname_enterprise %}
-You can view license usage for {% data variables.product.product_name %} on {% data variables.location.product_location %}.
+You can view license usage for {% data variables.product.product_name %} on {% data variables.product.github %}.
-If you use both {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %} and sync license usage between the products, you can view license usage for both on {% data variables.product.prodname_dotcom_the_website %}. For more information about license sync, see "[AUTOTITLE](/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud)."
+If you use both {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %} and sync license usage between the products, you can view license usage for both on {% data variables.product.prodname_ghe_cloud %}. For more information about license sync, see "[AUTOTITLE](/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud)."
{% ifversion ghes %}
-For more information about viewing license usage on {% data variables.product.prodname_dotcom_the_website %} and identifying when the last license sync occurred, see "[AUTOTITLE](/enterprise-cloud@latest/billing/managing-your-license-for-github-enterprise/viewing-license-usage-for-github-enterprise)" in the {% data variables.product.prodname_ghe_cloud %} documentation.
+For more information about viewing license usage on {% data variables.product.prodname_ghe_cloud %} and identifying when the last license sync occurred, see "[AUTOTITLE](/enterprise-cloud@latest/billing/managing-your-license-for-github-enterprise/viewing-license-usage-for-github-enterprise)" in the {% data variables.product.prodname_ghe_cloud %} documentation.
{% endif %}
@@ -34,7 +34,7 @@ You can also use the REST API to return consumed licenses data and the status of
To learn more about the license data associated with your enterprise account and how the number of consumed user {% ifversion ghas-billing-UI-update %}licenses{% else %}seats{% endif %} are calculated, see "[AUTOTITLE](/billing/managing-your-license-for-github-enterprise/troubleshooting-license-usage-for-github-enterprise)."
-## Viewing license usage on {% ifversion ghec %}{% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}{% data variables.location.product_location %}{% endif %}
+## Viewing license usage on {% ifversion ghec %}{% data variables.product.prodname_ghe_cloud %}{% elsif ghes %}{% data variables.location.product_location %}{% endif %}
You can view the license usage for your enterprise and download a file with license details. If you're not seeing expected license counts in this report, it's possible that the subscriber’s assigned {% data variables.product.prodname_vs %} subscription email address and {% data variables.product.prodname_dotcom_the_website %} email address aren't exactly the same. For further information, see "[AUTOTITLE](/billing/managing-your-license-for-github-enterprise/troubleshooting-license-usage-for-github-enterprise)."
diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/fixing-alerts-in-security-campaign.md b/content/code-security/code-scanning/managing-code-scanning-alerts/fixing-alerts-in-security-campaign.md
new file mode 100644
index 000000000000..5f30adfeedd1
--- /dev/null
+++ b/content/code-security/code-scanning/managing-code-scanning-alerts/fixing-alerts-in-security-campaign.md
@@ -0,0 +1,77 @@
+---
+title: Fixing alerts in a security campaign
+shortTitle: Fix alerts in campaign
+intro: 'Learn how you can take part in a security campaign and how it can benefit your career as well as your code.'
+allowTitleToDifferFromFilename: true
+permissions: '{% data reusables.permissions.code-scanning-all-alerts %}'
+product: '{% data reusables.gated-features.security-campaigns %}'
+type: how_to
+versions:
+ feature: security-campaigns
+topics:
+ - Advanced Security
+ - Code scanning
+ - Alerts
+ - Repositories
+---
+{% data reusables.security-campaigns.preview-note %}
+
+## What is a security campaign
+
+A security campaign is a group of security alerts, detected in the default branches of repositories, chosen by an organization owner or security manager for remediation. When a security campaign is created with alerts in repositories that you have write access to, you are notified if you subscribe to email notifications for "All activity" or "Security alerts". In addition, when you open the **Security** tab for a repository with one or more campaign alerts, you can see the campaign name in the sidebar of the view.
+
+You can take part in a security campaign by fixing one or more of the alerts chosen for the campaign.
+
+## What are the benefits of fixing alerts in a campaign
+
+In addition to the benefit of removing an important security problem from your code, alerts in a security campaign have several other benefits compared with fixing another alert in your repository.
+
+* You have a contact on the security team to collaborate with.
+* You know that you are fixing a security alert that is important to the company.
+* Potentially, you may have access to targeted training materials.{% ifversion security-campaigns-autofix %}
+* You don't need to request a {% data variables.product.prodname_copilot_autofix %} suggestion, it is already available as a starting point.{% endif %}{% ifversion copilot %}
+* If you have access to {% data variables.product.prodname_copilot_chat %}, you can ask questions about the alert and the suggested fix.{% endif %}
+* You are improving and demonstrating your knowledge of secure coding.
+
+## Viewing alerts in a security campaign
+
+When a campaign targets security alerts in a repository that you have write access to, you can navigate to the list of repository alerts in the campaign.
+
+* Display the **Security** tab for the repository and click one of the campaigns under the "Campaigns" title in the sidebar.
+* If you have enabled email notifications for "All activity" or "Security alerts" in the repository, click **View security campaign** in the campaign email.
+* If you have write access to more than one repository in the organization, display the **Security** tab for the organization and click one of the campaigns under the "Campaigns" title in the sidebar.
+
+This view shows the alerts in the current repository for a campaign called "SQL injection (CWE-89)" (highlighted gray) that is managed by "octocat" (outlined in dark orange).
+
+![Screenshot of repository campaign view with "SQL injection (CWE-89)" campaign displayed and the "Campaign manager" outlined in dark orange.](/assets/images/help/security/builder-sec-campaign.png)
+
+## Fixing alerts in a security campaign
+
+If you want to see the code that triggered the security alert and the suggested fix, click on the alert name to show the alert view.
+
+1. When you are ready to work on one or more security alerts, check that no one else is working on those alerts already. In the campaign view, git icons are displayed on alerts where a fix may already be in progress. Click an icon to display the linked work:
+ * {% octicon "git-pull-request-draft" aria-hidden="Draft pull request" %} an open draft pull request may fix this alert.
+ * {% octicon "git-pull-request" aria-label="Pull request" %} an open pull request may fix this alert.
+ * {% octicon "git-branch" aria-label="Branch" %} a branch may contain changes to fix this alert.
+
+1. In the campaign view for the repository, select the alerts that you want to fix.{% ifversion security-campaigns-autofix %}
+1. Connect the security alerts to a working branch:
+ * If at least one "Autofix" suggestion is available for the selected alerts, click **Commit autofix** and commit the changes either to a new branch or to an existing branch.
+ * If no autofix suggestions are available for the selected alerts, click **Create new branch** to create a new branch where you will work on fixing the alerts.{% elsif ghes %}
+1. Click **Create new branch** to create a new branch where you will work on fixing the alerts.{% endif %}
+1. When you have finished fixing the alerts and testing your solutions, create a pull request for your changes and request a review from the campaign manager.
+
+> [!TIP] If you have write permission for more than one repository in the campaign, click the link in the "Campaign progress" box in your repository to show the organization-level view of the campaign. When you open a repository from this view, the campaign alerts view is displayed.
+
+{% ifversion copilot %}
+
+## Using {% data variables.product.prodname_copilot_chat %} for secure coding
+
+If you have access to {% data variables.product.prodname_copilot_chat_short %} then you can ask the AI questions about the vulnerability, the suggested fix, and how to test that the fix is comprehensive.
+
+To get the most out of {% data variables.product.prodname_copilot_chat_short %} when you're working on code security, you should consider:
+
+1. Indexing your repositories to give {% data variables.product.prodname_copilot_chat_short %} more context to answer questions about the repository code, see "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/indexing-repositories-for-copilot-chat)."
+1. Explicitly asking {% data variables.product.prodname_copilot_chat_short %} to use the {% data variables.product.prodname_GH_advanced_security %} skill to answer your questions, for example: "Use the GitHub Advanced Security skill to explain how this alert introduces a vulnerability into the code."
+
+{% endif %}
diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/index.md b/content/code-security/code-scanning/managing-code-scanning-alerts/index.md
index 962f35eb456f..d7a38ec5d3a4 100644
--- a/content/code-security/code-scanning/managing-code-scanning-alerts/index.md
+++ b/content/code-security/code-scanning/managing-code-scanning-alerts/index.md
@@ -17,6 +17,7 @@ children:
- /disabling-autofix-for-code-scanning
- /assessing-code-scanning-alerts-for-your-repository
- /resolving-code-scanning-alerts
+ - /fixing-alerts-in-security-campaign
- /triaging-code-scanning-alerts-in-pull-requests
- /tracking-code-scanning-alerts-in-issues-using-task-lists
---
diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md b/content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md
index 9deb7be5755d..130c060c8593 100644
--- a/content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md
+++ b/content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md
@@ -115,6 +115,8 @@ The best way to mitigate the limitations of suggestions from {% data variables.p
It is important to remember that the author of a pull request retains responsibility for how they respond to review comments and suggested code changes, whether proposed by colleagues or automated tools. Developers should always look at suggestions for code changes critically. If needed, they should edit the suggested changes to ensure that the resulting code and application are correct, secure, meet performance criteria, and satisfy all other functional and non-functional requirements for the application.
+{% data reusables.rai.code-scanning.copilot-workspaces-prs-autofix-note %}
+
## Next steps
* "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts)"
diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md b/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md
index c2db524293ae..8815de960d8a 100644
--- a/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md
+++ b/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md
@@ -149,6 +149,9 @@ Each {% data variables.product.prodname_copilot_autofix_short %} suggestion demo
1. Click **Edit** to display the editing options and select your preferred method.
* Under **Edit with {% data variables.product.prodname_cli %}**, follow the instructions for checking out the pull request locally and applying the suggested fix.
* Select **Edit FILENAME** to edit the file directly on {% data variables.product.prodname_dotcom %} with the suggested fix applied.
+
+ {% data reusables.rai.code-scanning.copilot-workspaces-prs-autofix-note %}
+
1. Optionally, if you prefer to apply the fix on a local repository or branch, select the {% octicon "copy" aria-hidden="true" %} dropdown menu on the suggestion.
* Select **View autofix patch** to display instructions for applying the suggested fix to any local repository or branch.
* Select **Copy modified line LINE_NUMBER** to copy a specific line of the suggestion.
diff --git a/content/code-security/code-scanning/managing-your-code-scanning-configuration/editing-your-configuration-of-default-setup.md b/content/code-security/code-scanning/managing-your-code-scanning-configuration/editing-your-configuration-of-default-setup.md
index d412a8ede0bc..5cb97f53f6a5 100644
--- a/content/code-security/code-scanning/managing-your-code-scanning-configuration/editing-your-configuration-of-default-setup.md
+++ b/content/code-security/code-scanning/managing-your-code-scanning-configuration/editing-your-configuration-of-default-setup.md
@@ -82,7 +82,7 @@ You can edit the threat model used in a default setup configuration. For more in
{% data reusables.code-scanning.beta-model-packs %}
-If you use frameworks and libraries that are not recognized by the standard libraries included with {% data variables.product.prodname_codeql %}, you can model your dependencies and extend {% data variables.product.prodname_code_scanning %} analysis. For more information, see [Supported languages and frameworks](https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks/) in the documentation for {% data variables.product.prodname_codeql %}.
+If {% ifversion ghec %}your enterprise is hosted on {% data variables.product.prodname_dotcom_the_website %} and {% endif %}you use frameworks and libraries that are not recognized by the standard libraries included with {% data variables.product.prodname_codeql %}, you can model your dependencies and extend {% data variables.product.prodname_code_scanning %} analysis. For more information, see [Supported languages and frameworks](https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks/) in the documentation for {% data variables.product.prodname_codeql %}.
For default setup, you need to define the models of your additional dependencies in {% data variables.product.prodname_codeql %} model packs. You can extend coverage in default setup with {% data variables.product.prodname_codeql %} model packs for individual repositories, or at scale for all repositories in an organization.
diff --git a/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs.md b/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs.md
index 3d34aeab0d55..603f6c307b5e 100644
--- a/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs.md
+++ b/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs.md
@@ -15,6 +15,74 @@ redirect_from:
- /code-security/codeql-cli/using-the-codeql-cli/publishing-and-using-codeql-packs
---
+{% ifversion ghec or ghes %}
+
+## Working with {% data variables.product.prodname_codeql %} packs on {% data variables.enterprise.gh_enterprise %}
+
+By default, the {% data variables.product.prodname_codeql_cli %} expects to download {% data variables.product.prodname_codeql %} packs from and publish packs to the {% data variables.product.prodname_container_registry %} on {% data variables.product.prodname_dotcom_the_website %}. However, you can also work with {% data variables.product.prodname_codeql %} packs in a {% data variables.product.prodname_container_registry %} on {% data variables.enterprise.gh_enterprise %} by creating a `qlconfig.yml` file to tell the CLI which {% data variables.product.prodname_container_registry %} to use for each pack.
+
+Create a `~/.codeql/qlconfig.yml` file on Linux/MacOS or `%HOMEPATH%\.codeql\qlconfig.yml` on Windows using your preferred text editor, and add entries to specify which registry to use for one or more package name patterns.
+For example, the following `qlconfig.yml` file associates all packs with the {% data variables.product.prodname_container_registry %} at `{% data variables.enterprise.gh_enterprise_domain %}`, except packs matching `codeql/\*` or the `other-org/*` organization, which are associated with the {% data variables.product.prodname_container_registry %} on {% data variables.product.prodname_dotcom_the_website %}:
+
+```yaml
+registries:
+- packages:
+ - 'codeql/*'
+ - 'other-org/*'
+ # {% data variables.product.prodname_container_registry %} on {% data variables.product.prodname_dotcom_the_website %}
+ url: https://ghcr.io/v2/
+- packages: '*'
+ # {% data variables.product.prodname_container_registry %} hosted at `{% data variables.enterprise.gh_enterprise_domain %}`
+ url: {% data variables.enterprise.gh_enterprise_container_registry %}
+```
+
+The {% data variables.product.prodname_codeql_cli %} will determine which registry to use for a given package name by finding the first item in the `registries` list with a `packages` property that matches that package name.
+This means that you’ll generally want to define the most specific package name patterns first. The `packages` property may be a single package name, a glob pattern, or a YAML list of package names and glob patterns.
+
+The `registries` list can also be placed inside a `codeql-workspace.yml` file. Doing so will allow you to define the registries to be used within a specific workspace, so that it can be shared amongst other {% data variables.product.prodname_codeql %} users of the workspace. The `registries` list in `codeql-workspace.yml` will be merged with and take precedence over the list in the global `qlconfig.yml`. For more information about `codeql-workspace.yml`, see "[AUTOTITLE](/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/about-codeql-workspaces#about-codeql-workspaces)."
+
+You can now use `codeql pack publish`, `codeql pack download`, and `codeql database analyze` to manage packs on {% data variables.enterprise.gh_enterprise %}.
+
+{% endif %}
+
+## Authenticating to {% data variables.product.github %} {% data variables.product.prodname_container_registries %}
+
+You can publish packs and download private packs by authenticating to the appropriate {% data variables.product.github %} {% data variables.product.prodname_container_registry %}.
+
+{% ifversion ghec or ghes %}
+
+### Authenticating to {% data variables.product.prodname_container_registries %} on {% data variables.product.prodname_dotcom_the_website %}
+
+{% endif %}
+
+You can authenticate to the {% data variables.product.prodname_container_registry %} in two ways:
+
+1. Pass the `--github-auth-stdin` option to the {% data variables.product.prodname_codeql_cli %}, then supply a {% data variables.product.prodname_github_apps %} token or {% data variables.product.pat_generic %} via standard input.
+1. Set the `GITHUB_TOKEN` environment variable to a {% data variables.product.prodname_github_apps %} token or {% data variables.product.pat_generic %}.
+
+{% ifversion ghec or ghes %}
+
+### Authenticating to {% data variables.product.prodname_container_registries %} on {% data variables.enterprise.gh_enterprise %}
+
+Similarly, you can authenticate to a {% data variables.product.prodname_container_registry %} on {% data variables.enterprise.gh_enterprise %}, or authenticate to multiple registries simultaneously (for example, to download or run private packs from multiple registries) in two ways:
+
+1. Pass the `--registries-auth-stdin` option to the {% data variables.product.prodname_codeql_cli %}, then supply a registry authentication string via standard input.
+1. Set the `CODEQL_REGISTRIES_AUTH` environment variable to a registry authentication string.
+
+A registry authentication string is a comma-separated list of `=` pairs, where `registry-url` is a {% data variables.product.prodname_container_registry %} URL, such as `{% data variables.enterprise.gh_enterprise_container_registry %}`, and `token` is a {% data variables.product.prodname_github_apps %} token or {% data variables.product.pat_generic %} for that {% data variables.product.prodname_container_registry %}.
+This ensures that each token is only passed to the {% data variables.product.prodname_container_registry %} you specify.
+
+For example, the following registry authentication string specifies that the {% data variables.product.prodname_codeql_cli %} should authenticate as follows:
+
+* Use the token `` to authenticate to {% data variables.product.prodname_container_registry %} on {% data variables.product.prodname_dotcom_the_website %}.
+* Use the token `` to authenticate to the {% data variables.product.prodname_container_registry %} for the enterprise at `{% data variables.enterprise.gh_enterprise_container_registry %}`.
+
+```shell
+https://ghcr.io/v2/=,{% data variables.enterprise.gh_enterprise_container_registry %}=
+```
+
+{% endif %}
+
## Configuring the `qlpack.yml` file before publishing
{% data reusables.code-scanning.codeql-cli-version-ghes %}
@@ -130,60 +198,6 @@ If you publish query packs on the {% data variables.product.prodname_container_r
If you publish query packs with the intention of using them on a {% data variables.product.prodname_ghe_server %} installation that uses its bundled {% data variables.product.prodname_codeql %} binaries, use the same {% data variables.product.prodname_codeql %} version to run `codeql pack publish`. Newer versions might produce pre-compiled queries that the one in {% data variables.product.prodname_ghe_server %} may not recognize. Your {% data variables.product.prodname_ghe_server %} administrator may choose to upgrade to a newer version of {% data variables.product.prodname_codeql %} periodically. If so, follow their lead.
-{% ifversion ghes %}
-
-## Working with {% data variables.product.prodname_codeql %} packs on {% data variables.product.prodname_ghe_server %}
-
-By default, the {% data variables.product.prodname_codeql_cli %} expects to download {% data variables.product.prodname_codeql %} packs from and publish packs to the {% data variables.product.prodname_container_registry %} on {% data variables.product.prodname_dotcom_the_website %}. However, you can also work with {% data variables.product.prodname_codeql %} packs in a {% data variables.product.prodname_container_registry %} on {% data variables.product.prodname_ghe_server %} by creating a `qlconfig.yml` file to tell the CLI which {% data variables.product.prodname_container_registry %} to use for each pack.
-
-Create a `~/.codeql/qlconfig.yml` file using your preferred text editor, and add entries to specify which registry to use for one or more package name patterns.
-For example, the following `qlconfig.yml` file associates all packs with the {% data variables.product.prodname_container_registry %} for the {% data variables.product.prodname_ghe_server %} at `GHE_HOSTNAME`, except packs matching `codeql/\*`, which are associated with the {% data variables.product.prodname_container_registry %} on {% data variables.product.prodname_dotcom_the_website %}:
-
-```yaml
-registries:
-- packages:
- - 'codeql/*'
- - 'other-org/*'
- url: https://ghcr.io/v2/
-- packages: '*'
- url: https://containers.GHE_HOSTNAME/v2/
-```
-
-The {% data variables.product.prodname_codeql_cli %} will determine which registry to use for a given package name by finding the first item in the `registries` list with a `packages` property that matches that package name.
-This means that you’ll generally want to define the most specific package name patterns first. The `packages` property may be a single package name, a glob pattern, or a YAML list of package names and glob patterns.
-
-The `registries` list can also be placed inside of a `codeql-workspace.yml` file. Doing so will allow you to define the registries to be used within a specific workspace, so that it can be shared amongst other {% data variables.product.prodname_codeql %} users of the workspace. The `registries` list in the `codeql-workspace.yml` will be merged with and take precedence over the list in the global `qlconfig.yml`. For more information about `codeql-workspace.yml`, see "[AUTOTITLE](/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/about-codeql-workspaces#about-codeql-workspaces)."
-
-You can now use `codeql pack publish`, `codeql pack download`, and `codeql database analyze` to manage packs on {% data variables.product.prodname_ghe_server %}.
-
-{% endif %}
-
-## Authenticating to {% data variables.product.prodname_dotcom %} {% data variables.product.prodname_container_registries %}
-
-You can publish packs and download private packs by authenticating to the appropriate {% data variables.product.prodname_dotcom %} {% data variables.product.prodname_container_registry %}.
-
-You can authenticate to the {% data variables.product.prodname_container_registry %} on {% data variables.product.prodname_dotcom_the_website %} in two ways:
-
-1. Pass the `--github-auth-stdin` option to the {% data variables.product.prodname_codeql_cli %}, then supply a {% data variables.product.prodname_github_apps %} token or {% data variables.product.pat_generic %} via standard input.
-1. Set the `GITHUB_TOKEN` environment variable to a {% data variables.product.prodname_github_apps %} token or {% data variables.product.pat_generic %}.
-
-{% ifversion ghes %}
-
-Similarly, you can authenticate to a {% data variables.product.prodname_ghe_server %} {% data variables.product.prodname_container_registry %}, or authenticate to multiple registries simultaneously (for example, to download or run private packs from multiple registries) in two ways:
-
-1. Pass the `--registries-auth-stdin` option to the {% data variables.product.prodname_codeql_cli %}, then supply a registry authentication string via standard input.
-1. Set the `CODEQL_REGISTRIES_AUTH` environment variable to a registry authentication string.
-
-A registry authentication string is a comma-separated list of `=` pairs, where `registry-url` is a {% data variables.product.prodname_container_registry %} URL, such as `https://containers.GHE_HOSTNAME/v2/`, and `token` is a {% data variables.product.prodname_github_apps %} token or {% data variables.product.pat_generic %} for that {% data variables.product.prodname_dotcom %} {% data variables.product.prodname_container_registry %}.
-This ensures that each token is only passed to the {% data variables.product.prodname_container_registry %} you specify.
-For instance, the following registry authentication string specifies that the {% data variables.product.prodname_codeql_cli %} should authenticate to the {% data variables.product.prodname_container_registry %} on {% data variables.product.prodname_dotcom_the_website %} using the token `` and to the {% data variables.product.prodname_container_registry %} for the GHES instance at `GHE_HOSTNAME` using the token ``:
-
-```shell
-https://ghcr.io/v2/=,https://containers.GHE_HOSTNAME/v2/=
-```
-
-{% endif %}
-
## About `qlpack.yml` files
When executing query-related commands, {% data variables.product.prodname_codeql %} first looks in siblings of the installation directory (and their subdirectories) for `qlpack.yml` files.
diff --git a/content/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/managing-codeql-databases.md b/content/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/managing-codeql-databases.md
index 381b4e40afd8..6ce09671d74e 100644
--- a/content/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/managing-codeql-databases.md
+++ b/content/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/managing-codeql-databases.md
@@ -15,17 +15,19 @@ intro: 'You can work with {% data variables.product.prodname_codeql %} databases
## About {% data variables.product.prodname_codeql %} databases
-To analyze a project, you need to select a {% data variables.product.prodname_codeql %} database for that project. You can select a database locally (from a ZIP archive or an unarchived folder), from a public URL, or from a project's URL on {% data variables.product.prodname_dotcom_the_website %}. To read about how to create a database with the {% data variables.product.prodname_codeql_cli %}, see "[AUTOTITLE](/code-security/codeql-cli/using-the-codeql-cli/creating-codeql-databases)."
+To analyze a project, you need to select a {% data variables.product.prodname_codeql %} database for that project. You can select a database locally (from a ZIP archive or an unarchived folder){% ifversion fpt or ghec %}, from a public URL,{% endif %} or from a project's URL on {% data variables.product.github %}. Alternatively, you can create a database using the {% data variables.product.prodname_codeql_cli %}, see "[AUTOTITLE](/code-security/codeql-cli/using-the-codeql-cli/creating-codeql-databases)."
-### Downloading a database from {% data variables.product.prodname_dotcom %}
+### Downloading a database from {% data variables.product.github %}
-{% data variables.product.prodname_dotcom %} stores {% data variables.product.prodname_codeql %} databases for over 200,000 repositories on {% data variables.product.prodname_dotcom_the_website %}.
+{% data variables.product.prodname_dotcom_the_website %} stores {% data variables.product.prodname_codeql %} databases for over 200,000 open source repositories that you can use to test your analysis on. {% ifversion ghec %}You can also access databases for repositories hosted on {% data variables.enterprise.data_residency %} by editing your settings and defining the URL for your system, see "[Changing the {% data variables.product.github %} URL used by the extension](/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/customizing-settings#changing-the-github-url-used-by-the-extension)."{% endif %}
+{% ifversion fpt or ghec %}
You can check if a repository has any {% data variables.product.prodname_codeql %} databases available for download, and if so download it, using the REST API. For more information, see "[List {% data variables.product.prodname_codeql %} databases for a repository](/rest/code-scanning/code-scanning#list-codeql-databases-for-a-repository)" and "[Get a {% data variables.product.prodname_codeql %} database for a repository](/rest/code-scanning/code-scanning#get-a-codeql-database-for-a-repository)" in the {% data variables.product.prodname_dotcom %} REST API documentation.
+{% endif %}
## Choosing a database to analyze
-1. Hover over the title bar of the "Databases" view and choose the appropriate icon to select your database. You can select a local database (from a ZIP archive or an unarchived folder), from a public URL, or from a project's URL on {% data variables.product.prodname_dotcom_the_website %}.
+1. Hover over the title bar of the "Databases" view and choose the appropriate icon to select your database. You can select a local database (from a ZIP archive or an unarchived folder), from a public URL, or from a project's URL on {% data variables.product.github %}.
1. Once you've chosen a database, it will be displayed in the "Databases" view. To see the menu options for interacting with a database, right-click an entry in the list. You can select multiple databases at once.
diff --git a/content/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries-at-scale-with-multi-repository-variant-analysis.md b/content/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries-at-scale-with-multi-repository-variant-analysis.md
index b05f1592b1a5..e994da9ffc0c 100644
--- a/content/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries-at-scale-with-multi-repository-variant-analysis.md
+++ b/content/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries-at-scale-with-multi-repository-variant-analysis.md
@@ -8,24 +8,24 @@ topics:
- Code scanning
- CodeQL
type: reference
-intro: 'You can run {% data variables.product.prodname_codeql %} queries on a large number of repositories on {% data variables.product.prodname_dotcom_the_website %} from {% data variables.product.prodname_vscode %}.'
+intro: 'You can run {% data variables.product.prodname_codeql %} queries on a large number of repositories on {% data variables.product.github %} from {% data variables.product.prodname_vscode %}.'
redirect_from:
- /code-security/codeql-for-vs-code/running-codeql-queries-at-scale-with-mrva
---
## About running {% data variables.product.prodname_codeql %} queries at scale with multi-repository variant analysis
-With multi-repository variant analysis (MRVA), you can run {% data variables.product.prodname_codeql %} queries on a list of up to 1,000 repositories on {% data variables.product.prodname_dotcom_the_website %} from {% data variables.product.prodname_vscode %}.
+With multi-repository variant analysis (MRVA), you can run {% data variables.product.prodname_codeql %} queries on a list of up to 1,000 repositories on {% data variables.product.github %} from {% data variables.product.prodname_vscode %}.
-When you run MRVA against a list of repositories, your query is run against each repository that has a {% data variables.product.prodname_codeql %} database available to analyze. {% data variables.product.company_short %} creates and stores the latest {% data variables.product.prodname_codeql %} database for the default branch of thousands of public repositories, including every repository that runs {% data variables.product.prodname_code_scanning %} using {% data variables.product.prodname_codeql %}.
+When you run MRVA against a list of repositories, your query is run against each repository that has a {% data variables.product.prodname_codeql %} database available to analyze. {% data variables.product.github %} creates and stores the latest {% data variables.product.prodname_codeql %} database for the default branch of thousands of public repositories, including every repository that runs {% data variables.product.prodname_code_scanning %} using {% data variables.product.prodname_codeql %}.
You need to enable {% data variables.product.prodname_code_scanning %} using {% data variables.product.prodname_codeql %} on {% data variables.product.github %}, using either default setup or advanced setup, before adding your repository to a list for analysis. For information about enabling {% data variables.product.prodname_code_scanning %} using {% data variables.product.prodname_codeql %}, see "[AUTOTITLE](/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning-for-a-repository#configuring-code-scanning-automatically)."
### How MRVA runs queries against {% data variables.product.prodname_codeql %} databases on {% data variables.product.prodname_dotcom_the_website %}
-When you run MRVA, the analysis is run entirely using {% data variables.product.prodname_actions %}. You don't need to create any workflows, but you must specify which {% data variables.product.prodname_dotcom %} repository the {% data variables.product.prodname_codeql %} for {% data variables.product.prodname_vscode %} extension should use as a controller repository. As the analysis of each repository completes, the results are sent to {% data variables.product.prodname_vscode_shortname %} for you to view.
+When you run MRVA, the analysis is run entirely using {% data variables.product.prodname_actions %}. You don't need to create any workflows, but you must specify which repository the {% data variables.product.prodname_codeql %} for {% data variables.product.prodname_vscode %} extension should use as a controller repository. As the analysis of each repository completes, the results are sent to {% data variables.product.prodname_vscode_shortname %} for you to view.
-The {% data variables.product.prodname_codeql %} extension builds a {% data variables.product.prodname_codeql %} pack with your library and any library dependencies. The {% data variables.product.prodname_codeql %} pack and your selected repository list are posted to an API endpoint on {% data variables.product.prodname_dotcom_the_website %}, which triggers a {% data variables.product.prodname_actions %} dynamic workflow in your controller repository. The workflow spins up multiple parallel jobs to execute the {% data variables.product.prodname_codeql %} query against the repositories in the list, optimizing query execution. As each repository is analyzed, the results are processed and displayed in {% data variables.product.prodname_vscode_shortname %}.
+The {% data variables.product.prodname_codeql %} extension builds a {% data variables.product.prodname_codeql %} pack with your library and any library dependencies. The {% data variables.product.prodname_codeql %} pack and your selected repository list are posted to an API endpoint on {% data variables.product.github %}, which triggers a {% data variables.product.prodname_actions %} dynamic workflow in your controller repository. The workflow spins up multiple parallel jobs to execute the {% data variables.product.prodname_codeql %} query against the repositories in the list, optimizing query execution. As each repository is analyzed, the results are processed and displayed in {% data variables.product.prodname_vscode_shortname %}.
### Prerequisites
@@ -33,9 +33,15 @@ The {% data variables.product.prodname_codeql %} extension builds a {% data vari
* Controller repositories can be empty, but they must have at least one commit.
-* The controller repository visibility can be "public" if you plan to analyze public repositories. The variant analysis will be free.
+{% ifversion ghec %}
+* The controller repository must be hosted on the same site as the repositories that you want to analyze using MRVA, that is: {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_domain %}. If you want to run MRVA on {% data variables.enterprise.data_residency %}, see "[Changing the {% data variables.product.github %} URL used by the extension](/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/customizing-settings#changing-the-github-url-used-by-the-extension)."
+{% endif %}
-* The controller repository visibility must be "private" if you need to analyze any private or internal repositories. {% ifversion fpt or ghec %} Any actions minutes used by variant analysis, above the free limit, will be charged to the repository owner. For more information about free minutes and billing, see "[AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions)."{% endif %}
+* On {% data variables.product.prodname_dotcom_the_website %}, the controller repository visibility can be "public" if you plan to analyze only public repositories. The variant analysis will be free.
+
+* The controller repository visibility must be "private" if you need to analyze any private or internal repositories on {% data variables.product.prodname_dotcom_the_website %}. {% ifversion fpt or ghec %}
+
+Any actions minutes that you use to run variant analysis on private or internal repositories, above the free limit, is charged to the repository owner. For more information about free minutes and billing, see "[AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions)."{% endif %}
## Setting up a controller repository for MRVA
@@ -43,41 +49,52 @@ The {% data variables.product.prodname_codeql %} extension builds a {% data vari
![Screenshot of the "Variant Analysis Repositories" view. The button to "Set up controller repository" is highlighted in dark orange.](/assets/images/help/security/codeql-for-vs-code-controller-repository.png)
-1. Type the owner and name of the repository on {% data variables.product.prodname_dotcom_the_website %} that you want to use as your controller repository and press the **Enter** key.
+1. Type the owner and name of the repository on {% data variables.product.github %} that you want to use as your controller repository and press the **Enter** key. {% ifversion ghec %}This repository must be on the same instance of {% data variables.product.github %} as the repositories that you want to analyze, see "[Changing the {% data variables.product.github %} URL used by the extension](/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/customizing-settings#changing-the-github-url-used-by-the-extension)."{% endif %}
-1. If you are prompted to authenticate with {% data variables.product.company_short %}, follow the instructions and sign in to your personal or organization account. When you have finished, a prompt from {% data variables.product.company_short %} Authentication may ask for permission to open in {% data variables.product.prodname_vscode %}, click **Open**.
+1. If you are prompted to authenticate with {% data variables.product.github %}, follow the instructions and sign in to your account. When you have finished, a prompt from {% data variables.product.github %} Authentication may ask for permission to open in {% data variables.product.prodname_vscode %}, click **Open**.
The name of the controller repository is saved in your settings for the {% data variables.product.prodname_codeql %} extension. For information on how to edit the controller repository, see "[AUTOTITLE](/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/customizing-settings)."
## Running a query at scale using MRVA
-1. By default, the "Variant Analysis Repositories" view shows the default lists of the Top 10, Top 100, and Top 1000 public repositories on {% data variables.product.prodname_dotcom_the_website %} for the language that you are analyzing.
+1. By default, the "Variant Analysis Repositories" view shows the default lists of the Top 10, Top 100, and Top 1000 public repositories on {% data variables.product.prodname_dotcom_the_website %} for the language that you are analyzing. If your controller repository is hosted on {% data variables.enterprise.data_residency_domain %}, these lists are not available.
+
+1. Optionally, you can add a new repository, organization, or list.
+
+ 1. In the "Variant Analysis Repositories" view, click **+** to add a new database.
+
+ 1. From the dropdown menu, select **From a {% data variables.product.github %} repository** or **All repositories of {% data variables.product.github %} org or owner**.
-1. Optionally, you can add a new repository, organization, or list. For more information, see "[Creating custom lists of repositories](#creating-a-custom-list-of-repositories)."
+ 1. Type the identifier of the repository or organization that you want to use into the field.
-1. Select which {% data variables.product.company_short %} repository or repositories you want to run your query against.
+1. Select which {% data variables.product.github %} repository or repositories you want to run your query against.
![Screenshot of the "Variant Analysis Repositories" view. The "octo-org/octo-repo" row is highlighted blue and its "Select" button outlined in orange.](/assets/images/help/security/codeql-for-vs-code-variant-analysis-repo-lists.png)
1. Open the query you want to run, right-click in the query file, and select **{% data variables.product.prodname_codeql %}: Run Variant Analysis** to start variant analysis.
-{% note %}
+> [!NOTE]
+> To a cancel a variant analysis run, click **Stop query** in the "Variant Analysis Results" view.
-**Note:** To a cancel a variant analysis run, click **Stop query** in the "Variant Analysis Results" view.
+## Selecting a single {% data variables.product.github %} repository or organization for analysis
-{% endnote %}
+1. In the "Variant Analysis Repositories" view, click **+** to add a new database.
+
+1. From the dropdown menu, select **From a {% data variables.product.github %} repository** or **All repositories of {% data variables.product.github %} org or owner**.
+
+1. Type the identifier of the repository or organization that you want to use into the field.
### Errors and warnings
When you run MRVA, there are two key places where errors and warnings are displayed:
-* {% data variables.product.prodname_vscode %} errors: any problems with creating a {% data variables.product.prodname_codeql %} pack and sending the analysis to {% data variables.product.prodname_dotcom_the_website %} are reported as {% data variables.product.prodname_vscode %} errors in the bottom right corner of the application. Information is also available in the "Problems" view.
+* {% data variables.product.prodname_vscode %} errors: any problems with creating a {% data variables.product.prodname_codeql %} pack and sending the analysis to {% data variables.product.github %} are reported as {% data variables.product.prodname_vscode %} errors in the bottom right corner of the application. Information is also available in the "Problems" view.
* "Variant Analysis Results": any problems with the variant analysis run are reported in this view.
## Exploring your results
-As soon as a workflow to run your variant analysis on {% data variables.product.company_short %} is running, a "Variant Analysis Results" view opens to display the results as they are ready. You can use this view to monitor progress, see any errors, and access the workflow logs in your controller repository.
+As soon as a workflow to run your variant analysis on {% data variables.product.github %} is running, a "Variant Analysis Results" view opens to display the results as they are ready. You can use this view to monitor progress, see any errors, and access the workflow logs in your controller repository.
![Screenshot of "Variant Analysis Results" showing a run for "FileAccessToHttp.ql". Blue circles show the number of results found or "-" still running.](/assets/images/help/security/codeql-for-vs-code-variant-analysis-results-view.png)
@@ -91,27 +108,19 @@ For each repository, you can see:
* Whether analysis is still running or has finished
-* Number of stars the repository has on {% data variables.product.company_short %}
+* Number of stars the repository has on {% data variables.product.github %}
### Seeing the results for a repository
1. Click the repository name to show a summary of each result.
-1. Explore the information available for each result using links to the source files on {% data variables.product.prodname_dotcom_the_website %}. For data flow queries, there'll be an additional "Show paths" link.
+1. Explore the information available for each result using links to the source files on {% data variables.product.github %}. For data flow queries, there'll be an additional "Show paths" link.
![Screenshot of the "Variant Analysis Results" view, with blue links to GitHub source files. There is a "Show paths" link, highlighted in dark orange.](/assets/images/help/security/codeql-for-vs-code-variant-analysis-result.png)
### Exporting your results
-You can export your results for further analysis or to discuss them with collaborators. In the "Results" view, click **Export results** to export the results to a secret gist on {% data variables.product.prodname_dotcom_the_website %} or to a Markdown file in your workspace.
-
-## Selecting a single {% data variables.product.company_short %} repository or organization for analysis
-
-1. In the "Variant Analysis Repositories" view, click **+** to add a new database.
-
-1. From the dropdown menu, select **From a {% data variables.product.company_short %} repository** or **All repositories of {% data variables.product.company_short %} org or owner**.
-
-1. Type the identifier of the repository or organization that you want to use into the field.
+You can export your results for further analysis or to discuss them with collaborators. In the "Results" view, click **Export results** to export the results to a secret gist on {% data variables.product.github %} or to a Markdown file in your workspace.
## Creating a custom list of repositories
@@ -150,17 +159,17 @@ In the following example snippet, `my-organization/my-repository` had results fo
You can then insert the `new-repo-list` of repositories into `databases.json`for easy access in the "Variant Analysis Repositories" view.
-### Using {% data variables.product.company_short %} code search to add repositories to a custom list
+### Using {% data variables.product.github %} code search to add repositories to a custom list
{% note %}
-**Note:** This feature uses the legacy code search via the {% data variables.product.company_short %} code search API. For more information on the syntax to use, see "[AUTOTITLE](/search-github/searching-on-github/searching-code)."
+**Note:** This feature uses the legacy code search via the {% data variables.product.github %} code search API. For more information on the syntax to use, see "[AUTOTITLE](/search-github/searching-on-github/searching-code)."
{% endnote %}
-You can use code search directly in the {% data variables.product.prodname_codeql %} extension to add a subset of repositories from {% data variables.product.prodname_dotcom_the_website %} to a custom list.
+You can use code search directly in the {% data variables.product.prodname_codeql %} extension to add a subset of repositories from {% data variables.product.github %} to a custom list.
-For example, to add all repositories in the `rails` organization on {% data variables.product.company_short %}, search `org:rails`.
+For example, to add all repositories in the `rails` organization on {% data variables.product.github %}, search `org:rails`.
You can add a maximum of 1,000 repositories to a custom list per search.
diff --git a/content/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/customizing-settings.md b/content/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/customizing-settings.md
index 1702cb5636eb..fe2d9d06b006 100644
--- a/content/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/customizing-settings.md
+++ b/content/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/customizing-settings.md
@@ -23,7 +23,7 @@ You can change numerous settings for the {% data variables.product.prodname_code
* How the extension displays previous queries.
* How the extension runs queries.
-## Editing settings
+## Editing settings for the {% data variables.product.prodname_codeql %} extension
1. Open the "Extensions" view and right-click **{% data variables.product.prodname_codeql %}**, then click **Extension Settings**.
@@ -33,11 +33,8 @@ You can change numerous settings for the {% data variables.product.prodname_code
![Screenshot of the CodeQL for VS Code Extension Settings window displayed inside VS Code.](/assets/images/help/security/codeql-for-vs-code-extension-settings.png)
-{% note %}
-
-**Note:** Alternatively, you can edit the settings in JSON format by opening the {% data variables.product.prodname_vscode_command_palette_shortname %} and selecting **Preferences: Open User Settings (JSON)**.
-
-{% endnote %}
+> [!TIP]
+> Alternatively, you can edit the settings in JSON format by opening the {% data variables.product.prodname_vscode_command_palette_shortname %} and selecting **Preferences: Open User Settings (JSON)**.
### Choosing a version of the {% data variables.product.prodname_codeql_cli %}
@@ -113,13 +110,10 @@ To automatically add database source folders to your workspace, you can enable t
This setting is disabled by default. You may want to enable the setting if you regularly browse the source code of databases (for example, to view the abstract syntax tree of the code). For more information, see "[AUTOTITLE](/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/exploring-the-structure-of-your-source-code)."
-{% note %}
-
-If you are in a single-folder workspace, adding database source folders will cause the workspace to reload as a multi-root workspace. This may cause query history and database lists to reset.
-
-Before enabling this setting, we recommend that you save your workspace as a multi-root workspace. For more information, see [Multi-root Workspaces](https://code.visualstudio.com/docs/editor/multi-root-workspaces) in the {% data variables.product.prodname_vscode %} documentation.
-
-{% endnote %}
+> [!NOTE]
+> If you are in a single-folder workspace, adding database source folders will cause the workspace to reload as a multi-root workspace. This may cause query history and database lists to reset.
+>
+> Before enabling this setting, we recommend that you save your workspace as a multi-root workspace. For more information, see [Multi-root Workspaces](https://code.visualstudio.com/docs/editor/multi-root-workspaces) in the {% data variables.product.prodname_vscode %} documentation.
### Configuring settings for testing queries locally
@@ -131,6 +125,38 @@ To pass additional arguments to the {% data variables.product.prodname_codeql_cl
You can configure whether the {% data variables.product.prodname_codeql %} extension collects telemetry data. This is disabled by default. For more information, see "[AUTOTITLE](/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/telemetry-in-codeql-for-visual-studio-code)."
+{% ifversion ghec %}
+
+## Changing the {% data variables.product.github %} URL used by the extension
+
+By default, the {% data variables.product.prodname_codeql %} for {% data variables.product.prodname_vscode %} extension is configured to analyze repositories hosted on {% data variables.product.prodname_dotcom_the_website %}. If you use {% data variables.enterprise.data_residency %}, you can specify the URL of your site using the "{% data variables.product.github %} Enterprise URI" setting.
+
+### Specifying the {% data variables.product.github %} URL in your settings
+
+1. Open the "Extensions" view and right-click **{% data variables.product.prodname_codeql %}**, then click **Extension Settings**.
+
+1. In the "Settings" window, scroll down until you find the {% data variables.product.github %} Authentication settings and enter the URL of your {% data variables.enterprise.data_residency %}. The new settings are saved automatically.
+
+ ![Screenshot of the "Extensions" settings for "{% data variables.product.github %} Authentication" the URI field is outlined in dark orange.](/assets/images/help/security/codeql-for-vs-code-set-ghe-uri.png)
+
+Alternatively, you can define the URL in the JSON file where your settings for {% data variables.product.prodname_codeql %} are stored.
+
+```json
+ "github-enterprise.uri": "{% data variables.enterprise.data_residency_domain %}",
+```
+
+### When the extension uses the {% data variables.product.github %} URL you set
+
+When {% data variables.product.github %} Enterprise URI (`github-enterprise.uri`) is defined, the extension uses this URL in:
+
+* Requests to download databases from {% data variables.product.github %}
+* Creating a list of repositories for variant analysis
+
+> [!NOTE]
+> {% data variables.enterprise.data_residency %} requires authentication to see all repositories, so you will need to authenticate before you can download or analyze data. In addition, you will not see any "Top XX repositories" lists for variant analysis, see "[AUTOTITLE](/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries-at-scale-with-multi-repository-variant-analysis)."
+
+{% endif %}
+
## Further reading
* [User and Workspace Settings](https://code.visualstudio.com/docs/getstarted/settings) in the {% data variables.product.prodname_vscode %} documentation
diff --git a/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/about-security-campaigns.md b/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/about-security-campaigns.md
new file mode 100644
index 000000000000..c9aaf65d4648
--- /dev/null
+++ b/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/about-security-campaigns.md
@@ -0,0 +1,43 @@
+---
+title: 'About security campaigns'
+shortTitle: 'About security campaigns'
+intro: 'You can fix security alerts at scale by creating security campaigns and collaborating with developers to burn down your security backlog.'
+product: '{% data reusables.gated-features.security-campaigns %}'
+allowTitleToDifferFromFilename: true
+type: overview
+versions:
+ feature: security-campaigns
+topics:
+ - Advanced Security
+ - Organizations
+ - Security
+---
+
+Once you have identified security alerts in the default branches of your repositories, the next step is to identify the most urgent alerts and get them fixed. Security campaigns are a way to group alerts and share them with developers, so you can collaborate to remediate vulnerabilities in the code.
+
+{% data reusables.security-campaigns.preview-note %}
+
+## Security campaigns in your day-to-day work
+
+You can use security campaigns to support many of your aims as a security leader.
+
+* Improving the security posture of the company by leading work to remediate alerts.
+* Reinforcing security training for developers by creating a campaign of related alerts to fix collaboratively.
+* Building collaborative relationships between the security team and developers to promote shared ownership of security alerts.
+* Providing clarity to developers on the most urgent alerts to fix and monitoring alert remediation.
+
+## Benefits of using security campaigns
+
+A security campaign has many benefits over other ways of encouraging developers to remediate security alerts. In particular,
+
+* Developers are notified about any security campaigns taking place in repositories they work in or subscribe to (by email during the {% data variables.release-phases.public_preview %}).
+* Developers can see the alerts you've highlighted for remediation without leaving their normal workflows.
+* Each campaign has a named point of contact for questions, reviews, and collaboration. {% ifversion security-campaigns-autofix %}
+* {% data variables.product.prodname_copilot_autofix %} is automatically triggered to suggest a resolution for each security alert. {% endif %}
+
+In addition, you can use one of the templates to select a group of closely related alerts for a campaign. This allows developers to build on the knowledge gained by resolving one alert and use it to fix several more, providing them with an incentive to fix multiple alerts.
+
+## Next steps
+
+* "[AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/best-practice-fix-alerts-at-scale)"
+* "[AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/creating-tracking-security-campaigns)"
diff --git a/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/best-practice-fix-alerts-at-scale.md b/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/best-practice-fix-alerts-at-scale.md
new file mode 100644
index 000000000000..40bfaa585643
--- /dev/null
+++ b/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/best-practice-fix-alerts-at-scale.md
@@ -0,0 +1,84 @@
+---
+title: Best practices for fixing security alerts at scale
+shortTitle: Best practices
+intro: 'Guidance on how to create successful security campaigns that engage developers and help them grow their understanding of secure coding.'
+allowTitleToDifferFromFilename: true
+product: '{% data reusables.gated-features.security-campaigns %}'
+type: reference
+versions:
+ feature: security-campaigns
+topics:
+ - Advanced Security
+ - Organizations
+ - Security
+---
+{% data reusables.security-campaigns.preview-note %}
+
+## Elements of a successful security campaign
+
+Successful security campaigns to fix alerts at scale have many features in common, including:
+
+* Selecting a related group of security alerts for remediation.
+* Making sure that the manager for the campaign is available for collaboration, reviews, and questions about fixes.
+* Providing access to educational information about the type of alerts included in the campaign.{% ifversion ghec %}
+* Making {% data variables.product.prodname_copilot_chat %} available for developers to use to learn about the vulnerabilities highlighted by the security alerts in the campaign. {% endif %}
+* Defining a realistic deadline for campaign, bearing in mind the number of alerts you aim to fix.
+* Publicizing the collaboration to developer teams and identifying the best way to engage them for your organization.
+
+For information about the developer experience, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/fixing-alerts-in-security-campaign)."
+
+## Selecting security alerts for remediation
+
+Your first thought may be to identify all the most urgent alerts and create a security campaign to fix them. If your developers already have a good understanding of secure coding and are keen to remediate potential vulnerabilities, this could be a successful approach for your company. However, if you need to build up knowledge of secure coding and common vulnerabilities, you will benefit from a more stategic approach.
+
+For example, if you have many alerts for cross-site scripting vulnerabilities, you could:
+
+* Create educational content for developers in a repository using resources from the OWASP Foundation, see [Cross Site Scripting (XSS)](https://owasp.org/www-community/attacks/xss/).
+* Create a campaign to remediate all alerts for this vulnerability, including a link to the educational content in the campaign description.
+* Hold a training session or other event to highlight this opportunity to gain confidence in secure coding while fixing real bugs.
+* Make sure that the security team member assigned to manage the campaign is available to review the pull requests created to fix the campaign alerts, collaborating as needed.
+
+### Campaign filter templates
+
+When you select alerts to include in a security campaign, you can use any of the filters on the security alerts page to define a subset of alerts. Alternatively, you can choose a campaign template to use one of the pre-defined filters for common needs, for example: "Cross-site scripting (CWE-79)."
+
+### Limitations on security campaigns
+
+The following limitations are intended to encourage you to take a balanced and measured approach to remediating alerts in your code. An iterative approach, addressing a few targeted sets of alerts at a time, is likely to lead to a sustainable and long-term change in security posture.
+
+* A maximum of 10 active security campaigns at a time (no limits on closed campaigns).
+* Each campaign can contain up to 1000 alerts spread across up to 100 repositories.
+
+If you choose to create a campaign that exceeds these limits, alerts will be omitted to bring the campaign into line with the limits. Alerts in repositories with recent pushes are prioritized for inclusion in the campaign.
+
+## Defining the role of the campaign manager
+
+When you create a security campaign, you must select a "Campaign manager." The campaign manager must have either the organization owner or security manager role.
+
+The name of the campaign manager is visible to developers when they take part in the campaign. If you want to increase the remediation rate for alerts and scale the knowledge of the security team, this is a key opportunity to build collaborative relationships with developers. Ideally, a campaign manager is available to answer questions, collaborate on difficult fixes, and review pull requests for fixes over the whole course of the campaign.
+
+## Combining security training with a security campaign
+
+If your security team already provides training for developers on secure coding, creating a campaign with alerts chosen to allow developers to use the skills from the training session is a great way to reinforce their learning. Even if you don't have a formal training program, it makes sense to provide information on the types of security vulnerabilities included in the campaign, examples of how to fix them, and how to test the fixes. This will simplify the role of the campaign manager as they will be able to direct developers to these resources for answers to basic questions.
+
+The OWASP Foundation provides many resources for learning about the most common vulnerabilities and MITRE Corporation maintain a detailed list of common weaknesses, see [About the OWASP Foundation](https://owasp.org/about/) and [About CWE](https://cwe.mitre.org/about/index.html).
+
+{% ifversion security-campaigns-autofix %}
+
+## Providing AI support for learning about security vulnerabilities
+
+{% data variables.product.prodname_copilot_autofix %} is automatically triggered to suggest a resolution for each security alert. However, developers will often want more information about why the original code is insecure and how to test that the fix is correct and doesn't break other components.
+
+{% data variables.product.prodname_copilot %} is an important tool for developers who have questions about secure coding, how to fix security alerts, and test their fix. Check that all developers in your organization have access to {% data variables.product.prodname_copilot_short %} in both their IDE and {% data variables.product.github %}, see "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-access-to-github-copilot-in-your-organization/granting-access-to-copilot-for-members-of-your-organization)."
+
+> [!TIP] The {% data variables.product.prodname_GH_advanced_security %} skill provides {% data variables.product.prodname_copilot_chat_short %} with additional context to answer questions about security alerts.
+
+{% endif %}
+
+## Considerations in starting a security campaign and defining a deadline
+
+As with any other project, it's important to define realistic timescales to avoid discouraging developers from participating in the security campaign. Unless your company is fixing security alerts as part of a larger campaign to reduce technical debt, most developers will not have time allocated to fixing alerts. You need to estimate remediation rates based on the time developers can find between scheduled tasks. It's also always worth checking on key company deadlines that developers may be working towards and checking national holidays.
+
+## Next steps
+
+* "[AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/creating-tracking-security-campaigns)"
diff --git a/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/creating-tracking-security-campaigns.md b/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/creating-tracking-security-campaigns.md
new file mode 100644
index 000000000000..003d7115310f
--- /dev/null
+++ b/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/creating-tracking-security-campaigns.md
@@ -0,0 +1,143 @@
+---
+title: Creating and tracking security campaigns
+shortTitle: Create security campaigns
+intro: 'You can manage security campaigns directly from the security overview for your organization.'
+allowTitleToDifferFromFilename: true
+permissions: '{% data reusables.permissions.security-org-enable %}'
+product: '{% data reusables.gated-features.security-campaigns %}'
+type: how_to
+versions:
+ feature: security-campaigns
+topics:
+ - Advanced Security
+ - Organizations
+ - Security
+---
+
+{% data reusables.security-campaigns.preview-note %}
+
+## Creating a security campaign
+
+Security campaigns are created and managed from the **Security** tab for your organization. You choose the alerts to include in a campaign by selecting a campaign template from the sidebar of the "Overview" dashboard or by filtering the alerts displayed on the {% data variables.product.prodname_code_scanning %} alerts view for your organization.
+
+For more information about filtering alerts, see "[AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/best-practice-fix-alerts-at-scale#selecting-security-alerts-for-remediation)" and "[AUTOTITLE](/code-security/security-overview/filtering-alerts-in-security-overview)."
+
+### Creating a campaign from a template
+
+The campaign templates contain filters for the most common alert selections. {% ifversion security-campaigns-autofix %}They also all include the requirement that {% data variables.product.prodname_copilot_autofix %} is supported for all the alert types included (that is, `autofix:supported`).{% endif %}
+
+{% data reusables.organizations.navigate-to-org %}
+{% data reusables.organizations.security-overview %}
+1. In the left sidebar, next to "Campaigns", click the {% octicon "plus" aria-label="New campaign" %} icon to start creating a campaign.
+1. Select one of the pre-defined filter templates to open a "New campaign from TEMPLATE_NAME template" dialog box.
+1. If the message "This looks like a big campaign" is displayed, click **Back to filters** to display the {% data variables.product.prodname_code_scanning %} alerts view with the campaign template filter shown.
+ 1. Add further filters to reduce the number of alerts shown, for example, filtering by "Team" or by custom property.
+ 1. When there are fewer than 1000 alerts in 100 repositories, click **Create campaign** to redisplay the "New campaign" dialog.
+
+ Alternatively, you can click **Continue creating a campaign** and create the campaign. {% data reusables.security-campaigns.too-many-alerts %}
+1. Edit the "Campaign name" and "Short description" to match your campaign needs and to link to any resources that support the campaign.
+1. Define a "Campaign due date" and select a "Campaign manager" as the primary contact for the campaign (an owner or security manager of this organization).
+1. When you're ready to create the campaign, click **Create campaign**.
+
+The security campaign is created and the campaign overview page is displayed.
+
+### Creating a campaign using custom filters
+
+{% data reusables.organizations.navigate-to-org %}
+{% data reusables.organizations.security-overview %}
+1. In the left sidebar, under "Alerts" click {% octicon "codescan" aria-hidden="true" %} **{% data variables.product.prodname_code_scanning_caps %}** to show the alerts view.
+1. Add filters to select a subset of alerts for your campaign. When you have chosen fewer than 1000 alerts, spread across fewer than 100 repositories, you are ready to create a campaign.
+1. Above the table of alerts, click **Create campaign** to start creating a campaign.
+1. If the message "This looks like a big campaign" is displayed, click **Back to filters** to display the {% data variables.product.prodname_code_scanning %} alerts view with your existing filters.
+ 1. Add further filters to reduce the number of alerts shown, for example, filtering by "Team" or by custom property.
+ 1. When there are fewer than 1000 alerts in 100 repositories, click **Create campaign** to redisplay the "New campaign" dialog.
+
+ Alternatively, you can click **Continue creating a campaign** and create the campaign. {% data reusables.security-campaigns.too-many-alerts %}
+1. Edit the "Campaign name" and "Short description" to match your campaign needs and to link to any resources that support the campaign.
+1. Define a "Campaign due date" and select a "Campaign manager" as the primary contact for the campaign (an owner or security manager of this organization).
+1. When you're ready to create the campaign, click **Create campaign**.
+
+### Examples of useful filters
+
+All the template filters include the following useful filters:
+
+* `is:open` includes only alerts that are open in the default branch.
+* `autofilter:true` includes only alerts that appear to be in application code. {% ifversion security-campaigns-autofix %}
+* `autofix:supported` includes only alerts that are for rules that are supported for {% data variables.product.prodname_copilot_autofix %}.{% endif %}
+
+Once you include these core filters, you will usually want to add a filter to limit results to a specific rule name, severity, or tag. For example:
+
+* `is:open autofilter:true {% ifversion security-campaigns-autofix %}autofix:supported {% endif %}rule:java/log-injection` to show only alerts for log injection in Java code.
+* `is:open autofilter:true {% ifversion security-campaigns-autofix %}autofix:supported {% endif %}tag:external/cwe/cwe-117` to show only alerts for "CWE 117: Improper Output Neutralization for Logs". This includes log injection in Java and other languages.
+* `is:open autofilter:true {% ifversion security-campaigns-autofix %}autofix:supported {% endif %}severity:critical` to show only alerts with a security severity of critical
+
+> [!TIP] When you enter a keyword followed by colon in the search field, a list of all valid values is displayed, for example: `tag:`.
+
+For more information about the rules run by {% data variables.product.prodname_codeql %}{% ifversion security-campaigns-autofix %} and support for autofix{% endif %}, see "[Query lists for the default query suites](/code-security/code-scanning/managing-your-code-scanning-configuration/codeql-query-suites#query-lists-for-the-default-query-suites)."
+
+## Launching a security campaign
+
+{% ifversion security-campaigns-autofix %}
+
+When you create a campaign all the alerts are automatically submitted to {% data variables.product.prodname_copilot_autofix %} to be processed as capacity allows. This ensures that suggestions for alerts found in pull requests aren't delayed by a new campaign. In most cases, you should find that all suggestions that can be created are ready within an hour. At busy times of day, or for particularly complex alerts, it will take longer.
+
+{% endif %}
+
+### How developers know a security campaign has started
+
+Everyone with **write** access to a repository that is included in the campaign is notified, according to their notification preferences, about the campaign.
+
+> [!NOTE] During the {% data variables.release-phases.public_preview %}, notifications are only sent to users who have email notification enabled.
+
+In addition to the automatic notifications sent out, the new campaign is shown in the sidebar of the "Security" tab for each repository included. For more information about the developer experience, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/fixing-alerts-in-security-campaign)."
+
+### How to increase engagement with the security campaign
+
+The best way to increase engagement with a campaign is to publicize it to the teams you want to collaborate with to remediate alerts. For example, you might work with engineering managers to choose a quieter development period to run a series of security campaigns, each focused on a different type of alert, with associated training sessions. For more ideas, see "[AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/best-practice-fix-alerts-at-scale)."
+
+## Tracking security campaigns
+
+When you create a campaign, the campaign tracking view is displayed and the campaign is listed in the sidebar of the **Security** tab for the organization. You can redisplay the campaign tracking view at any time by selecting it in the sidebar under "Campaigns".
+
+![Screenshot of campaign tracking view for "Testing Campaigns for CodeQL". The campaign progress is outlined in dark orange.](/assets/images/help/security/driver-sec-campaign-view.png)
+
+### Security campaign alert statuses
+
+The summary at the top of the campaign view reports the number of alerts closed, open, and in progress.
+
+* **In progress** when at least one branch or pull request is created to fix the alert through the campaign view or the alert page.
+* **Closed** when the alert is fixed or dismissed, even if the development work was done outside the campaign framework.
+
+### Security campaign views
+
+You can explore the campaign repositories and alerts to see where teams are engaging in the campaign, and where teams might need some extra encouragement to take part.
+
+* **Repository details:** you can expand any repository to show the progress in alert remediation.
+* **Alert details:** you can set the "Group by" option to **None** to show a list of all alerts.
+
+You can filter both of these views to focus on a subset of repositories or alerts. Any alerts that are in progress are listed first.
+
+## Editing security campaign details
+
+You can edit the name, description, due date, and manager for a campaign. This is particularly useful if the current campaign manager is on leave and you need to define a new contact for developers.
+
+{% data reusables.organizations.navigate-to-org %}
+{% data reusables.organizations.security-overview %}
+1. In the sidebar, under "Campaigns" click the name of the campaign to display the campaign tracking view.
+1. In the campaign title row, click {% octicon "kebab-horizontal" aria-label="Campaign options" %} and select **Edit campaign**.
+1. In the "Edit campaign" dialog make your changes and then click **Save changes**.
+
+The changes are made immediately.
+
+## Closing or deleting security campaigns
+
+There is a limit of 10 active campaigns. When a campaign is complete, or if you want to pause it, you should close it. When you close a campaign, it's no longer displayed for developers in the repository **Security** tab but you can still display the campaign tracking view to develop best practice. In addition, you can reopen a closed campaign from the "Closed campaigns" view, which is accessible from the sidebar in the **Security** tab of the organization.
+
+If you open a campaign for testing, you may prefer to delete the campaign. This deletes the campaign and all associated data entirely.
+
+{% data reusables.organizations.navigate-to-org %}
+{% data reusables.organizations.security-overview %}
+1. In the sidebar, under "Campaigns" click the name of the campaign to display the campaign tracking view.
+1. In the campaign title row, click {% octicon "kebab-horizontal" aria-label="Campaign options" %} and select your required option:
+ * **Close campaign** to remove it from the active campaigns list and display it on the Closed campaigns view.
+ * **Delete campaign** to delete the campaign permanently. In the "Delete campaign" dialog, click **Delete** to confirm that you want to delete the campaign.
diff --git a/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/index.md b/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/index.md
new file mode 100644
index 000000000000..d9d52220fb37
--- /dev/null
+++ b/content/code-security/securing-your-organization/fixing-security-alerts-at-scale/index.md
@@ -0,0 +1,17 @@
+---
+title: Fixing security alerts at scale
+shortTitle: Fix alerts at scale
+intro: 'Once you detect security alerts across your organization, you will want to create security campaigns to engage with developers and collaborate on fixing alerts.'
+versions:
+ feature: security-campaigns
+topics:
+ - Advanced Security
+ - Organizations
+ - Security
+children:
+ - /about-security-campaigns
+ - /best-practice-fix-alerts-at-scale
+ - /creating-tracking-security-campaigns
+---
+
+{% data reusables.security-campaigns.preview-note %}
diff --git a/content/code-security/securing-your-organization/index.md b/content/code-security/securing-your-organization/index.md
index e574e06cd0b3..134d5a4b32a6 100644
--- a/content/code-security/securing-your-organization/index.md
+++ b/content/code-security/securing-your-organization/index.md
@@ -13,5 +13,6 @@ children:
- /enabling-security-features-in-your-organization
- /meeting-your-specific-security-needs-with-custom-security-configurations
- /managing-the-security-of-your-organization
+ - /fixing-security-alerts-at-scale
- /troubleshooting-security-configurations
---
diff --git a/content/code-security/securing-your-organization/managing-the-security-of-your-organization/interpreting-security-findings.md b/content/code-security/securing-your-organization/managing-the-security-of-your-organization/interpreting-security-findings.md
index 39b6e517dbfb..bdf0b6bc1c2c 100644
--- a/content/code-security/securing-your-organization/managing-the-security-of-your-organization/interpreting-security-findings.md
+++ b/content/code-security/securing-your-organization/managing-the-security-of-your-organization/interpreting-security-findings.md
@@ -15,7 +15,9 @@ redirect_from:
## About security findings
-After you apply a {% data variables.product.prodname_security_configuration %} to a repository, the enabled security features will likely raise security findings on that repository. These findings may show up as feature-specific alerts, or as automatically generated pull requests designed to keep your repository secure. To best secure your organization, you should encourage contributors to those repositories to review and resolve these alerts and pull requests. You can analyze the findings across the organization and make any necessary adjustments to your {% data variables.product.prodname_security_configuration %}.
+After you apply a {% data variables.product.prodname_security_configuration %} to a repository, the enabled security features will likely raise security findings on that repository. These findings may show up as feature-specific alerts, or as automatically generated pull requests designed to keep your repositories secure. You can analyze the findings across the organization and make any necessary adjustments to your {% data variables.product.prodname_security_configuration %}.
+
+To best secure your organization, you should encourage contributors to review and resolve security alerts and pull requests. {% ifversion security-campaigns %}In addition, you can collaborate with contributors to fix historical security alerts, see "[AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/best-practice-fix-alerts-at-scale)."{% endif %}
{% ifversion ghec or ghes %}
diff --git a/content/code-security/security-overview/about-security-overview.md b/content/code-security/security-overview/about-security-overview.md
index cea74e023434..102477df6983 100644
--- a/content/code-security/security-overview/about-security-overview.md
+++ b/content/code-security/security-overview/about-security-overview.md
@@ -64,6 +64,10 @@ Security overview has multiple views that provide different ways to explore enab
* **CodeQL pull request alerts:** assess the impact of running CodeQL on pull requests and how development teams are resolving code scanning alerts, see "[AUTOTITLE](/code-security/security-overview/viewing-metrics-for-pull-request-alerts)."{% endif %}{% ifversion security-overview-push-protection-metrics-page %}
* **Secret scanning:** find out which types of secret are blocked by push protection{% ifversion security-overview-delegated-bypass-requests %} and which teams are bypassing push protection{% endif %}, see "[AUTOTITLE](/code-security/security-overview/viewing-metrics-for-secret-scanning-push-protection){% ifversion security-overview-delegated-bypass-requests %}" and "[AUTOTITLE](/code-security/security-overview/reviewing-requests-to-bypass-push-protection){% endif %}."{% endif %}
+{% ifversion security-campaigns %}
+You also create and manage security campaigns to remediate alerts from security overview, see "[AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/creating-tracking-security-campaigns)" and "[AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/best-practice-fix-alerts-at-scale)."
+{% endif %}
+
## About security overview for enterprises
You can find security overview on the **Code Security** tab for your enterprise. Each page displays aggregated and repository-specific security information for your enterprise.
diff --git a/content/code-security/security-overview/assessing-code-security-risk.md b/content/code-security/security-overview/assessing-code-security-risk.md
index 92ce508626fe..ff50d0ef65ff 100644
--- a/content/code-security/security-overview/assessing-code-security-risk.md
+++ b/content/code-security/security-overview/assessing-code-security-risk.md
@@ -71,3 +71,10 @@ You can view data for security alerts across organizations in an enterprise.
{% data reusables.organizations.security-overview-feature-specific-page %}
{% data reusables.security-overview.alert-differences %}
+
+{% ifversion security-campaigns %}
+
+## Next steps
+
+When you have assessed your code security risks, you are ready to create a security campaign to collaborate with developers to remediate alerts. For information about fixing security alerts at scale, see "[AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/creating-tracking-security-campaigns)" and "[AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/best-practice-fix-alerts-at-scale)."
+{% endif %}
diff --git a/content/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository.md b/content/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository.md
index 982f92c7d66a..de72b9d31d4f 100644
--- a/content/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository.md
+++ b/content/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository.md
@@ -17,6 +17,12 @@ topics:
shortTitle: Create a codespace for a repo
---
+{% ifversion ghec %}
+
+{% data reusables.codespaces.data-residency-availability %}
+
+{% endif %}
+
## About creating a codespace for a repository
{% data reusables.codespaces.ways-to-create-a-codespace %} Use the tabs in this article to display instructions for each of these ways of creating a codespace.
diff --git a/content/codespaces/developing-in-a-codespace/creating-a-codespace-from-a-template.md b/content/codespaces/developing-in-a-codespace/creating-a-codespace-from-a-template.md
index a7a55979608e..c3d90ed0fccc 100644
--- a/content/codespaces/developing-in-a-codespace/creating-a-codespace-from-a-template.md
+++ b/content/codespaces/developing-in-a-codespace/creating-a-codespace-from-a-template.md
@@ -14,6 +14,12 @@ redirect_from:
- /codespaces/developing-in-codespaces/creating-a-codespace-from-a-template
---
+{% ifversion ghec %}
+
+{% data reusables.codespaces.data-residency-availability %}
+
+{% endif %}
+
## About templates for {% data variables.product.prodname_github_codespaces %}
If you're starting a new project, you can get started with development work quickly by creating a codespace from a template. You'll be able to work on your project in a cloud-based development environment, save your files in the cloud, and publish your work to a new remote repository that you can share with others or clone to your local machine.
diff --git a/content/codespaces/developing-in-a-codespace/developing-in-a-codespace.md b/content/codespaces/developing-in-a-codespace/developing-in-a-codespace.md
index fb5cab65a7af..5255a91f58d6 100644
--- a/content/codespaces/developing-in-a-codespace/developing-in-a-codespace.md
+++ b/content/codespaces/developing-in-a-codespace/developing-in-a-codespace.md
@@ -24,6 +24,12 @@ shortTitle: Develop in a codespace
## About development with {% data variables.product.prodname_github_codespaces %}
+{% ifversion ghec %}
+
+{% data reusables.codespaces.data-residency-availability %}
+
+{% endif %}
+
You can develop code in a codespace using your choice of tool:
* A command shell, via an SSH connection initiated using {% data variables.product.prodname_cli %}
diff --git a/content/codespaces/developing-in-a-codespace/index.md b/content/codespaces/developing-in-a-codespace/index.md
index 6f605d5d72e8..f4b62050b870 100644
--- a/content/codespaces/developing-in-a-codespace/index.md
+++ b/content/codespaces/developing-in-a-codespace/index.md
@@ -29,3 +29,8 @@ redirect_from:
- /codespaces/developing-in-codespaces
---
+{% ifversion ghec %}
+
+{% data reusables.codespaces.data-residency-availability %}
+
+{% endif %}
diff --git a/content/codespaces/developing-in-a-codespace/opening-an-existing-codespace.md b/content/codespaces/developing-in-a-codespace/opening-an-existing-codespace.md
index 32092a93f518..5de714bf1513 100644
--- a/content/codespaces/developing-in-a-codespace/opening-an-existing-codespace.md
+++ b/content/codespaces/developing-in-a-codespace/opening-an-existing-codespace.md
@@ -14,6 +14,12 @@ redirect_from:
- /codespaces/developing-in-codespaces/opening-an-existing-codespace
---
+{% ifversion ghec %}
+
+{% data reusables.codespaces.data-residency-availability %}
+
+{% endif %}
+
{% jetbrains_beta %}
{% data reusables.codespaces.codespaces-jetbrains-beta-note %}
diff --git a/content/codespaces/getting-started/quickstart.md b/content/codespaces/getting-started/quickstart.md
index 044fe0ff778f..27db602493c2 100644
--- a/content/codespaces/getting-started/quickstart.md
+++ b/content/codespaces/getting-started/quickstart.md
@@ -13,6 +13,12 @@ redirect_from:
- /codespaces/codespaces-quickstart
---
+{% ifversion ghec %}
+
+{% data reusables.codespaces.data-residency-availability %}
+
+{% endif %}
+
## Introduction
In this guide, you'll create a codespace from a template repository and explore some of the essential features available to you within the codespace. You'll work in the browser version of {% data variables.product.prodname_vscode %}, which is initially the default editor for {% data variables.product.prodname_github_codespaces %}. After trying out this quickstart you can use {% data variables.product.prodname_codespaces %} in other editors, and you can change the default editor. Links are provided at the end of this guide.
diff --git a/content/codespaces/overview.md b/content/codespaces/overview.md
index 6b0cf6b5a285..a9809f1b8527 100644
--- a/content/codespaces/overview.md
+++ b/content/codespaces/overview.md
@@ -17,6 +17,12 @@ topics:
- Codespaces
---
+{% ifversion ghec %}
+
+{% data reusables.codespaces.data-residency-availability %}
+
+{% endif %}
+
## What is a codespace?
A codespace is a development environment that's hosted in the cloud. You can customize your project for {% data variables.product.prodname_github_codespaces %} by committing configuration files to your repository (often known as Configuration-as-Code), which creates a repeatable codespace configuration for all users of your project. See "[AUTOTITLE](/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers)."
diff --git a/content/codespaces/the-githubdev-web-based-editor.md b/content/codespaces/the-githubdev-web-based-editor.md
index 580d9fea07c4..091a1a862c1c 100644
--- a/content/codespaces/the-githubdev-web-based-editor.md
+++ b/content/codespaces/the-githubdev-web-based-editor.md
@@ -13,11 +13,7 @@ redirect_from:
- /codespaces/developing-in-codespaces/web-based-editor
---
-{% note %}
-
-**Note:** The {% data variables.codespaces.serverless %} editor is currently in {% data variables.release-phases.public_preview %}. You can provide feedback [in our Discussions](https://github.com/community/community/discussions/categories/codespaces).
-
-{% endnote %}
+>[!NOTE] The {% data variables.codespaces.serverless %} editor is currently in {% data variables.release-phases.public_preview %}. You can provide feedback [in our Discussions](https://github.com/community/community/discussions/categories/codespaces).{% ifversion ghec %} Additionally, the {% data variables.codespaces.serverless %} editor is not available on subdomains of {% data variables.enterprise.data_residency_site %}, such as `octocorp.ghe.com`.{% endif %}
## About the {% data variables.codespaces.serverless %} editor
diff --git a/content/codespaces/troubleshooting/troubleshooting-creation-and-deletion-of-codespaces.md b/content/codespaces/troubleshooting/troubleshooting-creation-and-deletion-of-codespaces.md
index e4d5df750aa2..5b2c1e563b7a 100644
--- a/content/codespaces/troubleshooting/troubleshooting-creation-and-deletion-of-codespaces.md
+++ b/content/codespaces/troubleshooting/troubleshooting-creation-and-deletion-of-codespaces.md
@@ -10,6 +10,12 @@ topics:
shortTitle: Creation and deletion
---
+{% ifversion ghec %}
+
+{% data reusables.codespaces.data-residency-availability %}
+
+{% endif %}
+
## Creating codespaces
### No access to create a codespace
diff --git a/content/copilot/about-github-copilot/github-copilot-features.md b/content/copilot/about-github-copilot/github-copilot-features.md
index 92df92fc00b5..7cd4b54b8112 100644
--- a/content/copilot/about-github-copilot/github-copilot-features.md
+++ b/content/copilot/about-github-copilot/github-copilot-features.md
@@ -16,15 +16,15 @@ redirect_from:
### Code completion
-Autocomplete-style suggestions from {% data variables.product.prodname_copilot_short %} in supported IDEs _({% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, JetBrains IDEs, Azure Data Studio, and Vim/Neovim)_.
+Autocomplete-style suggestions from {% data variables.product.prodname_copilot_short %} in supported IDEs _({% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, JetBrains IDEs, Azure Data Studio, Xcode, and Vim/Neovim)_.
### {% data variables.product.prodname_copilot_chat_short %}
-A chat interface that lets you ask coding-related questions. {% data variables.product.prodname_copilot_chat %} is available on the {% data variables.product.github %} website, in {% data variables.product.prodname_mobile %}, and in supported IDEs _({% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and JetBrains IDEs)_. Users can also use skills with {% data variables.product.prodname_copilot_chat_short %}.
+A chat interface that lets you ask coding-related questions. {% data variables.product.prodname_copilot_chat %} is available on the {% data variables.product.github %} website, in {% data variables.product.prodname_mobile %}, in supported IDEs _({% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and JetBrains IDEs)_, and in {% data variables.product.prodname_windows_terminal %}. Users can also use skills with {% data variables.product.prodname_copilot_chat_short %}.
### {% data variables.product.prodname_copilot_cli_short %}
-A chat-like interface in the terminal, where you can ask questions about the command line. You can ask {% data variables.product.prodname_copilot_short %} to provide command suggestions or explanations of commands.
+A chat-like interface in the terminal, where you can ask questions about the command line. You can ask {% data variables.product.prodname_copilot_short %} to provide command suggestions or explanations of commands. Users can also integrate {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_windows_terminal %} Canary.
### {% data variables.product.prodname_copilot_for_prs %}
@@ -34,6 +34,14 @@ AI-generated summaries of the changes that were made in a pull request, which fi
AI-generated text completion to help you write pull request descriptions quickly and accurately.
+### {% data variables.product.prodname_copilot_extensions %} ({% data variables.release-phases.public_preview %})
+
+{% data reusables.copilot.copilot-extensions.copilot-extensions-intro %}
+
+### GitHub Models ({% data variables.release-phases.public_preview %})
+
+Bringing the power of industry leading large and small language models to users directly on {% data variables.product.github %}.
+
### {% data variables.product.prodname_copilot_short %} knowledge bases _({% data variables.product.prodname_copilot_enterprise_short %} only)_
Create and manage collections of documentation to use as context for chatting with {% data variables.product.prodname_copilot_short %}. When you ask a question in {% data variables.product.prodname_copilot_chat_dotcom_short %} or in {% data variables.product.prodname_vscode_shortname %}, you can specify a knowledge base as the context for your question.
@@ -65,4 +73,4 @@ Configure {% data variables.product.prodname_copilot_short %} to ignore certain
## Next steps
* To learn more about the subscription plans available for {% data variables.product.prodname_copilot %}, see "[AUTOTITLE](/copilot/about-github-copilot/subscription-plans-for-github-copilot)."
-* To start using Copilot, see "[AUTOTITLE](/copilot/setting-up-github-copilot)."
+* To start using {% data variables.product.prodname_copilot_short %}, see "[AUTOTITLE](/copilot/setting-up-github-copilot)."
diff --git a/content/copilot/about-github-copilot/what-is-github-copilot.md b/content/copilot/about-github-copilot/what-is-github-copilot.md
index d16123708370..8457aec2d00d 100644
--- a/content/copilot/about-github-copilot/what-is-github-copilot.md
+++ b/content/copilot/about-github-copilot/what-is-github-copilot.md
@@ -43,6 +43,7 @@ redirect_from:
* In your IDE
* In {% data variables.product.prodname_mobile %}, as a chat interface
+* In {% data variables.product.prodname_windows_terminal %} Canary, through the Terminal Chat chat interface
* On the command line, through the {% data variables.product.prodname_cli %}
* On the {% data variables.product.github %} website
diff --git a/content/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot.md b/content/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot.md
new file mode 100644
index 000000000000..e1fbb7b66740
--- /dev/null
+++ b/content/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot.md
@@ -0,0 +1,95 @@
+---
+title: Adding custom instructions for GitHub Copilot
+shortTitle: Custom instructions
+intro: 'You can create a file that automatically adds information to all questions you ask {% data variables.product.prodname_copilot_chat_short %}.'
+versions:
+ feature: copilot
+topics:
+ - Copilot
+---
+
+> [!NOTE]
+> * This feature is currently in {% data variables.release-phases.public_preview %} and is subject to change.
+> * Custom instructions are currently only supported for {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vscode_shortname %} and {% data variables.product.prodname_vs %}.
+
+## About custom instructions for {% data variables.product.prodname_copilot %}
+
+{% data variables.product.prodname_copilot %} can provide chat responses that are tailored to the way your team works, the tools you use, or the specifics of your project, if you provide it with enough context to do so. Instead of repeatedly adding this contextual detail to your chat questions, you can create a file that automatically adds this information for you. The additional information is not displayed in the chat, but is available to {% data variables.product.prodname_copilot_short %} to allow it to generate higher quality responses.
+
+## Prerequisites
+
+* A custom instructions file (see the instructions below).
+* The **Use Instruction Files** ({% data variables.product.prodname_vscode_shortname %}) or **Enable custom instructions** ({% data variables.product.prodname_vs %}) option enabled in your settings. See "[Enabling or disabling custom instructions](#enabling-or-disabling-custom-instructions)" later in this article.
+
+ > [!NOTE] The setting is enabled by default in {% data variables.product.prodname_vscode_shortname %} and disabled by default in {% data variables.product.prodname_vs %}.
+
+## Creating a custom instructions file
+
+1. In the root of your repository, create a file named `.github/copilot-instructions.md`.
+
+ Create the `.github` directory if it does not already exist.
+
+1. Add natural language instructions to the file, in Markdown format.
+
+ Whitespace between instructions is ignored, so the instructions can be written as a single paragraph, each on a new line, or separated by blank lines for legibility.
+
+## Sample instructions
+
+This example of a `.github/copilot-instructions.md` file contains three instructions that will be added to all chat questions.
+
+```markdown
+We use Bazel for managing our Java dependencies, not Maven, so when talking about Java packages, always give me instructions and code samples that use Bazel.
+
+We always write JavaScript with double quotes and tabs for indentation, so when your reponses include JavaScript code, please follow those conventions.
+
+Our team uses Jira for tracking items of work.
+```
+
+## Writing effective custom instructions
+
+The instructions you add to the `.github/copilot-instructions.md` file should be short, self-contained statements that add context or relevant information to supplement users' chat questions.
+
+The following types of instructions are unlikely to work as desired and may cause problems with other areas of {% data variables.product.prodname_copilot_short %}:
+
+* Requests to refer to external resources when formulating a response
+* Instructions to answer in a particular style
+* Requests to always respond with a certain level of detail
+
+The following instructions are therefore unlikely to have the intended result:
+
+```markdown
+Always conform to the coding styles defined in styleguide.md in repo my-org/my-repo when generating code.
+
+Use @terminal when answering questions about Git.
+
+Answer all questions in the style of a friendly colleague, using informal language.
+
+Answer all questions in less than 1000 characters, and words of no more than 12 characters.
+```
+
+## Custom instructions in use
+
+The instructions in the `.github/copilot-instructions.md` file are available for use by {% data variables.product.prodname_copilot_chat_short %} as soon as you save the file. The complete set of instructions will be automatically attached to requests that you submit in either the {% data variables.product.prodname_copilot_chat_short %} view, or in inline chat, in {% data variables.product.prodname_vscode_shortname %} and {% data variables.product.prodname_vs %}.
+
+Custom instructions are not visible in the Chat view or inline chat, but you can verify that they are being used by {% data variables.product.prodname_copilot_short %} by looking at the References list of a response. If custom instructions were added to the prompt that was sent to the model, the `.github/copilot-instructions.md` file is listed as a reference. You can click the reference to open the file.
+
+![Screenshot of the {% data variables.product.prodname_copilot_chat_short %} view in {% data variables.product.prodname_vscode_shortname %} with a reference for the copilot-instructions.md file.](/assets/images/help/copilot/custom-instructions-vscode.png)
+
+## Enabling or disabling custom instructions
+
+You can choose whether or not to have custom instructions added to your chat questions. To do this, select or clear the option in the settings for the {% data variables.product.prodname_copilot_short %} extension.
+
+### In {% data variables.product.prodname_vscode_shortname %}
+
+1. Open the Setting editor by using the keyboard shortcut Command+, (Mac) / Ctrl+, (Linux/Windows).
+1. Type `instruction file` in the search box.
+1. Select or clear the checkbox under **Code Generation: Use Instruction Files**.
+
+### In {% data variables.product.prodname_vs %}
+
+1. In the {% data variables.product.prodname_vs %} menu bar, under **Tools**, click **Options**.
+
+ ![Screenshot of the {% data variables.product.prodname_vs %} menu bar. The "Tools" menu is expanded, and the "Options" item is highlighted with an orange outline.](/assets/images/help/copilot/vs-toolbar-options.png)
+
+1. In the "Options" dialog, type `custom instructions` in the search box.
+1. Select or clear the checkbox for **(Preview) Enable custom instructions to be loaded from .github/copilot-instructions.md files and added to requests**.
diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/creating-a-custom-model-for-github-copilot.md b/content/copilot/customizing-copilot/creating-a-custom-model-for-github-copilot.md
similarity index 99%
rename from content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/creating-a-custom-model-for-github-copilot.md
rename to content/copilot/customizing-copilot/creating-a-custom-model-for-github-copilot.md
index b6c835205cd9..26b1bafd4e4a 100644
--- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/creating-a-custom-model-for-github-copilot.md
+++ b/content/copilot/customizing-copilot/creating-a-custom-model-for-github-copilot.md
@@ -9,6 +9,7 @@ versions:
topics:
- Copilot
redirect_from:
+ - /copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/creating-a-custom-model-for-github-copilot
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/enhancing-copilot-for-your-organization/creating-a-custom-model-for-github-copilot
---
diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/extending-the-capabilities-of-github-copilot-in-your-organization.md b/content/copilot/customizing-copilot/extending-the-capabilities-of-github-copilot-in-your-organization.md
similarity index 96%
rename from content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/extending-the-capabilities-of-github-copilot-in-your-organization.md
rename to content/copilot/customizing-copilot/extending-the-capabilities-of-github-copilot-in-your-organization.md
index e7dec300f0e9..501f5e061f0f 100644
--- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/extending-the-capabilities-of-github-copilot-in-your-organization.md
+++ b/content/copilot/customizing-copilot/extending-the-capabilities-of-github-copilot-in-your-organization.md
@@ -9,6 +9,7 @@ topics:
- Copilot
type: how_to
redirect_from:
+ - /copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/extending-the-capabilities-of-github-copilot-in-your-organization
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/enhancing-copilot-for-your-organization/extending-the-capabilities-of-github-copilot-in-your-organization
- /copilot/github-copilot-chat/github-copilot-extensions/installing-github-copilot-extensions-for-your-organization
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/installing-github-copilot-extensions-for-your-organization
diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/index.md b/content/copilot/customizing-copilot/index.md
similarity index 58%
rename from content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/index.md
rename to content/copilot/customizing-copilot/index.md
index 1f8ea0304815..068a42741932 100644
--- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/index.md
+++ b/content/copilot/customizing-copilot/index.md
@@ -1,7 +1,7 @@
---
-title: Customizing Copilot for your organization
+title: Customizing Copilot
shortTitle: Customize Copilot
-intro: 'Organization owners can customize {% data variables.product.prodname_copilot %} in their organization.'
+intro: 'You can customize {% data variables.product.prodname_copilot %} to make it fit your specific needs.'
versions:
feature: copilot
topics:
@@ -9,8 +9,10 @@ topics:
children:
- /extending-the-capabilities-of-github-copilot-in-your-organization
- /indexing-repositories-for-copilot-chat
+ - /adding-custom-instructions-for-github-copilot
- /managing-copilot-knowledge-bases
- /creating-a-custom-model-for-github-copilot
redirect_from:
+ - /copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/enhancing-copilot-for-your-organization
---
diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/indexing-repositories-for-copilot-chat.md b/content/copilot/customizing-copilot/indexing-repositories-for-copilot-chat.md
similarity index 97%
rename from content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/indexing-repositories-for-copilot-chat.md
rename to content/copilot/customizing-copilot/indexing-repositories-for-copilot-chat.md
index e8b568030436..8189929e5d11 100644
--- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/indexing-repositories-for-copilot-chat.md
+++ b/content/copilot/customizing-copilot/indexing-repositories-for-copilot-chat.md
@@ -8,6 +8,7 @@ versions:
topics:
- Copilot
redirect_from:
+ - /copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/indexing-repositories-for-copilot-chat
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/enhancing-copilot-for-your-organization/indexing-repositories-for-copilot-chat
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/indexing-repositories-for-copilot-chat
---
diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/managing-copilot-knowledge-bases.md b/content/copilot/customizing-copilot/managing-copilot-knowledge-bases.md
similarity index 97%
rename from content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/managing-copilot-knowledge-bases.md
rename to content/copilot/customizing-copilot/managing-copilot-knowledge-bases.md
index dcf6097d91df..7f2912829c0d 100644
--- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/managing-copilot-knowledge-bases.md
+++ b/content/copilot/customizing-copilot/managing-copilot-knowledge-bases.md
@@ -7,6 +7,7 @@ versions:
topics:
- Copilot
redirect_from:
+ - /copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/managing-copilot-knowledge-bases
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/enhancing-copilot-for-your-organization/managing-copilot-knowledge-bases
- /copilot/github-copilot-enterprise/copilot-docset-management/creating-private-docsets
- /copilot/github-copilot-enterprise/copilot-docset-management
diff --git a/content/copilot/index.md b/content/copilot/index.md
index bec90bd7255b..1e528d0baaf1 100644
--- a/content/copilot/index.md
+++ b/content/copilot/index.md
@@ -28,6 +28,7 @@ children:
- /setting-up-github-copilot
- /using-github-copilot
- /managing-copilot
+ - /customizing-copilot
- /building-copilot-extensions
- /troubleshooting-github-copilot
- /responsible-use-of-github-copilot-features
diff --git a/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md b/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md
index eef04e7a09ab..310edd003a6e 100644
--- a/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md
+++ b/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md
@@ -2,7 +2,6 @@
title: Configuring GitHub Copilot in your environment
shortTitle: Configure in your environment
intro: 'You can enable, configure, or disable {% data variables.product.prodname_copilot %} in a supported IDE.'
-product: '{% data reusables.gated-features.copilot %}'
redirect_from:
- /copilot/configuring-github-copilot/configuring-github-copilot-in-visual-studio
- /copilot/configuring-github-copilot/configuring-github-copilot-in-visual-studio-code
@@ -398,3 +397,57 @@ You can rebind the keyboard shortcuts in Vim/Neovim when using {% data variables
* [{% data variables.product.prodname_copilot %} FAQ](https://github.com/features/copilot/#faq)
{% endvimneovim %}
+
+{% xcode %}
+
+{% data reusables.copilot.xcode-beta-note %}
+
+## About {% data variables.product.prodname_copilot %} for Xcode
+
+If you use Xcode, {% data variables.product.prodname_copilot %} can autocomplete code as you type. After installation, you can enable or disable {% data variables.product.prodname_copilot %}, and you can configure advanced settings within Xcode or on {% data variables.product.github %}.
+
+## Prerequisites
+
+To configure {% data variables.product.prodname_copilot %} for Xcode, you must install the {% data variables.product.prodname_copilot %} extension. See "[AUTOTITLE](/copilot/managing-copilot/configure-personal-settings/installing-the-github-copilot-extension-in-your-environment?tool=xcode)."
+
+## Using or rebinding keyboard shortcuts for {% data variables.product.prodname_copilot %}
+
+You can use the default keyboard shortcuts for inline suggestions in Xcode when using {% data variables.product.prodname_copilot %}. Alternatively, you can rebind the shortcuts to your preferred keyboard shortcuts for each specific command.
+
+### Default keyboard shortcuts
+
+| Action | Shortcut |
+|:---|:---|
+|Accept the first line of a suggestion|Tab|
+|View full suggestion|Hold Option|
+|Accept full suggestion|Option+Tab|
+
+### Rebinding keyboard shortcuts
+
+If you don't want to use the default keyboard shortcuts for {% data variables.product.prodname_copilot %}, you can rebind the shortcuts in the Key Bindings editor and use your preferred keyboard shortcuts.
+
+If you want to use something besides Tab to accept the first line of a suggestion, you need to disable the "Accept suggestions with Tab" option in the advanced settings in the {% data variables.product.prodname_copilot %} for Xcode application. Additionally, we currently only support the Option key for the "View full suggestion" action.
+
+1. In the Xcode menu bar, click **Settings**.
+1. Click **Key Bindings** and search for "{% data variables.product.prodname_copilot_short %}" to find the commands you want to rebind.
+
+## Enabling or disabling {% data variables.product.prodname_copilot %}
+
+You can enable or disable the {% data variables.product.prodname_copilot %} extension from within the application.
+
+1. Open the {% data variables.product.prodname_copilot %} extension application.
+1. At the top of the application window, click **Advanced**.
+1. In the "Suggestion Settings" section, use the "Request suggestions while typing" toggle to enable or disable the extension.
+
+## Automatically updating {% data variables.product.prodname_copilot %} for Xcode
+
+You can configure the {% data variables.product.prodname_copilot %} extension to automatically check for updates.
+
+1. Open the {% data variables.product.prodname_copilot %} extension application.
+1. Select **Automatically check for updates**.
+
+After updating the extension, Xcode must be restarted for the changes to take effect.
+
+{% data reusables.copilot.dotcom-settings %}
+
+{% endxcode %}
diff --git a/content/copilot/managing-copilot/configure-personal-settings/installing-github-copilot-in-the-cli.md b/content/copilot/managing-copilot/configure-personal-settings/installing-github-copilot-in-the-cli.md
index 079083131cda..b46472e4d055 100644
--- a/content/copilot/managing-copilot/configure-personal-settings/installing-github-copilot-in-the-cli.md
+++ b/content/copilot/managing-copilot/configure-personal-settings/installing-github-copilot-in-the-cli.md
@@ -15,7 +15,7 @@ redirect_from:
## Prerequisites
-* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)".
+* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)".
* **{% data variables.product.prodname_cli %} installed.** {% data reusables.cli.cli-installation %}
If you have access to {% data variables.product.prodname_copilot %} via your organization or enterprise, you cannot use {% data variables.product.prodname_copilot_cli_short %} if your organization owner or enterprise administrator has disabled {% data variables.product.prodname_copilot_cli_short %}. See "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/managing-policies-for-copilot-in-your-organization)."
diff --git a/content/copilot/managing-copilot/configure-personal-settings/installing-the-github-copilot-extension-in-your-environment.md b/content/copilot/managing-copilot/configure-personal-settings/installing-the-github-copilot-extension-in-your-environment.md
index a2079b747f8e..781a2991f774 100644
--- a/content/copilot/managing-copilot/configure-personal-settings/installing-the-github-copilot-extension-in-your-environment.md
+++ b/content/copilot/managing-copilot/configure-personal-settings/installing-the-github-copilot-extension-in-your-environment.md
@@ -21,7 +21,7 @@ To see instructions for other popular coding environments, use the tool switcher
## Installing the {% data variables.product.prodname_copilot %} extension in Azure Data Studio
-1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
1. Make sure you have a compatible version of Azure Data Studio. To use {% data variables.product.prodname_copilot %} in Azure Data Studio, you must have Azure Data Studio version 1.44.0 or later installed. See the [Azure Data Studio download page](https://docs.microsoft.com/sql/azure-data-studio/download-azure-data-studio) in the Azure Data Studio documentation.
@@ -56,7 +56,7 @@ For information about version compatibility of the {% data variables.product.pro
The following procedure will guide you through installation of the {% data variables.product.prodname_copilot %} plugin in IntelliJ IDEA. Steps to install the plugin in another supported IDE may differ.
-1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
1. Make sure you have a JetBrains IDE that is compatible with {% data variables.product.prodname_copilot %}. {% data variables.product.prodname_copilot %} is compatible with the following IDEs:
@@ -94,7 +94,7 @@ To see instructions for other popular coding environments, use the tool switcher
{% data variables.product.prodname_dotcom %} recommends that you install the {% data variables.product.prodname_copilot %} plugin with Vim/Neovim's built-in plugin manager. Alternatively, you can use a plugin manager of your choice to install `github/copilot.vim`. For more information, see the [copilot.vim repository](https://github.com/github/copilot.vim).
-1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
1. Make sure you have a compatible version of Vim/Neovim installed. To use {% data variables.product.prodname_copilot %} in Vim/Neovim you must have Vim version 9.0.0185 / Neovim version 0.6 or above and Node.js version 18 or above. See the [Vim](https://vimhelp.org/) / [Neovim documentation](https://neovim.io/doc/) and the [Node.js website](https://nodejs.org/en/).
@@ -142,15 +142,15 @@ To see instructions for other popular coding environments, use the tool switcher
### Version compatibility
-Starting from {% data variables.product.prodname_vs %} 2022 Version 17.10, the unified {% data variables.product.prodname_copilot_short %} and {% data variables.product.prodname_copilot_chat %} extension is included by default as a built-in component. For more information, see "[Install GitHub Copilot in Visual Studio](https://learn.microsoft.com/en-us/visualstudio/ide/visual-studio-github-copilot-install-and-states)" in the Microsoft documentation.
+Starting from {% data variables.product.prodname_vs %} 2022 Version 17.10, the unified {% data variables.product.prodname_copilot_short %} and {% data variables.product.prodname_copilot_chat %} extension is included by default as a built-in component. For more information, see "[Install {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vs %}](https://learn.microsoft.com/en-us/visualstudio/ide/visual-studio-github-copilot-install-and-states)" in the Microsoft documentation.
## Installing the {% data variables.product.prodname_copilot %} extension in {% data variables.product.prodname_vs %}
-1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
1. Make sure you have a compatible version of {% data variables.product.prodname_vs %} installed. {% data reusables.copilot.visual-studio-version %}
-1. Install the {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vs %} See "[Install GitHub Copilot in Visual Studio](https://learn.microsoft.com/en-us/visualstudio/ide/visual-studio-github-copilot-install-and-states)" in the Microsoft documentation.
+1. Install the {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vs %} See "[Install {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vs %}](https://learn.microsoft.com/en-us/visualstudio/ide/visual-studio-github-copilot-install-and-states)" in the Microsoft documentation.
1. After installing the {% data variables.product.prodname_copilot %} extension, to enable {% data variables.product.prodname_copilot %}, ensure you have added your {% data variables.product.prodname_dotcom %} account to {% data variables.product.prodname_vs %}. For more information, see [Add your {% data variables.product.prodname_dotcom %} accounts to your {% data variables.product.prodname_vs %} keychain](https://learn.microsoft.com/en-us/visualstudio/ide/work-with-github-accounts) in the Microsoft documentation.
@@ -170,7 +170,7 @@ To see instructions for other popular coding environments, use the tool switcher
## Installing the {% data variables.product.prodname_copilot %} extension in {% data variables.product.prodname_vscode %}
-1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
1. Install {% data variables.product.prodname_vscode %}. See the [{% data variables.product.prodname_vscode %} download page](https://code.visualstudio.com/Download).
@@ -178,6 +178,43 @@ To see instructions for other popular coding environments, use the tool switcher
{% endvscode %}
+{% xcode %}
+
+{% data reusables.copilot.xcode-beta-note %}
+
+## About the {% data variables.product.prodname_copilot %} extension for Xcode
+
+Installing the {% data variables.product.prodname_copilot %} extension for Xcode allows you to receive coding suggestions from {% data variables.product.prodname_copilot_short %} as you type.
+
+To see instructions for other popular coding environments, use the tool switcher at the top of the page.
+
+## Installing the {% data variables.product.prodname_copilot %} extension for Xcode
+
+1. Make sure you have access to {% data variables.product.prodname_copilot %}. For information, see "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+1. Make sure you have a compatible version of Xcode installed. To use {% data variables.product.prodname_copilot %} for Xcode you must have Xcode version 8.0 or above and macOS Monterey (12.0) or above. See [Xcode](https://developer.apple.com/xcode/) on the Apple Developer site.
+1. Download the latest version of the {% data variables.product.prodname_copilot %} for Xcode extension from the [`github/CopilotForXcode` repository](https://github.com/github/CopilotForXcode/releases/latest/download/GitHubCopilotForXcode.dmg) and install it. A background item will be added for the application to be able to start itself when Xcode starts.
+
+## Granting required permissions
+
+Two permissions are required to be able to use the extension: "Accessibility" and "Xcode Source Editor Extension". You will be prompted to enable the "Accessibility" permission when you first start the extension.
+
+The "Xcode Source Editor Extension" permission needs to be enabled manually.
+
+1. Open the {% data variables.product.prodname_copilot %} extension application.
+1. Click **Extension Permission** and click **Xcode Source Editor**.
+1. Enable {% data variables.product.prodname_copilot %} and click **Done**.
+
+After granting the required permissions, restart Xcode. You will see a new item in the "Editor" menu called "{% data variables.product.prodname_copilot %}".
+
+## Signing in to {% data variables.product.prodname_copilot %}
+
+Before you can use the {% data variables.product.prodname_copilot %} extension for Xcode, you need to authorize the extension to access your {% data variables.product.github %} account.
+
+1. Open the {% data variables.product.prodname_copilot %} extension application.
+1. Click **Login to {% data variables.product.github %}** and follow the prompts to authorize the extension.
+
+{% endxcode %}
+
## Next steps
* **Get started with {% data variables.product.prodname_copilot_short %}** - Learn how to use {% data variables.product.prodname_copilot_short %} in your preferred coding environment. See "[AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-code-suggestions-in-your-editor)."
diff --git a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber.md b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber.md
index 4c5b5bba16bc..4cb9f3fa62ed 100644
--- a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber.md
+++ b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber.md
@@ -26,10 +26,8 @@ Your personal settings for {% data variables.product.prodname_copilot %} include
If you choose to allow suggestions matching public code, and you accept a suggestion for which one or more matches were found, you can click through from an entry in the {% data variables.product.prodname_copilot %} log to view a list of references on {% data variables.product.prodname_dotcom %}. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions)."
-{% data reusables.user-settings.access_settings %}
{% data reusables.user-settings.copilot-settings %}
-1. Under **Suggestions matching public code**, select the dropdown menu, then click **Allow** to allow suggestions matching public code, or **Block** to block suggestions matching public code.
-{% data reusables.copilot.save-settings %}
+1. To the right of **Suggestions matching public code**, select the dropdown menu, then click **Allow** to allow suggestions matching public code, or **Block** to block suggestions matching public code.
{% ifversion fpt %}
@@ -37,7 +35,21 @@ If you choose to allow suggestions matching public code, and you accept a sugges
You can choose whether your prompts and {% data variables.product.prodname_copilot_short %}'s suggestions are collected and retained by {% data variables.product.prodname_dotcom %}, and further processed and shared with Microsoft. For more information about data that {% data variables.product.prodname_copilot %} may collect depending on your settings, see "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot)" and the [{% data variables.product.prodname_copilot %} privacy FAQ](https://github.com/features/copilot/#faq-privacy-copilot-for-business).
-{% data reusables.user-settings.access_settings %}
{% data reusables.user-settings.copilot-settings %}
1. To allow or prevent {% data variables.product.prodname_dotcom %} using your data, select or deselect **Allow {% data variables.product.prodname_dotcom %} to use my code snippets from the code editor for product improvements**.
-{% data reusables.copilot.save-settings %}{% endif %}
+
+## Enabling or disabling {% data variables.copilot.copilot_claude_sonnet %}
+
+You can choose whether to allow use of Anthropic's {% data variables.copilot.copilot_claude_sonnet %} model as an alternative to {% data variables.product.prodname_copilot_short %}'s default model. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/using-claude-sonnet-in-github-copilot)."
+
+{% data reusables.user-settings.copilot-settings %}
+1. To the right of **Anthropic {% data variables.copilot.copilot_claude_sonnet %} in {% data variables.product.prodname_copilot_short %}**, select the dropdown menu, then click **Enabled** or **Disabled**.
+
+## Enabling or disabling web search for {% data variables.product.prodname_copilot_chat %}
+
+You can enable web search for {% data variables.product.prodname_copilot_chat %}. This setting is disabled by default. If you enable this setting, {% data variables.product.prodname_copilot_chat_short %} will use Bing to search the internet for information related to a question. Bing search is particularly helpful when discussing new technologies or highly specific subjects.
+
+{% data reusables.user-settings.copilot-settings %}
+1. To the right of **{% data variables.product.prodname_copilot_short %} access to Bing**, select the dropdown menu, and then click **Enabled** or **Disabled**.
+
+{% endif %}
diff --git a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md
index e22f43dc3b46..ed3510926ca6 100644
--- a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md
+++ b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md
@@ -33,6 +33,8 @@ You can configure any of the following policies for your enterprise:
* [{% data variables.product.prodname_copilot_extensions %}](#github-copilot-extensions)
* [Suggestions matching public code](#suggestions-matching-public-code)
* [Give {% data variables.product.prodname_copilot_short %} access to Bing](#give-copilot-access-to-bing)
+* [{% data variables.product.prodname_copilot_short %} access to {% data variables.copilot.copilot_claude_sonnet %}](#copilot-access-to-claude-35-sonnet)
+* [{% data variables.product.prodname_copilot_short %} access to the o1 family of models](#copilot-access-to-the-o1-family-of-models)
### {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_dotcom_the_website %}
@@ -73,6 +75,19 @@ You can chat with {% data variables.product.prodname_copilot %} in your IDE to g
{% data variables.product.prodname_copilot_chat %} can use Bing to provide enhanced responses by searching the internet for information related to a question. Bing search is particularly helpful when discussing new technologies or highly specific subjects.
+### {% data variables.product.prodname_copilot_short %} access to {% data variables.copilot.copilot_claude_sonnet %}
+
+If you grant access to **Anthropic {% data variables.copilot.copilot_claude_sonnet %} in {% data variables.product.prodname_copilot_short %}**, members of your enterprise can choose to use this model rather than the default `GPT 4o` model. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/using-claude-sonnet-in-github-copilot)."
+
+### {% data variables.product.prodname_copilot_short %} access to the o1 family of models
+
+{% data reusables.models.o1-models-preview-note %}
+
+By default, {% data variables.product.prodname_copilot_chat_short %} uses the `GPT 4o` model. If you grant access to the o1 family of models, members of your enterprise can select the specific model {% data variables.product.prodname_copilot_chat_short %} will use in a conversation. The o1 family of models includes two models:
+
+* `o1-preview`: This model is focused on advanced reasoning and solving complex problems, in particular in math and science. It responds more slowly than the `gpt-4o` model. Each member of your enterprise can make 10 requests to this model per day.
+* `o1-mini`: This is the faster version of the `o1-preview` model, balancing the use of complex reasoning with the need for faster responses. It is best suited for code generation and small context operations. Each member of your enterprise can make 50 requests to this model per day.
+
## Configuring policies for {% data variables.product.prodname_copilot %}
{% data reusables.enterprise-accounts.access-enterprise %}
diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/index.md b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/index.md
index 8a5da15b3b71..f0db56c9f491 100644
--- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/index.md
+++ b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/index.md
@@ -14,6 +14,5 @@ children:
- /setting-policies-for-copilot-in-your-organization
- /configuring-your-proxy-server-or-firewall-for-copilot
- /managing-access-to-github-copilot-in-your-organization
- - /customizing-copilot-for-your-organization
- /reviewing-activity-related-to-github-copilot-in-your-organization
---
diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md
index bf540b8b93ea..b362cd4fbe5a 100644
--- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md
+++ b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md
@@ -51,7 +51,7 @@ To align the `last_activity_at` data point with _actual usage_, the system retur
{%- ifversion ghec %}
* Creating or updating a knowledge base
* Creating a pull request summary
-* Interacting with Copilot Chat on GitHub.com
+* Interacting with Copilot Chat in GitHub
{%- endif %}
* Interacting with Copilot on a mobile device
* Interacting with Copilot Chat for CLI
diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md
index a2c1768a9323..ec44bce8585c 100644
--- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md
+++ b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md
@@ -26,8 +26,9 @@ Organization owners can set policies to govern how {% data variables.product.pro
* {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_dotcom_the_website %}
* {% data variables.product.prodname_copilot_chat_short %} in the IDE
* {% data variables.product.prodname_copilot_mobile_short %}
-* {% data variables.product.prodname_copilot_cli_short %}
+* {% data variables.product.prodname_copilot_cli_short %} and {% data variables.product.prodname_windows_terminal %}
* Suggestions matching public code
+* Access to alternative models for {% data variables.product.prodname_copilot_short %}
The policy settings selected by an organization owner determine the behavior of {% data variables.product.prodname_copilot %} for all organization members that have been granted access to {% data variables.product.prodname_copilot_short %} through the organization.
diff --git a/content/copilot/quickstart.md b/content/copilot/quickstart.md
index e1764f1865d5..96184e936849 100644
--- a/content/copilot/quickstart.md
+++ b/content/copilot/quickstart.md
@@ -1,6 +1,6 @@
---
title: Quickstart for GitHub Copilot
-intro: 'Quickly learn how to use {% data variables.product.prodname_copilot %} in your editor{% ifversion ghec %} or on {% data variables.product.github %}{% endif %}.'
+intro: 'Quickly learn how to use {% data variables.product.prodname_copilot %}.'
allowTitleToDifferFromFilename: true
versions:
feature: copilot
@@ -13,13 +13,22 @@ topics:
{% webui %}
-You can use {% data variables.product.prodname_copilot_chat_dotcom %} to get answers to coding-related questions, such as how best to code something, how to fix a bug, or how someone else's code works. For full details of what {% data variables.product.prodname_copilot_short %} can do, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot)."
+You can use {% data variables.product.prodname_copilot_short %} to get answers to coding-related questions, such as how best to code something, how to fix a bug, or how someone else's code works. For full details of what {% data variables.product.prodname_copilot_short %} can do, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot)."
-Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on whether you are in an editor or on the {% data variables.product.github %} website. This version of the quickstart is for {% data variables.product.github %}. Click the tabs above for instructions on using {% data variables.product.prodname_copilot_short %} in an editor.
+If you have access to {% data variables.product.prodname_copilot_workspace %}, {% data variables.product.prodname_copilot_short %} can also help you when you are editing files in a pull request on the {% data variables.product.github %} website by offering you code completion suggestions. For more information about {% data variables.product.prodname_copilot_workspace %}, see "[AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request)."
-## Prerequisites
+Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on where you are using it. This version of the quickstart is for {% data variables.product.github %}. Click the tabs above for instructions on using {% data variables.product.prodname_copilot_short %} in other environments.
+
+{% ifversion fpt %}
+{% data reusables.copilot.quickstart-signup %}
+{% endif %}
-{% data reusables.copilot.chat-dotcom-prerequisites %}
+{% ifversion ghec %}
+
+## Prerequisite
+
+To use {% data variables.product.prodname_copilot %} on the {% data variables.product.github %} website, you must have an active {% data variables.product.prodname_copilot %} subscription. {% data reusables.copilot.subscription-prerequisite %}
+{% endif %}
## Asking your first question
@@ -62,11 +71,61 @@ For more information, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat
{% endwebui %}
+{% windowsterminal %}
+
+{% data reusables.copilot.quickstart-intro %}
+
+Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on where you are using it. This version of the quickstart is for {% data variables.product.prodname_windows_terminal %}. Click the tabs above for instructions on using {% data variables.product.prodname_copilot_short %} in other environments.
+
+{% ifversion fpt %}
+{% data reusables.copilot.quickstart-signup %}
+{% endif %}
+
+## Prerequisites
+
+{% ifversion ghec %}
+* **Subscription to {% data variables.product.prodname_copilot_short %}**. To use {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_windows_terminal %}, you must have an active {% data variables.product.prodname_copilot %} subscription. {% data reusables.copilot.subscription-prerequisite %}
+{% endif %}
+* **{% data variables.product.prodname_windows_terminal %} Canary**. Terminal Chat is only available in [{% data variables.product.prodname_windows_terminal %} Canary](https://github.com/microsoft/terminal?tab=readme-ov-file#installing-windows-terminal-canary).
+
+## Use {% data variables.product.prodname_copilot_short %} in Terminal Chat
+
+After you've installed {% data variables.product.prodname_windows_terminal %} Canary, you can use {% data variables.product.prodname_copilot_short %} in [Terminal Chat](https://learn.microsoft.com/windows/terminal/terminal-chat) to ask command line-related questions.
+
+1. Open **Settings** from the dropdown menu.
+
+ ![Screenshot of the dropdown menu in the {% data variables.product.prodname_windows_terminal %} with the Settings item highlighted.](/assets/images/help/copilot/windows-terminal-dropdown.png)
+
+1. Go to the **Terminal Chat (Experimental)** setting.
+
+ ![Screenshot of the Settings menu in the {% data variables.product.prodname_windows_terminal %} with the Terminal Chat (Experimental) item highlighted.](/assets/images/help/copilot/windows-terminal-settings.png)
+
+1. Under **Service Providers**, select **GitHub Copilot** and **Authenticate via GitHub** to sign in.
+
+## Chat with {% data variables.product.prodname_copilot %}
+
+> [!NOTE] {% data reusables.copilot.windows-terminal-access-denied %}
+
+1. Open **Terminal Chat (Experimental)** in the dropdown menu.
+
+1. In the Terminal Chat chat window, type `how do i list all markdown files in my directory` then press Enter.
+
+ {% data variables.product.prodname_copilot_short %}'s answer is displayed below your question.
+
+1. Click on an answer to insert it to the command line.
+
+## Next steps
+
+{% data reusables.copilot.quickstart-nextsteps1 %}
+{% data reusables.copilot.quickstart-nextsteps2 %}
+
+{% endwindowsterminal %}
+
{% vscode %}
{% data reusables.copilot.quickstart-intro %}
-Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on the editor you use. This version of the quickstart is for {% data variables.product.prodname_vscode %}. Click the tabs above to see instructions for other editors{% ifversion ghec %} or for the {% data variables.product.github %} website{% endif %}.
+Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on where you are using it. This version of the quickstart is for {% data variables.product.prodname_vscode %}. Click the tabs above for instructions on using {% data variables.product.prodname_copilot_short %} in other environments.
{% ifversion fpt %}
{% data reusables.copilot.quickstart-signup %}
@@ -75,7 +134,7 @@ Instructions for using {% data variables.product.prodname_copilot_short %} diffe
## Prerequisites
{% ifversion ghec %}
-* **{% data variables.product.prodname_copilot_short %} subscription** - To use {% data variables.product.prodname_copilot %} you must have been assigned a seat as part of a {% data variables.product.prodname_copilot_for_business %} or {% data variables.product.prodname_copilot_enterprise %} subscription.
+* **{% data variables.product.prodname_copilot_short %} subscription** - To use {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vscode_shortname %}, you must have an active {% data variables.product.prodname_copilot %} subscription. {% data reusables.copilot.subscription-prerequisite %}
{% endif %}
{% data reusables.copilot.vscode-prerequisites %}
@@ -123,7 +182,7 @@ The following example uses JavaScript, however other languages will work similar
{% data reusables.copilot.quickstart-intro %}
-Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on the editor you use. This version of the quickstart is for {% data variables.product.prodname_vs %}. Click the tabs above to see instructions for other editors{% ifversion ghec %} or for the {% data variables.product.github %} website{% endif %}.
+Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on where you are using it. This version of the quickstart is for {% data variables.product.prodname_vs %}. Click the tabs above for instructions on using {% data variables.product.prodname_copilot_short %} in other environments.
{% ifversion fpt %}
{% data reusables.copilot.quickstart-signup %}
@@ -132,7 +191,7 @@ Instructions for using {% data variables.product.prodname_copilot_short %} diffe
## Prerequisites
{% ifversion ghec %}
-* **Subscription to {% data variables.product.prodname_copilot_short %}**. To use {% data variables.product.prodname_copilot %} in Visual Studio, you must have an active {% data variables.product.prodname_copilot %} subscription. {% data reusables.copilot.subscription-prerequisite %}
+* **Subscription to {% data variables.product.prodname_copilot_short %}**. To use {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vs %}, you must have an active {% data variables.product.prodname_copilot %} subscription. {% data reusables.copilot.subscription-prerequisite %}
{% endif %}
{% data reusables.copilot.visual-studio-prerequisites %}
@@ -173,7 +232,7 @@ The following example uses JavaScript, however other languages will work similar
{% data reusables.copilot.quickstart-intro %}
-Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on the editor you use. This version of the quickstart is for JetBrains IDEs. Click the tabs above to see instructions for other editors{% ifversion ghec %} or for the {% data variables.product.github %} website{% endif %}.
+Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on where you are using it. This version of the quickstart is for JetBrains IDEs. Click the tabs above for instructions on using {% data variables.product.prodname_copilot_short %} in other environments.
{% ifversion fpt %}
{% data reusables.copilot.quickstart-signup %}
@@ -182,7 +241,7 @@ Instructions for using {% data variables.product.prodname_copilot_short %} diffe
## Prerequisites
{% ifversion ghec %}
-* **Subscription to {% data variables.product.prodname_copilot_short %}**. To use {% data variables.product.prodname_copilot %} in Visual Studio, you must have an active {% data variables.product.prodname_copilot %} subscription. {% data reusables.copilot.subscription-prerequisite %}
+* **Subscription to {% data variables.product.prodname_copilot_short %}**. To use {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vs %}, you must have an active {% data variables.product.prodname_copilot %} subscription. {% data reusables.copilot.subscription-prerequisite %}
{% endif %}
* **A compatible JetBrains IDE**. {% data variables.product.prodname_copilot_short %} is supported in a large number of JetBrains IDEs. For a full list, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-ides/using-github-copilot-chat-in-your-ide?tool=jetbrains)."
{% data reusables.copilot.jetbrains-plugin-prerequisites %}
diff --git a/content/copilot/responsible-use-of-github-copilot-features/index.md b/content/copilot/responsible-use-of-github-copilot-features/index.md
index 3b10423b028e..f2ba79a6fd0e 100644
--- a/content/copilot/responsible-use-of-github-copilot-features/index.md
+++ b/content/copilot/responsible-use-of-github-copilot-features/index.md
@@ -1,16 +1,19 @@
---
title: Responsible use of GitHub Copilot features
shortTitle: Responsible use
-intro: 'Learn how to use {% data variables.product.prodname_copilot %} features responsibly by understanding their purposes, capabilities, and limitations.'
+intro: "Learn how to use {% data variables.product.prodname_copilot %} features responsibly by understanding their purposes, capabilities, and limitations."
versions:
feature: copilot
topics:
- Copilot
children:
- /responsible-use-of-github-copilot-chat-in-your-ide
- - /responsible-use-of-github-copilot-chat-in-githubcom
+ - /responsible-use-of-github-copilot-chat-in-github
- /responsible-use-of-github-copilot-chat-in-github-mobile
- /responsible-use-of-github-copilot-in-the-cli
+ - /responsible-use-of-github-copilot-in-windows-terminal
- /responsible-use-of-github-copilot-pull-request-summaries
- /responsible-use-of-github-copilot-text-completion
+ - /responsible-use-of-github-copilot-code-review
---
+
diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-githubcom.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github.md
similarity index 98%
rename from content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-githubcom.md
rename to content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github.md
index 2a37d11d36c6..655fbb17afc2 100644
--- a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-githubcom.md
+++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github.md
@@ -1,8 +1,7 @@
---
-title: Responsible use of GitHub Copilot Chat in GitHub.com
-shortTitle: Chat in GitHub.com
+title: Responsible use of GitHub Copilot Chat in GitHub
+shortTitle: Chat in GitHub
intro: 'Learn how to use {% data variables.product.prodname_copilot_chat_dotcom %} responsibly by understanding its purposes, capabilities, and limitations.'
-product: '{% data reusables.gated-features.copilot-chat-callout-dotcom %}'
versions:
feature: copilot
topics:
@@ -13,6 +12,7 @@ redirect_from:
- /copilot/github-copilot-enterprise/copilot-docset-management/about-copilot-docset-management
- /copilot/github-copilot-enterprise/copilot-chat-in-github/about-github-copilot-chat-in-githubcom
- /copilot/github-copilot-chat/copilot-chat-in-github/about-github-copilot-chat-in-githubcom
+ - /copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-githubcom
---
> [!NOTE] {% data reusables.rai.copilot.copilot-chat-dotcom-beta %}
diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-your-ide.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-your-ide.md
index c2441a097519..112be5e7a577 100644
--- a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-your-ide.md
+++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-your-ide.md
@@ -19,7 +19,11 @@ type: rai
{% data reusables.rai.copilot.about-copilot-chat-ide %}
-{% data reusables.rai.copilot.copilot-chat-ide-input-processing %}
+{% data reusables.rai.copilot.copilot-chat-ide-input-processing-all1 %}
+
+{% data reusables.rai.copilot.copilot-chat-ide-input-processing-custom-instructions %}
+
+{% data reusables.rai.copilot.copilot-chat-ide-input-processing-all2 %}
{% data reusables.rai.copilot.copilot-chat-ide-language-model-analysis %}
@@ -55,7 +59,11 @@ This can be a useful tool for programmers, as it can provide guidance and suppor
{% data reusables.rai.copilot.about-copilot-chat-ide %}
-{% data reusables.rai.copilot.copilot-chat-ide-input-processing %}
+{% data reusables.rai.copilot.copilot-chat-ide-input-processing-all1 %}
+
+{% data reusables.rai.copilot.copilot-chat-ide-input-processing-custom-instructions %}
+
+{% data reusables.rai.copilot.copilot-chat-ide-input-processing-all2 %}
{% data reusables.rai.copilot.copilot-chat-ide-language-model-analysis %}
@@ -89,7 +97,9 @@ This can be a useful tool for programmers, as it can provide guidance and suppor
{% data reusables.rai.copilot.about-copilot-chat-ide %}
-{% data reusables.rai.copilot.copilot-chat-ide-input-processing %}
+{% data reusables.rai.copilot.copilot-chat-ide-input-processing-all1 %}
+
+{% data reusables.rai.copilot.copilot-chat-ide-input-processing-all2 %}
{% data reusables.rai.copilot.copilot-chat-ide-language-model-analysis %}
diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-code-review.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-code-review.md
new file mode 100644
index 000000000000..235f40a2cbcb
--- /dev/null
+++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-code-review.md
@@ -0,0 +1,94 @@
+---
+title: Responsible use of GitHub Copilot code review
+shortTitle: Code review
+intro: "Learn how to use {% data variables.copilot.copilot_code-review %} safely and responsibly by understanding its purposes, capabilities, and limitations."
+versions:
+ feature: copilot
+topics:
+ - Copilot
+type: rai
+---
+
+> [!NOTE]
+> * {% data variables.copilot.copilot_code-review %} is in {% data variables.release-phases.public_preview %} and subject to change. To join the waitlist, see "[Join the {% data variables.copilot.copilot_code-review_short %} waitlist](https://gh.io/copilot-code-review-waitlist)."
+> * The "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-pre-release-license-terms)" apply to your use of this product.
+
+## About {% data variables.copilot.copilot_code-review %}
+
+{% data variables.copilot.copilot_code-review %} is an AI-powered feature that reviews code and provides feedback.
+
+When a user requests a code review from {% data variables.product.prodname_copilot_short %}, {% data variables.product.prodname_copilot_short %} scans through the code changes, plus additional relevant context, and provides feedback on the code. As part of that feedback, it may also provide specific suggested code changes.
+
+{% data variables.product.prodname_copilot_short %}'s review can be customized with coding guidelines, which are natural language descriptions of coding style and best practices. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/code-review/configuring-coding-guidelines)."
+
+The only supported language for {% data variables.copilot.copilot_code-review %} is English.
+
+{% data variables.copilot.copilot_code-review %} inspects your code and provides feedback using a combination of natural language processing and machine learning. This process can be broken down into a number of steps.
+
+### Input processing
+
+The code changes are combined with other relevant, contextual information (for example, the pull request’s title and body on {% data variables.product.github %}) and your coding guidelines to form a prompt, and that prompt is sent to a large language model.
+
+### Language model analysis
+
+The prompt is then passed through the {% data variables.product.prodname_copilot_short %} language model, which is a neural network that has been trained on a large body of text data. The language model analyzes the input prompt.
+
+### Response generation
+
+The language model generates a response based on its analysis of the input prompt. This response can take the form of natural language suggestions and code suggestions.
+
+### Output formatting
+
+The response generated by {% data variables.product.prodname_copilot_short %} is presented to the user directly in {% data variables.product.prodname_vscode %} or as a pull request review on {% data variables.product.github %}, providing code feedback linked to specific lines of specific files.
+
+Where {% data variables.product.prodname_copilot_short %} has provided a code suggestion, the suggestion is presented as a suggested change, which can be applied with a couple of clicks.
+
+## Use case for {% data variables.copilot.copilot_code-review %}
+
+The goal of {% data variables.copilot.copilot_code-review %} is to quickly provide feedback on a developer’s code. This can enable developers to get code ready to merge more quickly and increase overall code quality.
+
+## Improving the performance of {% data variables.copilot.copilot_code-review %}
+
+### Use {% data variables.copilot.copilot_code-review_short %} to supplement human reviews, not to replace them
+
+While {% data variables.copilot.copilot_code-review %} can be a powerful tool for improving code quality, it is important to use it as a tool, rather than to replace human reviews.
+
+You should always review and verify the feedback generated by {% data variables.copilot.copilot_code-review_short %}, and supplement {% data variables.product.prodname_copilot_short %}'s feedback with careful human review to ensure your code meets your requirements.
+
+### Provide feedback
+
+If you encounter any issues or limitations with {% data variables.copilot.copilot_code-review_short %}, we recommend that you provide feedback by using the thumbs up and thumbs down buttons on {% data variables.product.prodname_copilot_short %}'s comments. This can help GitHub to improve the tool and address any concerns or limitations.
+
+### Configure coding guidelines
+
+You can configure coding guidelines to help {% data variables.product.prodname_copilot_short %} understand your coding style and best practices. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/code-review/configuring-coding-guidelines)."
+
+## Limitations of {% data variables.copilot.copilot_code-review %}
+
+Depending on factors such as your codebase and programming language, you may encounter different levels of performance when using {% data variables.copilot.copilot_code-review %}. The following information is designed to help you understand system limitations and key concepts about performance as they apply to {% data variables.copilot.copilot_code-review %}.
+
+### Limited scope
+
+{% data variables.copilot.copilot_code-review_short %} only supports a specific set of programming languages, and it is only designed to identify a limited, fixed set of code quality issues. To ensure that all relevant problems are identified and corrected, {% data variables.copilot.copilot_code-review_short %} should be supplemented with careful human code review.
+
+### Missed code quality problems
+
+{% data variables.product.prodname_copilot_short %} may not identify all of the problems that are present in code, especially where changes are large or complex. To ensure that all relevant problems are identified and corrected, {% data variables.copilot.copilot_code-review_short %} should be supplemented with careful human code review.
+
+### False positives
+
+{% data variables.copilot.copilot_code-review_short %} has a risk of "hallucination" - that is, it may highlight problems in reviewed code that do not exist or are based on misunderstandings of the code. Comments generated by {% data variables.copilot.copilot_code-review_short %} should be carefully reviewed and considered before taking action and making changes.
+
+### Inaccurate or insecure code
+
+As part of its comments, {% data variables.copilot.copilot_code-review_short %} may provide specific code suggestions. The code generated may appear to be valid, but may not actually be semantically or syntactically correct, or may not correctly resolve the problem identified in the comment. In addition, code generated by {% data variables.product.prodname_copilot_short %} may contain security vulnerabilities or other issues. You should always carefully review and test code generated by {% data variables.product.prodname_copilot_short %}.
+
+### Potential biases
+
+{% data variables.product.prodname_copilot_short %}'s training data is drawn from existing code repositories, which may contain biases and errors that can be perpetuated by the tool. Additionally, {% data variables.copilot.copilot_code-review_short %} may be biased toward certain programming languages or coding styles, which can lead to suboptimal or incomplete feedback.
+
+## Next steps
+
+For details of how to use {% data variables.copilot.copilot_code-review_short %}, see:
+
+* "[AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review)"
diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-in-windows-terminal.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-in-windows-terminal.md
new file mode 100644
index 000000000000..36eef061e9fa
--- /dev/null
+++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-in-windows-terminal.md
@@ -0,0 +1,99 @@
+---
+title: Responsible use of GitHub Copilot in Windows Terminal
+shortTitle: Copilot in Windows Terminal
+intro: 'Learn how to use {% data variables.product.prodname_copilot %} responsibly by understanding its purposes, capabilities, and limitations.'
+product: '{% data reusables.gated-features.copilot-in-windows-terminal %}'
+versions:
+ feature: copilot
+topics:
+ - Copilot
+type: rai
+---
+
+## About {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_windows_terminal %}
+
+{% data variables.product.prodname_copilot %} in the Terminal Chat chat interface allows you to ask questions about the command line. You can ask {% data variables.product.prodname_copilot %} to provide either command suggestions or explanations of given commands.
+
+The primary supported language for {% data variables.product.prodname_copilot %} is English.
+
+{% data variables.product.prodname_copilot %} works by using a combination of natural language processing and machine learning to understand your question and provide you with an answer. This process can be broken down into a number of steps.
+
+### Input processing
+
+The input prompt from the user is pre-processed by Terminal Chat, combined with contextual information (the name of the active shell and the chat history), and sent to a {% data variables.product.company_short %} service that is connected to a large language model that then generates a response based on the context and prompt. User input can take the form of natural language prompts or questions. The system is only intended to respond to command line-related questions. For more information, see "[Terminal Chat](https://learn.microsoft.com/windows/terminal/terminal-chat)."
+
+### Language model analysis
+
+The input prompt is then passed through the language model, which is a neural network that has been trained on a large body of text data. The language model analyzes the input prompt to find the command or command explanation most relevant to your query.
+
+### Response generation
+
+The language model generates a response based on its analysis of the input prompt. This response will take the form of a suggested command or an explanation of the command you asked about. If you want to run a suggested command, you need to click on the command to insert it to your command line. The command does not run automatically. You will need to manually run the command.
+
+### Output formatting
+
+The response generated by {% data variables.product.prodname_copilot %} is formatted and presented to you. Terminal Chat and {% data variables.product.prodname_copilot %} use syntax highlighting, indentation, and other formatting features to add clarity to the generated response.
+
+{% data variables.product.prodname_copilot %} is intended to provide you with the most relevant answer to your question. However, it may not always provide the answer you are looking for. Users of {% data variables.product.prodname_copilot %} are responsible for reviewing and validating responses generated by the system to ensure they are accurate and appropriate.
+
+## Use cases for {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_windows_terminal %}
+
+{% data variables.product.prodname_copilot %} in Terminal Chat can help you by providing either command suggestions or explanations of given commands.
+
+### Find the right command to perform a task
+
+{% data variables.product.prodname_copilot %} aims to suggest commands that help you perform the tasks you’re trying to complete. If the result isn’t quite what you’re looking for, you can keep revising your question until the returned command meets your expectations. Once you’ve generated the perfect command for your task, you can insert it to your command line to run it wherever you need.
+
+### Explain an unfamiliar command
+
+{% data variables.product.prodname_copilot %} can help explain a command that you asked about by generating a natural language description of the command's functionality and purpose. This can be useful if you want to understand the command's behavior for the specific example provided without having to read or search through the command's documentation. The explanation can include information such as the command's input and output parameters and examples of how it could be used.
+
+By generating explanations, {% data variables.product.prodname_copilot %} may help you to understand the command better, leading to enhanced learning, improved productivity, and less context switching. However, it's important to note that the generated explanations may not always be accurate or complete, so you'll need to review, and occasionally correct, its output. You remain responsible for ensuring the accuracy and appropriateness of the commands you run in the command line.
+
+## Improving {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_windows_terminal %}
+
+To enhance the experience and address some of the limitations of {% data variables.product.prodname_copilot %}, there are various measures that you can adopt. For more information about the limitations, see "[Limitations of {% data variables.product.prodname_copilot %}](#limitations-of-github-copilot-in-windows-terminal)."
+
+### Use {% data variables.product.prodname_copilot %} as a tool, not a replacement
+
+While {% data variables.product.prodname_copilot %} can be a powerful tool for enhancing understanding of commands and the command line, it is important to use it as a tool rather than a replacement for human programming. You should always review and verify the command generated by {% data variables.product.prodname_copilot %} to ensure that it meets your requirements and is free of errors or security concerns.
+
+### Provide feedback
+
+If you encounter any issues or limitations with {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_windows_terminal %}, we recommend that you provide feedback by opening an issue in the [{% data variables.product.prodname_windows_terminal %} repository](https://github.com/microsoft/terminal/issues). This can help the developers to improve the tool and address any concerns or limitations.
+
+## Limitations of {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_windows_terminal %}
+
+Depending on factors such as your operating system and input data, you may encounter different levels of accuracy when using {% data variables.product.prodname_copilot %} in the terminal. The following information is designed to help you understand system limitations and key concepts about performance as they apply to {% data variables.product.prodname_copilot %}.
+
+### Limited scope
+
+{% data variables.product.prodname_copilot %} operates within defined boundaries and might struggle with intricate commands, less common ones, or more recently developed tools. The quality of suggestions it provides for each language can be influenced by the availability and diversity of training data. For instance, inquiries about well-documented commands and tools like Git may yield more accurate responses compared to questions about more obscure command line tools.
+
+### Potential biases and errors
+
+{% data variables.product.prodname_copilot %}'s training data is sourced from existing online sources. It’s important to note that these sources may include biases and errors of the individuals who contributed to the training data. {% data variables.product.prodname_copilot %} may inadvertently perpetuate these biases and errors. Additionally, {% data variables.product.prodname_copilot %} might perform differently depending on the scripting languages or scripting styles, potentially resulting in suboptimal or incomplete command suggestions or explanations.
+
+### Inaccurate responses
+
+{% data variables.product.prodname_copilot %} may generate seemingly valid but syntactically or semantically incorrect commands. To avoid issues, always carefully review and verify suggestions, especially for critical or destructive tasks such as deleting content. Ensure generated commands align with best practices and fit your workflow.
+
+### Risk management and user accountability in command execution
+
+Additional caution is required with the addition of the functionality to ask {% data variables.product.prodname_copilot %} to execute a command, particularly regarding the potential destructiveness of some suggested commands. You may encounter commands for file deletion or hard drive formatting, which can cause problems if used incorrectly. While such commands may be necessary in certain scenarios, you need to be careful when accepting and running these commands.
+
+Additionally, you are ultimately responsible for the commands executed by {% data variables.product.prodname_copilot %}. It is entirely your decision whether to use commands generated by {% data variables.product.prodname_copilot %}. Despite the presence of fail-safes and safety mechanisms, you must understand that executing commands carries inherent risks. {% data variables.product.prodname_copilot %} provides a powerful tool set, but you should approach its recommendations with caution and ensure that commands align with your intentions and requirements.
+
+### Inaccurate responses to non-coding topics
+
+{% data variables.product.prodname_copilot %} in {% data variables.product.prodname_windows_terminal %} is not designed to answer questions beyond the scope of command line-related tasks. As a result, its responses might not consistently offer accuracy or assistance when confronted with questions unrelated to coding or general command line use. When you inquire about non-coding topics, {% data variables.product.prodname_copilot %} may express its inability to provide a meaningful response.
+
+### Differing performance based on natural language
+
+{% data variables.product.prodname_copilot %} has been trained on natural language content written predominantly in English. As a result, you may notice differing performance when providing {% data variables.product.prodname_copilot %} with natural language input prompts in languages other than English.
+
+## Further reading
+
+* [Terminal Chat](https://learn.microsoft.com/windows/terminal/terminal-chat)
+* "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot)"
+* [{% data variables.product.prodname_copilot %} Trust Center](https://resources.github.com/copilot-trust-center/)
diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-pull-request-summaries.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-pull-request-summaries.md
index 36b4db122784..2e497ac49936 100644
--- a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-pull-request-summaries.md
+++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-pull-request-summaries.md
@@ -4,7 +4,6 @@ shortTitle: Pull request summaries
intro: 'Learn how to use {% data variables.product.prodname_copilot_for_prs %} responsibly by understanding its purposes, capabilities, and limitations.'
versions:
feature: copilot
-permissions: 'Members of an enterprise with a subscription to {% data variables.product.prodname_copilot_enterprise %}'
topics:
- Copilot
type: rai
@@ -12,12 +11,6 @@ redirect_from:
- /copilot/github-copilot-enterprise/copilot-pull-request-summaries/about-copilot-pull-request-summaries
---
-{% ifversion fpt %}
-
-{% data reusables.rai.copilot.enterprise-fpt-link %}
-
-{% endif %}
-
## About {% data variables.product.prodname_copilot_for_prs %}
{% data variables.product.prodname_copilot_for_prs %} is an AI-powered feature that allows you to create a summary of the changes that were made in a pull request, which files they impact, and what a reviewer should focus on when they conduct their review.
diff --git a/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-your-organization.md b/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-your-organization.md
index ca76fb1ecf7f..46aa9a042993 100644
--- a/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-your-organization.md
+++ b/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-your-organization.md
@@ -49,9 +49,9 @@ Alternatively, you can set up a self-serve workflow using the API. See "[Add tea
Enhance the {% data variables.product.prodname_copilot_short %} experience for your organization by:
-* **Indexing repositories** to improve {% data variables.product.prodname_copilot_short %}'s responses relating to {% data variables.product.prodname_dotcom %} repositories _({% data variables.product.prodname_copilot_enterprise_short %} only)_. See "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/indexing-repositories-for-copilot-chat)."
+* **Indexing repositories** to improve {% data variables.product.prodname_copilot_short %}'s responses relating to {% data variables.product.prodname_dotcom %} repositories. See "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/indexing-repositories-for-copilot-chat)."
* **Setting up knowledge bases** for use with {% data variables.product.prodname_copilot_chat_short %} _({% data variables.product.prodname_copilot_enterprise_short %} only)_. See "[AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/managing-copilot-knowledge-bases)."
-* **Fine tuning {% data variables.product.prodname_copilot_short %}** by creating a custom large language model. See "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/creating-a-custom-model-for-github-copilot)."
+* **Fine tuning {% data variables.product.prodname_copilot_short %}** by creating a custom large language model. See "[AUTOTITLE](/copilot/customizing-copilot/creating-a-custom-model-for-github-copilot)."
* **Installing {% data variables.product.prodname_copilot_extensions_short %}** to integrate other tools with {% data variables.product.prodname_copilot_chat_short %}. See "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/installing-github-copilot-extensions-for-your-organization)."
## 7. Drive adoption
diff --git a/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-yourself.md b/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-yourself.md
index 1c452a9ad683..f62969b9ed09 100644
--- a/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-yourself.md
+++ b/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-yourself.md
@@ -26,13 +26,17 @@ If you want to use {% data variables.product.prodname_copilot_short %} in your I
If you want to use {% data variables.product.prodname_copilot_short %} in the command line, install the {% data variables.product.prodname_copilot_short %} extension for the {% data variables.product.prodname_cli %}. See "[AUTOTITLE](/copilot/managing-copilot/configure-personal-settings/installing-github-copilot-in-the-cli)."
-## 4. Set up networking (if necessary)
+## 4. Use {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_windows_terminal %}
+
+If you want to chat with {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_windows_terminal %}, connect {% data variables.product.prodname_copilot_short %} with Terminal Chat in {% data variables.product.prodname_windows_terminal %} Canary. See "[AUTOTITLE](/copilot/quickstart?tool=windowsterminal)."
+
+## 5. Set up networking (if necessary)
If you connect through an HTTP proxy server or firewall, ensure that key URLs are added to the allowlist for the proxy server or firewall. See "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/configuring-your-proxy-server-or-firewall-for-copilot)."
You may also need to install a custom SSL certificate on your machine. See "[AUTOTITLE](/copilot/managing-copilot/configure-personal-settings/configuring-network-settings-for-github-copilot#installing-custom-certificates)."
-## 5. Configure settings (optional)
+## 6. Configure settings (optional)
All users can configure {% data variables.product.prodname_copilot_short %} settings in their IDE or in the CLI. See "[AUTOTITLE](/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment)" and "[AUTOTITLE](/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-the-cli)."
@@ -41,7 +45,7 @@ If you have your own subscription to {% data variables.product.prodname_copilot_
* **Install {% data variables.product.prodname_copilot_extensions_short %}** to integrate other tools with {% data variables.product.prodname_copilot_chat_short %}. See "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/installing-github-copilot-extensions-for-your-personal-account)."
* **Manage policies**. See "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber)."
-## 6. Start using {% data variables.product.prodname_copilot_short %}
+## 7. Start using {% data variables.product.prodname_copilot_short %}
Start using {% data variables.product.prodname_copilot_short %} to help you write code faster and more efficiently. For all the ways you can use {% data variables.product.prodname_copilot_short %}, see "[AUTOTITLE](/copilot/using-github-copilot)." {% data variables.product.prodname_copilot_short %} code suggestions, {% data variables.product.prodname_copilot_chat_dotcom_short %}, and {% data variables.product.prodname_copilot_chat_short %} in your IDE are a great place to start.
diff --git a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom.md b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-github.md
similarity index 90%
rename from content/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom.md
rename to content/copilot/using-github-copilot/asking-github-copilot-questions-in-github.md
index d59b5bceea76..ce4d578fe456 100644
--- a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom.md
+++ b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-github.md
@@ -1,19 +1,19 @@
---
-title: Asking GitHub Copilot questions in GitHub.com
-shortTitle: Chat in GitHub.com
+title: Asking GitHub Copilot questions in GitHub
+shortTitle: Chat in GitHub
intro: 'You can use {% data variables.product.prodname_copilot_chat_dotcom %} to answer general questions about software development, or specific questions about the issues or code in a repository.'
versions:
feature: copilot
-permissions: '{% data reusables.gated-features.copilot-chat-callout-dotcom %}'
topics:
- Copilot
redirect_from:
- /copilot/github-copilot-enterprise/copilot-chat-in-github/using-github-copilot-chat-in-githubcom
- /copilot/github-copilot-chat/copilot-chat-in-github/using-github-copilot-chat-in-githubcom
- /copilot/github-copilot-chat/copilot-chat-in-github
+ - /copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom
---
-> [!NOTE] {% data reusables.copilot.chat-dotcom-beta %}
+> [!NOTE] {% data variables.product.prodname_copilot_chat_dotcom %} is currently in {% data variables.release-phases.public_preview %} and is subject to change.
## Overview
@@ -36,17 +36,6 @@ On {% data variables.product.github %}, you can use {% data variables.product.pr
* Chat responses may be suboptimal if you ask questions about a specific repository that you've selected as a context, and the repository has not been indexed for semantic code search. {% data reusables.copilot.indexing-who-can-do-this %} For more information, see "[AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/indexing-repositories-for-copilot-chat)."
* The quality of the results from {% data variables.product.prodname_copilot_chat_short %} may, in some situations, be degraded if very large files, or a large number of files, are used as a context for a question.
-## Prerequisites
-
-{% ifversion ghec %}
-{% data reusables.copilot.chat-dotcom-prerequisites %}
-
-{% else %}
-To use {% data variables.product.prodname_copilot_chat_dotcom %}, you must have an active {% data variables.product.prodname_copilot_for_individuals %} subscription.
-
-Alternatively, members assigned a seat in a {% data variables.product.prodname_copilot_for_business %} subscription can use {% data variables.product.prodname_copilot_chat_dotcom %}. For more information, see "[AUTOTITLE](/copilot/setting-up-github-copilot/setting-up-github-copilot-for-your-organization)".
-{% endif %}
-
## Powered by skills
{% data variables.product.prodname_copilot_short %} is powered by a collection of skills that are dynamically selected based on the question you ask. You can tell which skill {% data variables.product.prodname_copilot_short %} used by clicking {% octicon "chevron-down" aria-label="the down arrow" %} to expand the status information in the chat window.
@@ -61,20 +50,21 @@ You can generate a list of currently available skills by asking {% data variable
The skills you can use in {% data variables.product.prodname_copilot_chat_dotcom_short %} include those shown in the table below.
+
| Skill | Description | Enabled by default? | Example question |
| ----- | ----------- | ------------------- | ---------------- |
-| **Bing web search** (in {% data variables.release-phases.public_preview %} and subject to change) | Searches the web using the Bing search engine. This skill is useful for teaching {% data variables.product.prodname_copilot_short %} about recent events, new developments, trends, technologies, or extremely specific, detailed, or niche subjects. **Available for {% data variables.product.prodname_copilot_business_short %} and {% data variables.product.prodname_copilot_enterprise_short %}**. | No (requires admin approval - see "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise)") | _What are some recent articles about SAT tokens securing against vulnerabilities in Node?_ |
-| **Commit details** | Retrieves a list of commits, or the contents of a specific commit, to provide answers to commit-related questions. | Yes | _Explain the changes in the code of this commit_ |
-| **Discussion details** | Retrieves a specific {% data variables.product.prodname_dotcom %} discussion. This is useful for quickly getting the gist of the conversation in a discussion. | Yes | _Summarize this discussion_ |
-| **File details** | Retrieves a specific file in the default branch of the Git repository, allowing you to ask questions about the file and the recent changes made to it. This skill is useful when you provide the exact path of a file in the repository. | Yes | _What logic does user_auth.js encapsulate?_
_What is the file history of user_auth.js?_ |
-| **{% data variables.product.prodname_GH_advanced_security %}** | Retrieves information about security alerts within your organization from {% data variables.product.prodname_GH_advanced_security %} features ({% data variables.product.prodname_code_scanning %}, {% data variables.product.prodname_secret_scanning %}, and {% data variables.product.prodname_dependabot_alerts %}). | Yes | _How would I fix this {% data variables.product.prodname_code_scanning %} alert?_ |
-| **Issue details** | Retrieves a specific {% data variables.product.prodname_dotcom %} issue, including the issue's title, number, author, status, body, linked pull requests, comments, and timestamps. | Yes | _Summarize the conversation on this issue and suggest next steps_ |
+| **Commit details** | Retrieves a list of commits, or the contents of a specific commit, to provide answers to commit-related questions. | Yes | `Explain the changes in the code of this commit`|
+| **Discussion details** | Retrieves a specific {% data variables.product.prodname_dotcom %} discussion. This is useful for quickly getting the gist of the conversation in a discussion. | Yes | `Summarize this discussion` |
+| **File details** | Retrieves a specific file in the default branch of the Git repository, allowing you to ask questions about the file and the recent changes made to it. This skill is useful when you provide the exact path of a file in the repository. | Yes | `What logic does user_auth.js encapsulate?`
`What is the file history of user_auth.js?` |
+| **{% data variables.product.prodname_GH_advanced_security %}** | Retrieves information about security alerts within your organization from {% data variables.product.prodname_GH_advanced_security %} features ({% data variables.product.prodname_code_scanning %}, {% data variables.product.prodname_secret_scanning %}, and {% data variables.product.prodname_dependabot_alerts %}). | Yes | `How would I fix this {% data variables.product.prodname_code_scanning %} alert?` |
+| **Issue details** | Retrieves a specific {% data variables.product.prodname_dotcom %} issue, including the issue's title, number, author, status, body, linked pull requests, comments, and timestamps. | Yes | `Summarize the conversation on this issue and suggest next steps` |
| **Lexical code search** | Keyword code search in the default branch of the Git repository. This skill is useful when you want to know about specific functions, methods or keywords that exist in the code. This skill leverages most of the functionality available to [{% data variables.product.prodname_dotcom %} Search](/search-github/github-code-search/understanding-github-code-search-syntax#using-qualifiers) like `symbol` and `path`. | Yes | `Find me the tests for the GitService class` |
-| **Pull request details** | Retrieves a specific pull request. This allows you to ask questions about the pull request, including getting a summary of the pull request, its comments, or the code it changes. | Yes | _Summarize this PR for me_
_Summarize the changes in this PR_ |
-| **Release details** | Retrieves the latest, or specified, release. This allows you to find out who created a release, when it happened, and information included in the release notes. | Yes | _When was the latest release?_ |
-| **Repository details** | Retrieves a specific {% data variables.product.prodname_dotcom %} repository. This is useful for finding out details such as the repository owner and the main language used. | Yes | _Tell me about this repo_ |
-| **Semantic code search** | Natural language semantic code search in the default branch of the Git repository. This skill is useful when you want to know where or how certain functionality has been implemented in the code. Note: this requires indexing to be enabled for the repository (see "[AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/indexing-repositories-for-copilot-chat)"). | Yes
Available for all repositories with a {% data variables.product.prodname_copilot_enterprise_short %} subscription, and for public repositories with a {% data variables.product.prodname_copilot_individuals_short %} or {% data variables.product.prodname_copilot_business_short %} subscription. | `How does this repo manage HTTP requests and responses?`|
-| **Support search** | Retrieves information from the {% data variables.contact.contact_support_portal %}. This skill is useful for asking {% data variables.product.prodname_copilot_chat_short %} about {% data variables.product.prodname_dotcom %} products and support related questions. | Yes | _Can I use {% data variables.product.prodname_copilot_short %} knowledge bases with {% data variables.product.prodname_copilot_individuals_short %}?_ |
+| **Pull request details** | Retrieves a specific pull request. This allows you to ask questions about the pull request, including getting a summary of the pull request, its comments, or the code it changes. | Yes | `Summarize this PR for me`
`Summarize the changes in this PR` |
+| **Release details** | Retrieves the latest, or specified, release. This allows you to find out who created a release, when it happened, and information included in the release notes. | Yes | `When was the latest release?` |
+| **Repository details** | Retrieves a specific {% data variables.product.prodname_dotcom %} repository. This is useful for finding out details such as the repository owner and the main language used. | Yes | `Tell me about this repo` |
+| **Semantic code search** | Natural language semantic code search in the default branch of the Git repository. This skill is useful when you want to know where or how certain functionality has been implemented in the code. Note: this requires indexing to be enabled for the repository (see "[AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/indexing-repositories-for-copilot-chat)"). | Yes
Available for all repositories with a {% data variables.product.prodname_copilot_enterprise_short %} subscription, and for public repositories with a {% data variables.product.prodname_copilot_individuals_short %} or {% data variables.product.prodname_copilot_business_short %} subscription. | `How does this repo manage HTTP requests and responses?`|
+| **Support search** | Retrieves information from the {% data variables.contact.contact_support_portal %}. This skill is useful for asking {% data variables.product.prodname_copilot_chat_short %} about {% data variables.product.prodname_dotcom %} products and support related questions. | Yes | `Can I use {% data variables.product.prodname_copilot_short %} knowledge bases with {% data variables.product.prodname_copilot_individuals_short %}?` |
+| **Web search** | Searches the web using the Bing search engine. This skill is useful for teaching {% data variables.product.prodname_copilot_short %} about recent events, new developments, trends, technologies, or extremely specific, detailed, or niche subjects. | No
{% ifversion fpt %}_For {% data variables.product.prodname_copilot_individuals_short %}:_ Enable in your user settings.
_For {% data variables.product.prodname_copilot_business_short %}:_ Enable in organization settings.{% else %}Enable in enterprise or organization settings.{% endif %} | `What are some recent articles about SAT tokens securing against vulnerabilities in Node?` |
## AI models for {% data variables.product.prodname_copilot_chat_short %}
@@ -85,24 +75,24 @@ The skills you can use in {% data variables.product.prodname_copilot_chat_dotcom
### Changing your AI model
> [!NOTE]
-> * The `o1-preview` and `o1-mini` models do not have access to skills {% ifversion ghec %}or knowledge bases {% endif %}in {% data variables.product.prodname_copilot_chat_dotcom %}. If you want to use skills {% ifversion ghec %}or knowledge bases {% endif %}on {% data variables.product.github %}, you must use the `gpt-4o` model.
+> * If you want to use the skills listed in the table above{% ifversion ghec %}, or knowledge bases{% endif %}, on the {% data variables.product.github %} website, you must use the `gpt-4o` model.
> * If you use {% data variables.product.prodname_copilot_extensions_short %}, they may override the model you select.
> * Experimental pre-release versions of the models may not interact with all filters correctly, including the duplication detection filter.
-{% data reusables.copilot.model-picker-enable-preview-features %}
+{% data reusables.copilot.model-picker-enable-o1-models %}
1. In the bottom right of any page on {% data variables.product.github %}, click {% octicon "copilot" aria-label="Open Copilot Chat" %}.
1. If the panel contains a previous conversation you had with {% data variables.product.prodname_copilot_short %}, in the top right of the panel, click {% octicon "plus" aria-label="New conversation" %}.
![Screenshot of the new conversation button, highlighted with a dark orange outline.](/assets/images/help/copilot/chat-new-conversation-button.png)
-1. In the top right of the panel, select the {% octicon "kebab-horizontal" aria-label="Open conversation options" %} dropdown menu, then click {% octicon "screen-full" aria-hidden="true" %} **Take conversation to immersive**. Model selection for {% data variables.product.prodname_copilot_chat_short %} is currently only available in the immersive view.
+1. In the top right of the panel, select the {% octicon "kebab-horizontal" aria-label="Open conversation options" %} dropdown menu, then click {% octicon "screen-full" aria-hidden="true" %} **Take conversation to immersive**. Multi-model {% data variables.product.prodname_copilot_chat_short %} is currently only available in the immersive view.
1. In the top left of the immersive view, select the **CURRENT-MODEL** {% octicon "chevron-down" aria-hidden="true" %} dropdown menu, then click the AI model of your choice.
## Asking a general question about software development
You can ask a general question about software development that is not focused on a particular context, such as a repository{% ifversion ghec %} or a knowledge base{% endif %}.
-Depending on the question you ask, and your enterprise and organization settings, {% data variables.product.prodname_copilot_short %} may respond using information based on the results of a Bing search. By using Bing search, {% data variables.product.prodname_copilot_short %} can answer a broad range of tech-related questions with up-to-date details based on information currently available on the internet. For information on how to enable or disable Bing search integration, see "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise)."
+Depending on the question you ask, and your enterprise and organization settings, {% data variables.product.prodname_copilot_short %} may respond using information based on the results of a Bing search. By using Bing search, {% data variables.product.prodname_copilot_short %} can answer a broad range of tech-related questions with up-to-date details based on information currently available on the internet. For information on how to enable or disable Bing search integration, see "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber#enabling-or-disabling-web-search-for-github-copilot-chat)" and "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise)."
> [!NOTE] Bing search integration into {% data variables.product.prodname_copilot_chat_dotcom_short %} is currently in {% data variables.release-phases.public_preview %} and is subject to change.
diff --git a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-windows-terminal.md b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-windows-terminal.md
new file mode 100644
index 000000000000..95717deb7f09
--- /dev/null
+++ b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-windows-terminal.md
@@ -0,0 +1,33 @@
+---
+title: Asking GitHub Copilot questions in Windows Terminal
+intro: 'You can use {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_windows_terminal %} to get suggestions and explanations for the command line.'
+topics:
+ - Copilot
+shortTitle: Copilot in Windows Terminal
+versions:
+ feature: copilot
+---
+
+## Prerequisites
+
+* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
+* **{% data variables.product.prodname_windows_terminal %} Canary installed**. For installation instructions, see [Installing {% data variables.product.prodname_windows_terminal %} Canary](https://github.com/microsoft/terminal?tab=readme-ov-file#installing-windows-terminal-canary).
+* **GitHub Copilot connected to Terminal Chat**. See "[AUTOTITLE](/copilot/quickstart?tool=windowsterminal)."
+
+If you have access to {% data variables.product.prodname_copilot %} via your organization or enterprise, you cannot use {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_windows_terminal %} if your organization owner or enterprise administrator has disabled {% data variables.product.prodname_copilot_cli_short %}. See "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/managing-policies-for-copilot-in-your-organization)."
+
+## Getting command explanations and suggestions
+
+In the Terminal Chat chat window, type a question (for example, `how do i list all markdown files in my directory`) then press Enter.
+
+ {% data variables.product.prodname_copilot_short %}'s answer is displayed below your question.
+
+Click on an answer to insert it to the command line.
+
+## Sharing feedback
+
+To send feedback to {% data variables.product.prodname_windows_terminal %} about the quality of a suggestion, open an issue in the [{% data variables.product.prodname_windows_terminal %} repository](https://github.com/microsoft/terminal/issues).
+
+## Further reading
+
+* "[Terminal Chat](https://learn.microsoft.com/windows/terminal/terminal-chat#setting-up-terminal-chat)" in the Microsoft Learn documentation
diff --git a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md
index 846109c73156..9197ed89b9fa 100644
--- a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md
+++ b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md
@@ -18,7 +18,7 @@ shortTitle: Chat in IDE
## Prerequisites
-* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
{% data reusables.copilot.vscode-prerequisites %}
{% data reusables.copilot.chat-access-denied %}
@@ -31,14 +31,9 @@ shortTitle: Chat in IDE
### Changing your AI model
-The model picker in Chat view is a pre-release feature and requires the latest version of [VS Code Insiders](https://code.visualstudio.com/insiders/), as well as the {% data variables.product.prodname_copilot_short %} pre-release extension.
+{% data reusables.copilot.chat-model-limitations-ide %}
-> [!NOTE]
->
-> * If you use {% data variables.product.prodname_copilot_extensions_short %}, they may override the model you select.
-> * Experimental pre-release versions of the models may not interact with all filters correctly, including the duplication detection filter.
-
-{% data reusables.copilot.model-picker-enable-preview-features %}
+{% data reusables.copilot.model-picker-enable-o1-models %}
{% data reusables.copilot.open-chat-vs-code %}
1. In the bottom right of the chat view, select the **CURRENT-MODEL** {% octicon "chevron-down" aria-hidden="true" %} dropdown menu, then click the AI model of your choice.
@@ -60,17 +55,26 @@ You can ask {% data variables.product.prodname_copilot_chat_short %} to give cod
The response may contain text, code blocks, buttons, images, URIs, and file trees. The response often includes interactive elements. For example, the response may include a menu to insert a code block, or a button to invoke a {% data variables.product.prodname_vscode %} command.
+ To see the files that {% data variables.product.prodname_copilot_chat_short %} used to generate the response, select the **Used _n_ references** dropdown at the top of the response. The references may include a link to a custom instructions file. This file contains additional information that is automatically added to all of your chat questions to improve the quality of the responses. For more information, see "[AUTOTITLE](/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot)."
+
## Using keywords in your prompt
You can use special keywords to help {% data variables.product.prodname_copilot_short %} understand your prompt. For examples, see "[AUTOTITLE](/copilot/using-github-copilot/example-use-cases/example-prompts-for-copilot-chat)."
### Chat participants
-Use chat participants to scope your prompt to a specific domain. To use a chat participant, type `@` in the chat prompt box, followed by a chat participant name. Chat participants include:
+Chat participants are AI domain experts that can perform tasks or answer questions in a specific domain.
+
+{% data variables.product.prodname_copilot_chat_short %} can infer relevant chat participants based on your natural language prompt, improving discovery of advanced capabilities without you having to explicitly specify the participant you want to use in your prompt. However, if you prefer, you can still manually specify a chat participant to scope your prompt to a specific domain. To do this, type `@` in the chat prompt box, followed by a chat participant name.
+
+> [!NOTE] Automatic inference for chat participants is currently in {% data variables.release-phases.public_preview %} and is subject to change.
+
+Chat participants include:
* `@workspace`: Has context about the code in your workspace. Use `@workspace` when you want {% data variables.product.prodname_copilot_short %} to consider the structure of your project, how different parts of your code interact, or design patterns in your project.
* `@vscode`: Has context about {% data variables.product.prodname_vscode %} commands and features. Use `@vscode` when you want help with {% data variables.product.prodname_vscode %}.
* `@terminal`: Has context about the {% data variables.product.prodname_vscode %} terminal shell and its contents. Use `@terminal` when you want help creating or debugging terminal commands.
+* `@azure`: Has context about Azure services and how to use, deploy and manage them. Use `@azure` when you want help with Azure. The `@azure` chat participant is currently in {% data variables.release-phases.public_preview %} and is subject to change.
{% ifversion ghec %}
* `@github`: Allows you to use {% data variables.product.prodname_dotcom %}-specific {% data variables.product.prodname_copilot_short %} skills. See "[Using {% data variables.product.prodname_dotcom %} skills for {% data variables.product.prodname_copilot_short %}](#using-github-skills-for-copilot)."
{% endif %}
@@ -109,7 +113,7 @@ To see all available chat variables, type `#` in the chat prompt box. See also [
> [!NOTE]
> This functionality is available with the {% data variables.product.prodname_copilot_chat_short %} extension v0.20.3 or later and {% data variables.product.prodname_vscode_shortname %} or {% data variables.product.prodname_vscode_shortname %} Insiders 1.93 or later.
-{% data variables.product.prodname_copilot_short %} has a collection of {% data variables.product.prodname_dotcom %}-specific skills that it can use to answer your questions. To access these skills in {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vscode_shortname %}, include `@github` in your question.
+{% data variables.product.prodname_copilot_short %}'s {% data variables.product.prodname_dotcom %}-specific skills expand the type of information {% data variables.product.prodname_copilot_short %} can provide. To access these skills in {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vscode_shortname %}, include `@github` in your question.
When you add `@github` to a question, {% data variables.product.prodname_copilot_short %} dynamically selects an appropriate skill, based on the content of your question. You can also explicitly ask {% data variables.product.prodname_copilot_chat_short %} to use a particular skill. You can do this in two ways:
* Use natural language to ask {% data variables.product.prodname_copilot_chat_short %} to use a skill. For example, `@github Search the web to find the latest GPT4 model from OpenAI.`
@@ -121,6 +125,8 @@ You can generate a list of currently available skills by asking {% data variable
The skills you can use in {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vscode_shortname %} include those shown in the table below.
+
+
| Skill | Description | Enabled by default? | Example question |
| ----- | ----------- | ------------------- | ---------------- |
| **Commit details** | Retrieves a list of commits, or the contents of a specific commit, to provide answers to commit-related questions. | Yes | `@github Explain the changes in the code of this commit` |
@@ -136,9 +142,9 @@ The skills you can use in {% data variables.product.prodname_copilot_chat_short
| **Pull request details** | Retrieves a specific pull request. This allows you to ask questions about the pull request, including getting a summary of the pull request, its comments, or the code it changes. | Yes | `@github List my recent pull requests` |
| **Release details** | Retrieves the latest, or specified, release. This allows you to find out who created a release, when it happened, and information included in the release notes. | Yes | `@github When was the latest release?` |
| **Repository details** | Retrieves a specific {% data variables.product.prodname_dotcom %} repository. This is useful for finding out details such as the repository owner and the main language used. | Yes | `@github Tell me about PATH-TO-REPOSITORY` |
-| **Semantic code search** | Natural language semantic code search in the default branch of the Git repository. This skill is useful when you want to know where or how certain functionality has been implemented in the code. Note: this requires indexing to be enabled for the repository (see "[AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/indexing-repositories-for-copilot-chat)"). | Yes
Available for all repositories with a {% data variables.product.prodname_copilot_enterprise_short %} subscription, and for public repositories with a {% data variables.product.prodname_copilot_individuals_short %} or {% data variables.product.prodname_copilot_business_short %} subscription. | `How does this repo manage HTTP requests and responses?`|
+| **Semantic code search** | Natural language semantic code search in the default branch of the Git repository. This skill is useful when you want to know where or how certain functionality has been implemented in the code. Note: this requires indexing to be enabled for the repository (see "[AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/indexing-repositories-for-copilot-chat)"). | Yes
Available for all repositories with a {% data variables.product.prodname_copilot_enterprise_short %} subscription, and for public repositories with a {% data variables.product.prodname_copilot_individuals_short %} or {% data variables.product.prodname_copilot_business_short %} subscription. | `How does this repo manage HTTP requests and responses?`|
| **Support search** | Retrieves information from the {% data variables.contact.contact_support_portal %}. This skill is useful for asking {% data variables.product.prodname_copilot_chat_short %} about {% data variables.product.prodname_dotcom %} products and support related questions. | Yes | `@github Can I use {% data variables.product.prodname_copilot_short %} knowledge bases with {% data variables.product.prodname_copilot_individuals_short %}?` |
-| **Web search** | Searches the web using the Bing search engine. This skill is useful for teaching {% data variables.product.prodname_copilot_short %} about recent events, new developments, trends, technologies, or extremely specific, detailed, or niche subjects (only available with a {% data variables.product.prodname_copilot_enterprise_short %} or {% data variables.product.prodname_copilot_business_short %} subscription). | No (requires admin approval - see "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise)")| `@github #web What are some recent articles about SAT tokens securing against vulnerabilities in Node?` |
+| **Web search** | Searches the web using the Bing search engine. This skill is useful for teaching {% data variables.product.prodname_copilot_short %} about recent events, new developments, trends, technologies, or extremely specific, detailed, or niche subjects. | No
{% ifversion fpt %}_For {% data variables.product.prodname_copilot_individuals_short %}:_ Enable in your user settings.
_For {% data variables.product.prodname_copilot_business_short %}:_ Enable in organization settings.{% else %}Enable in enterprise or organization settings.{% endif %} | `@github #web What are some recent articles about SAT tokens securing against vulnerabilities in Node?` |
{% ifversion ghec %}
@@ -189,7 +195,7 @@ To leave feedback about the {% data variables.product.prodname_copilot_chat %} e
## Prerequisites
-* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
* **{% data variables.product.prodname_vs %} 2022 version 17.8 or later**. See [Install Visual Studio](https://learn.microsoft.com/visualstudio/install/install-visual-studio) in the {% data variables.product.prodname_vs %} documentation.
* **{% data variables.product.prodname_copilot %} extension**. See [Install GitHub Copilot in Visual Studio](https://learn.microsoft.com/visualstudio/ide/visual-studio-github-copilot-install-and-states) in the {% data variables.product.prodname_vs %} documentation.
* **{% data variables.product.prodname_copilot_chat %} extension**. See [Install GitHub Copilot in Visual Studio](https://learn.microsoft.com/visualstudio/ide/visual-studio-github-copilot-install-and-states) in the {% data variables.product.prodname_vs %} documentation.
@@ -197,6 +203,22 @@ To leave feedback about the {% data variables.product.prodname_copilot_chat %} e
{% data reusables.copilot.chat-access-denied %}
+## AI models for {% data variables.product.prodname_copilot_chat_short %}
+
+{% data reusables.copilot.copilot-chat-models-beta-note %}
+
+{% data reusables.copilot.copilot-chat-models-list %}
+
+### Changing your AI model
+
+To use multi-model {% data variables.product.prodname_copilot_chat_short %}, you must use {% data variables.product.prodname_vs %} 17.12 Preview 3 or later. See [{% data variables.product.prodname_vs %} 2022 Preview](https://visualstudio.microsoft.com/vs/preview/#download-preview).
+
+{% data reusables.copilot.chat-model-limitations-ide %}
+
+{% data reusables.copilot.model-picker-enable-o1-models %}
+1. In the {% data variables.product.prodname_vs %} menu bar, click **View**, then click **{% data variables.product.prodname_copilot_chat %}**.
+1. In the bottom right of the chat view, select the **CURRENT-MODEL** {% octicon "triangle-down" aria-hidden="true" %} dropdown menu, then click the AI model of your choice.
+
## Submitting prompts
You can ask {% data variables.product.prodname_copilot_chat_short %} to give code suggestions, explain code, generate unit tests, and suggest code fixes.
@@ -207,7 +229,7 @@ You can ask {% data variables.product.prodname_copilot_chat_short %} to give cod
The response often includes interactive elements. For example, the response may include buttons to copy, insert, or preview the result of a code block.
- To see the files that {% data variables.product.prodname_copilot_chat_short %} used to generate the response, select the **References** dropdown below the response.
+ To see the files that {% data variables.product.prodname_copilot_chat_short %} used to generate the response, click the **References** link below the response. The references may include a link to a custom instructions file. This file contains additional information that is automatically added to all of your chat questions to improve the quality of the responses. For more information, see "[AUTOTITLE](/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot)."
## Using keywords in your prompt
@@ -239,15 +261,12 @@ By default, {% data variables.product.prodname_copilot_chat_short %} will refere
See also [Reference](https://learn.microsoft.com/visualstudio/ide/copilot-chat-context#reference) in the {% data variables.product.prodname_vs %} documentation.
-{% ifversion ghec %}
-
## Using {% data variables.product.prodname_dotcom %} skills for {% data variables.product.prodname_copilot_short %} (preview)
> [!NOTE]
-> * This feature is only available if you have a {% data variables.product.prodname_copilot_enterprise_short %} subscription.
-> * The `@github` chat participant is currently in preview, and only available in [{% data variables.product.prodname_vs %} 2022 Preview 2](https://visualstudio.microsoft.com/vs/preview/) onwards.
+> The `@github` chat participant is currently in preview, and only available in [{% data variables.product.prodname_vs %} 2022 Preview 2](https://visualstudio.microsoft.com/vs/preview/) onwards.
-{% data variables.product.prodname_copilot_short %} has a collection of {% data variables.product.prodname_dotcom %}-specific skills that it can use to answer your questions. To access these skills in {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vs %}, include `@github` in your question.
+{% data variables.product.prodname_copilot_short %}'s {% data variables.product.prodname_dotcom %}-specific skills expand the type of information {% data variables.product.prodname_copilot_short %} can provide. To access these skills in {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vs %}, include `@github` in your question.
When you add `@github` to a question, {% data variables.product.prodname_copilot_short %} dynamically selects an appropriate skill, based on the content of your question. You can also explicitly ask {% data variables.product.prodname_copilot_chat_short %} to use a particular skill. For example, `@github Search the web to find the latest GPT4 model from OpenAI.`
@@ -257,13 +276,19 @@ You can generate a list of currently available skills by asking {% data variable
The skills you can use in {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vs %} include those shown in the table below.
+
+
| Skill | Description | Enabled by default? | Example question |
-| ------- | ----------- | ------------------- | -----------------|
+| ------ | ----------- | ------------------- | -----------------|
+| {% ifversion ghec %} |
| **Knowledge base search** | Tell {% data variables.product.prodname_copilot_chat_short %} to answer a question within the context of a knowledge base. To initiate a knowledge base search, first enter `@github`, then press **#**, then select a knowledge base. | Yes | Enter `@github #`, then choose your organization's style guide knowledge base, then ask: `What is our coding convention for indentation?` |
+| {% endif %} |
| **Lexical code search** | Keyword code search in the default branch of the Git repository. This skill is useful when you want to know about specific functions, methods or keywords that exist in the code. This skill leverages most of the functionality available to [{% data variables.product.prodname_dotcom %} Search](/search-github/github-code-search/understanding-github-code-search-syntax#using-qualifiers) like `symbol` and `path`. | Yes | `Find me the tests for the GitService class` |
| **Path search** | Retrieves a specific file in the default branch of the Git repository. This skill is useful when you provide the exact path of a file in the repository. | Yes | `@github What logic does user_auth.js encapsulate?` |
-| **Semantic code search** | Natural language semantic code search in the default branch of the Git repository. This skill is useful when you want to know where or how certain functionality has been implemented in the code. Note: this requires indexing to be enabled for the repository (see "[AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/indexing-repositories-for-copilot-chat)"). | Yes
Available for all repositories with a {% data variables.product.prodname_copilot_enterprise_short %} subscription, and for public repositories with a {% data variables.product.prodname_copilot_individuals_short %} or {% data variables.product.prodname_copilot_business_short %} subscription. | `How does this repo manage HTTP requests and responses?`|
-| **Web search** | Searches the web using the Bing search engine. This skill is useful for teaching Copilot about recent events, new developments, trends, technologies, or extremely specific, detailed, or niche subjects. | No (requires admin approval - see "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise)")| `@github What are some recent articles about SAT tokens securing against vulnerabilities in Node?` |
+| **Semantic code search** | Natural language semantic code search in the default branch of the Git repository. This skill is useful when you want to know where or how certain functionality has been implemented in the code. Note: this requires indexing to be enabled for the repository (see "[AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/indexing-repositories-for-copilot-chat)"). | Yes
Available for all repositories with a {% data variables.product.prodname_copilot_enterprise_short %} subscription, and for public repositories with a {% data variables.product.prodname_copilot_individuals_short %} or {% data variables.product.prodname_copilot_business_short %} subscription. | `How does this repo manage HTTP requests and responses?`|
+| **Web search** | Searches the web using the Bing search engine. This skill is useful for teaching Copilot about recent events, new developments, trends, technologies, or extremely specific, detailed, or niche subjects. | No
{% ifversion fpt %}_For {% data variables.product.prodname_copilot_individuals_short %}:_ Enable in your user settings.
_For {% data variables.product.prodname_copilot_business_short %}:_ Enable in organization settings.{% else %}Enable in enterprise or organization settings.{% endif %} | `@github What are some recent articles about SAT tokens securing against vulnerabilities in Node?` |
+
+{% ifversion ghec %}
## Asking a question about a knowledge base (preview)
@@ -316,7 +341,7 @@ To share feedback about {% data variables.product.prodname_copilot_chat_short %}
## Prerequisites
-* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
* **A compatible JetBrains IDE**. {% data variables.product.prodname_copilot %} is compatible with the following IDEs:
{% data reusables.copilot.jetbrains-compatible-ides %}
diff --git a/content/copilot/using-github-copilot/code-review/configuring-coding-guidelines.md b/content/copilot/using-github-copilot/code-review/configuring-coding-guidelines.md
new file mode 100644
index 000000000000..8c3b039b00de
--- /dev/null
+++ b/content/copilot/using-github-copilot/code-review/configuring-coding-guidelines.md
@@ -0,0 +1,107 @@
+---
+title: Configuring coding guidelines for GitHub Copilot code review
+shortTitle: Configuring coding guidelines
+intro: "Learn how to customize {% data variables.copilot.copilot_code-review_short %} with custom coding guidelines."
+allowTitleToDifferFromFilename: true
+redirect_from:
+ - /early-access/copilot/code-reviews/configuring-coding-guidelines
+versions:
+ feature: copilot
+topics:
+ - Copilot
+---
+
+> [!NOTE] Custom coding guidelines are limited to selected participants in the {% data variables.release-phases.public_preview %} of {% data variables.copilot.copilot_code-review_short %}, and only available as part of a subscription to {% data variables.product.prodname_copilot_enterprise %}.
+
+## About coding guidelines
+
+You can customize {% data variables.copilot.copilot_code-review_short %} with custom coding guidelines written in natural language. For more information on {% data variables.copilot.copilot_code-review_short %}, see "[AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review)."
+
+With coding guidelines, {% data variables.product.prodname_copilot_short %} can give feedback based on your organization's specific coding style and best practices.
+
+Because {% data variables.copilot.copilot_code-review_short %} is powered by a large language model, it can help with enforcing coding guidelines that are not covered by your linter or static analysis tool.
+
+Coding guidelines are configured at the repository level. You can create and enable up to 6 coding guidelines per repository.
+
+> [!NOTE]
+>
+> * Coding guidelines only work with languages supported by Copilot code review. For a list of supported languages, see "[AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review#supported-programming-languages)."
+> * Coding guidelines only apply to code reviews carried out by Copilot. The guidelines do not affect Copilot code completion suggestions, or code suggested in Copilot Chat responses.
+
+## Dos and don'ts for coding guidelines
+
+* **Do** use simple, clear and concise language to describe your coding guideline.
+* **Do** be as specific as possible about what Copilot should look for - that is, what you \*o or don't want to see in your code.
+* **Do** take a look at the "[Coding guidelines examples](#coding-guidelines-examples)" \*elow for some inspiration.
+* **Don't** try to use coding guidelines to enforce style guidelines that can be covered \*y your linter or static analysis tool.
+* **Don't** use wording that is ambiguous or could be interpreted in different ways.
+* **Don't** try to fit multiple different ideas into a single coding guideline.\*
+
+## Creating a coding guideline
+
+{% data reusables.repositories.navigate-to-repo %}
+{% data reusables.repositories.sidebar-settings %}
+
+1. In the "Code & automation" section of the side bar, click **{% octicon "copilot" aria-hidden="true" %} {% data variables.product.prodname_copilot_short %}**, then **Code review**.
+1. Click **Create guideline**.
+1. Under "Name," give the coding guideline a name.
+1. Under "Description," provide a description of the coding guideline up to 600 characters long. This will be used by {% data variables.product.prodname_copilot_short %} to understand your coding style and to decide when to leave a comment.
+
+ How you write your description has a big impact on the quality of comments that {% data variables.product.prodname_copilot_short %} will generate. For help with writing effective coding guidelines, see "[Dos and don'ts for coding guidelines](#dos-and-donts-for-coding-guidelines)" above, and "[Coding guidelines examples](#coding-guidelines-examples)" below.
+
+1. Optionally, limit the coding guideline to specific file types or paths by clicking **Add file path** and adding path patterns.
+
+ You can use `fnmatch` syntax to define paths to target, with `*` as a wildcard to match any string of characters.
+
+ {% data reusables.repositories.about-fnmatch %}
+
+1. Test your coding guideline to make sure it works as expected.
+
+ 1. Click **Add sample**.
+ 1. Add your own sample, or press **{% octicon "copilot" aria-hidden="true" %} Generate code sample** to automatically generate a code sample based on your title and description.
+ 1. Click **Save** to save the code sample.
+ 1. Test the coding guideline against your sample by pressing **{% octicon "play" aria-hidden="true" %} Run**.
+
+1. Save your coding guideline, and turn it on, by clicking **Save guideline**.
+
+## Running a review with coding guidelines
+
+When you request a review from {% data variables.product.prodname_copilot_short %}, it will automatically use the repository's enabled coding guidelines to review your code. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review)."
+
+Comments generated based on a coding guideline will include a message, highlighting their source.
+
+![Screenshot of a comment produced from a custom coding guideline.](/assets/images/help/copilot/code-review/coding-guidelines-comment@2x.png)
+
+## Coding guidelines examples
+
+### Example 1: Avoid using magic numbers
+
+**Title:** Avoid using magic numbers
+
+**Description:** Don't use magic numbers in code. Numbers should be defined as constants or variables with meaningful names.
+
+**Path patterns:** `**/*.py`
+
+### Example 2: Don't use `SELECT *` in SQL queries
+
+**Title:** Don't use `SELECT \*` in SQL queries
+
+**Description:** Don't use `SELECT \*` in SQL queries. Always specify the columns you want to select. `COUNT(\*)` is allowed.
+
+**Path patterns:** None (applies to all file types, as SQL queries may be embedded in code).
+
+### Example 3: Use `fetch` for HTTP requests
+
+**Title:** Use `fetch` for HTTP requests
+
+**Description:** Use `fetch` for HTTP requests, not `axios` or `superagent` or other libraries.
+
+**Path patterns:** `**/*.ts`, `**/*.js`, `**/*.jsx`, `**/*.tsx`
+
+### Example 4: Always tag metrics with the current environment
+
+**Title:** Always tag metrics with the current environment
+
+**Description:** Always include a `env` tag with the current environment when emitting metrics, for example, `env:prod` or `env:dev`.
+
+**Path patterns:** `*/*.go`, `*/*.java`
diff --git a/content/copilot/using-github-copilot/code-review/index.md b/content/copilot/using-github-copilot/code-review/index.md
new file mode 100644
index 000000000000..791f22fa08df
--- /dev/null
+++ b/content/copilot/using-github-copilot/code-review/index.md
@@ -0,0 +1,12 @@
+---
+title: Code review
+shortTitle: Code review
+intro: "Learn how to request a code review from {% data variables.product.prodname_copilot %}."
+versions:
+ feature: copilot
+topics:
+ - Copilot
+children:
+ - /using-copilot-code-review
+ - /configuring-coding-guidelines
+---
diff --git a/content/copilot/using-github-copilot/code-review/using-copilot-code-review.md b/content/copilot/using-github-copilot/code-review/using-copilot-code-review.md
new file mode 100644
index 000000000000..175575191f7d
--- /dev/null
+++ b/content/copilot/using-github-copilot/code-review/using-copilot-code-review.md
@@ -0,0 +1,188 @@
+---
+title: Using GitHub Copilot code review
+shortTitle: Using code review
+intro: "Learn how to request a code review from {% data variables.product.prodname_copilot %}."
+allowTitleToDifferFromFilename: true
+versions:
+ feature: copilot
+topics:
+ - Copilot
+---
+
+> [!NOTE]
+>
+> * {% data variables.copilot.copilot_code-review %} is in {% data variables.release-phases.public_preview %} and subject to change. Some functionality is available to all {% data variables.product.prodname_copilot_short %} subscribers, but other functionality is only available to a limited number of users. To join the waitlist, see "[Join the {% data variables.copilot.copilot_code-review_short %} waitlist](https://gh.io/copilot-code-review-waitlist)."
+> * The "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-pre-release-license-terms)" apply to your use of this product.
+
+## About {% data variables.copilot.copilot_code-review_short %}
+
+{% data variables.product.prodname_copilot %} can review your code and provide feedback. Where possible, {% data variables.product.prodname_copilot_short %}'s feedback includes suggested changes which you can apply with a couple of clicks.
+
+{% data variables.copilot.copilot_code-review_short %} supports two types of review:
+
+* **Review selection**: Highlight code and ask for an initial review _({% data variables.product.prodname_vscode %} only)_
+* **Review changes**: Request a deeper review of all your changes _({% data variables.product.github %} website and {% data variables.product.prodname_vscode %})_
+
+The current functionality and availability of the two types of review is summarized in the following table:
+
+{% rowheaders %}
+
+| Feature | Review selection | Review changes |
+| --------- | ----------------- | --------------- |
+| Description | Initial review of a highlighted section of code with feedback and suggestions | Deeper review of all changes |
+| Language support | All | C#, Go, Java, JavaScript, Markdown, Python, Ruby, TypeScript |
+| Custom coding guidelines support | No | Yes, see [Customizing {% data variables.product.prodname_copilot_short %}'s reviews with coding guidelines](#customizing-copilots-reviews-with-coding-guidelines) |
+| Environment | {% data variables.product.prodname_vscode %} | {% data variables.product.prodname_vscode %} and the {% data variables.product.github %} website |
+| Availability | {% data variables.release-phases.public_preview_caps %}, available to all {% data variables.product.prodname_copilot_short %} subscribers | {% data variables.release-phases.public_preview_caps %} with waitlist, see "[Join the {% data variables.copilot.copilot_code-review_short %} waitlist](https://gh.io/copilot-code-review-waitlist)" |
+
+{% endrowheaders %}
+
+> [!WARNING] {% data variables.product.prodname_copilot_short %} isn't guaranteed to spot all problems or issues in a pull request, and sometimes it will make mistakes. Always validate {% data variables.product.prodname_copilot_short %}'s feedback carefully, and supplement {% data variables.product.prodname_copilot_short %}'s feedback with a human review.
+
+For more information, see "[AUTOTITLE](/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-code-review)."
+
+## Requesting a review from {% data variables.product.prodname_copilot_short %}
+
+{% webui %}
+
+These instructions explain how to use {% data variables.copilot.copilot_code-review_short %} in the {% data variables.product.github %} website. To see instructions for {% data variables.product.prodname_vscode %}, use the "{% data variables.product.prodname_vscode %}" tool switcher at the top of the page.
+
+### Requesting a pull request review from {% data variables.product.prodname_copilot_short %}
+
+> [!NOTE] Requesting a pull request review from {% data variables.product.prodname_copilot_short %} is currently only available to a limited number of {% data variables.product.prodname_copilot_short %} subscribers. To join the waitlist, see "[Join the {% data variables.copilot.copilot_code-review_short %} waitlist](https://gh.io/copilot-code-review-waitlist)."
+
+1. On {% data variables.product.prodname_dotcom_the_website %}, create a pull request or navigate to an existing pull request.
+1. Open the **Reviewers** menu, then select **{% data variables.product.prodname_copilot_short %}**.
+
+ ![Screenshot of selecting '{% data variables.product.prodname_copilot_short %}' from the 'Reviewers' menu.](/assets/images/help/copilot/code-review/request-review@2x.png)
+
+1. Wait for {% data variables.product.prodname_copilot_short %} to review your pull request. This usually takes less than 30 seconds.
+
+1. Scroll down and read through {% data variables.product.prodname_copilot_short %}'s comments.
+
+ ![Screenshot of a code review left by {% data variables.product.prodname_copilot_short %}.](/assets/images/help/copilot/code-review/review-comment@2x.png)
+
+ {% data variables.product.prodname_copilot_short %} always leaves a "Comment" review, not an "Approve" review or a "Request changes" review. This means that {% data variables.product.prodname_copilot_short %}'s reviews do not count toward required reviews for the pull request, and {% data variables.product.prodname_copilot_short %}'s reviews will not block merging changes. For more details, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews)."
+
+1. {% data variables.product.prodname_copilot_short %}'s review comments behave like review comments from humans. You can add reactions to them, comment on them, resolve them and hide them.
+
+ Any comments you add to {% data variables.product.prodname_copilot_short %}'s review comments will be visible to humans, but they won't be visible to {% data variables.product.prodname_copilot_short %}, and {% data variables.product.prodname_copilot_short %} won't reply.
+
+## Working with suggested changes provided by {% data variables.product.prodname_copilot_short %}
+
+Where possible, {% data variables.product.prodname_copilot_short %}'s feedback includes suggested changes which you can apply with a couple of clicks.
+
+If you're happy with the changes, you can accept a single suggestion from {% data variables.product.prodname_copilot_short %} and commit it, or accept a group of suggestions together in a single commit. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request)."
+
+If you want to validate {% data variables.product.prodname_copilot_short %}'s suggested changes (for example by running automated tests or your linter), or if you want to make modifications before committing the suggested changes, click the **Open in Workspace** button. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request)."
+
+## Providing feedback on {% data variables.product.prodname_copilot_short %}'s reviews
+
+You can provide feedback on {% data variables.product.prodname_copilot_short %}'s comments directly within each comment. We use this information to improve the product and the quality of {% data variables.product.prodname_copilot_short %}'s suggestions.
+
+1. On a pull request review comment from {% data variables.product.prodname_copilot_short %}, click the thumbs up (:+1:) or thumbs down (:-1:) button.
+
+ ![Screenshot showing a {% data variables.copilot.copilot_code-review_short %} comment with the thumbs up and thumbs down buttons.](/assets/images/help/copilot/code-review/feedback-controls@2x.png)
+
+1. If you click the thumbs down button, you're asked to provide additional information. You can, optionally, pick the reason for your negative feedback and leave a comment before clicking **Submit feedback**.
+
+ ![Screenshot of the form for providing additional information when you give negative feedback on a comment from {% data variables.product.prodname_copilot_short %}.](/assets/images/help/copilot/code-review/feedback-modal@2x.png)
+
+## Requesting a re-review from {% data variables.product.prodname_copilot_short %}
+
+When you push changes to a pull request that {% data variables.product.prodname_copilot_short %} has reviewed, it won't automatically re-review your changes.
+
+To request a re-review from {% data variables.product.prodname_copilot_short %}, click the {% octicon "sync" aria-label="Re-request review" %} button next to {% data variables.product.prodname_copilot_short %}'s name in the **Reviewers** menu. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review)."
+
+> [!NOTE] When re-reviewing a pull request, {% data variables.product.prodname_copilot_short %} may repeat the same comments again, even if they have been dismissed with the "Resolve conversation" button or downvoted with the thumbs down (:-1:) button.
+
+## Enabling automatic reviews from {% data variables.product.prodname_copilot_short %}
+
+By default, you will have to manually request a review from {% data variables.product.prodname_copilot_short %} on each pull request.
+
+You can enable automatic reviews from {% data variables.product.prodname_copilot_short %} on all pull requests using rulesets configured at the repository level or organization level. For more information, see "[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets)."
+
+To turn this on, enable the **Request pull request review from {% data variables.product.prodname_copilot_short %}** branch rule, nested under **Require a pull request before merging**.
+
+![Screenshot of the "Request pull request review from {% data variables.product.prodname_copilot_short %}" branch rule.](/assets/images/help/copilot/code-review/request-review-branch-rule@2x.png)
+
+## Customizing {% data variables.product.prodname_copilot_short %}'s reviews with coding guidelines
+
+{% data reusables.copilot.code-review.custom-coding-guidelines %}
+
+![Screenshot of a comment produced from a custom coding guideline.](/assets/images/help/copilot/code-review/coding-guidelines-comment@2x.png)
+
+{% endwebui %}
+
+{% vscode %}
+
+These instructions explain how to use {% data variables.copilot.copilot_code-review_short %} in {% data variables.product.prodname_vscode %}. To see instructions for the {% data variables.product.github %} website, use the "Web browser" tool switcher at the top of the page.
+
+> [!NOTE] {% data variables.copilot.copilot_code-review_short %} is only available in {% data variables.product.prodname_vscode %} with version 0.22 or later of the {% data variables.product.prodname_copilot_chat %} extension.
+
+### Reviewing a selection of code
+
+You can request an initial review of a highlighted selection of code in {% data variables.product.prodname_vscode %}.
+
+1. In {% data variables.product.prodname_vscode %}, select the code you want to review.
+1. Open the {% data variables.product.prodname_vscode_command_palette_shortname %}
+ * For Mac:
+ * Use: Shift+Command+P
+ * For Windows or Linux:
+ * Use Ctrl+Shift+P
+1. In the command palette, search for and select **{% data variables.product.prodname_copilot %}: Review and Comment**.
+
+ ![Screenshot of the command palette in {% data variables.product.prodname_vscode %} with the **{% data variables.product.prodname_copilot %}: Review and Comment** command selected.](/assets/images/help/copilot/vsc-review-and-comment.png)
+
+1. Wait for {% data variables.product.prodname_copilot_short %} to review your changes. This usually takes less than 30 seconds.
+
+ ![Screenshot of the progress indicator when {% data variables.product.prodname_copilot_short %} is performing a review in {% data variables.product.prodname_vscode %}.](/assets/images/help/copilot/code-review/vscode-review-progress@2x.png)
+
+1. If {% data variables.product.prodname_copilot_short %} has any comments, they will be shown inline in your file, and in the **Problems** tab.
+
+ ![Screenshot of a comment from {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_vscode %}.](/assets/images/help/copilot/code-review/vscode-comment@2x.png)
+
+### Reviewing changes
+
+> [!NOTE] Reviewing changes is currently only available to a limited number of {% data variables.product.prodname_copilot_short %} subscribers. To join the waitlist, see "[Join the {% data variables.copilot.copilot_code-review_short %} waitlist](https://gh.io/copilot-code-review-waitlist)."
+
+You can request a review for your staged or unstaged changes in {% data variables.product.prodname_vscode %}.
+
+1. In {% data variables.product.prodname_vscode_shortname %}, switch to the **Source Control** tab.
+1. To request a review on your unstaged changes, hover over **Changes** in the sidebar, and then click the **{% data variables.copilot.copilot_code-review_short %} - Changes** button.
+
+ ![Screenshot of the "{% data variables.copilot.copilot_code-review_short %} - Changes" button in {% data variables.product.prodname_vscode %}. The code review button is outlined in dark orange.](/assets/images/help/copilot/code-review/vscode-review-button@2x.png)
+
+1. To request a review on your staged changes, hover over **Staged Changes** in the sidebar, and then click the **{% data variables.copilot.copilot_code-review_short %} - Staged Changes** button.
+
+1. Wait for {% data variables.product.prodname_copilot_short %} to review your changes. This usually takes less than 30 seconds.
+
+ ![Screenshot of the progress indicator when {% data variables.product.prodname_copilot_short %} is performing a review in {% data variables.product.prodname_vscode %}.](/assets/images/help/copilot/code-review/vscode-review-progress@2x.png)
+
+1. If {% data variables.product.prodname_copilot_short %} has any comments, they will be shown inline in your file(s), and in the **Problems** tab.
+
+ ![Screenshot of a comment from {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_vscode %}.](/assets/images/help/copilot/code-review/vscode-comment@2x.png)
+
+## Working with suggested changes provided by {% data variables.product.prodname_copilot_short %}
+
+Where possible, {% data variables.product.prodname_copilot_short %}'s feedback includes suggested changes which you can apply with a single click.
+
+![Screenshot of a comment from {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_vscode %} with a suggested change.](/assets/images/help/copilot/code-review/vscode-comment@2x.png)
+
+If you're happy with the change, you can accept a suggestion from {% data variables.product.prodname_copilot_short %} by clicking the **Apply and Go To Next** button. Any changes you apply will not be automatically committed.
+
+If you don't want to apply {% data variables.product.prodname_copilot_short %}'s suggested change, click the **Discard and Go to Next** button.
+
+## Providing feedback on {% data variables.product.prodname_copilot_short %}'s reviews
+
+You can provide feedback on {% data variables.product.prodname_copilot_short %}'s comments directly within each comment. We use this information to improve the product and the quality of {% data variables.product.prodname_copilot_short %}'s suggestions.
+
+To provide feedback, hover over the comment and click the thumbs up or thumbs down button.
+
+![Screenshot of a comment from {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_vscode %} with feedback buttons displayed. The buttons are outlined in dark orange.](/assets/images/help/copilot/code-review/vscode-comment-feedback@2x.png)
+
+## Customizing {% data variables.product.prodname_copilot_short %}'s reviews with coding guidelines
+
+{% data reusables.copilot.code-review.custom-coding-guidelines %}
+
+{% endvscode %}
diff --git a/content/copilot/using-github-copilot/example-use-cases/index.md b/content/copilot/using-github-copilot/example-use-cases/index.md
index ad99c8ded568..364e2b47a5e2 100644
--- a/content/copilot/using-github-copilot/example-use-cases/index.md
+++ b/content/copilot/using-github-copilot/example-use-cases/index.md
@@ -9,4 +9,5 @@ topics:
children:
- /example-prompts-for-copilot-chat
- /refactoring-code-with-github-copilot
+ - /writing-tests-with-github-copilot
---
diff --git a/content/copilot/using-github-copilot/example-use-cases/writing-tests-with-github-copilot.md b/content/copilot/using-github-copilot/example-use-cases/writing-tests-with-github-copilot.md
new file mode 100644
index 000000000000..0765862adf71
--- /dev/null
+++ b/content/copilot/using-github-copilot/example-use-cases/writing-tests-with-github-copilot.md
@@ -0,0 +1,314 @@
+---
+title: Writing tests with GitHub Copilot
+intro: 'Use {% data variables.product.prodname_copilot_short %} to generate unit and integration tests, and help improve code quality.'
+topics:
+ - Copilot
+versions:
+ feature: copilot
+shortTitle: Write tests
+---
+
+## Introduction
+
+{% data variables.product.prodname_copilot %} can assist you in developing tests quickly and improving productivity. In this article, we’ll demonstrate how you can use {% data variables.product.prodname_copilot_short %} to write both unit and integration tests. While {% data variables.product.prodname_copilot_short %} performs well when generating tests for basic functions, complex scenarios require more detailed prompts and strategies. This article will walk through practical examples of using {% data variables.product.prodname_copilot_short %} to break down tasks and verify code correctness.
+
+## Prerequisites
+
+Before getting started you must have the following:
+* A [{% data variables.product.prodname_copilot %} subscription plan](/copilot/about-github-copilot/subscription-plans-for-github-copilot).
+* {% data variables.product.prodname_vs %}, {% data variables.product.prodname_vscode %}, or any JetBrains IDE.
+* The [{% data variables.product.prodname_copilot %} extension](/copilot/managing-copilot/configure-personal-settings/installing-the-github-copilot-extension-in-your-environment) installed in your IDE.
+
+## Writing unit tests with {% data variables.product.prodname_copilot_chat_short %}
+
+In this section, we’ll explore how to use {% data variables.product.prodname_copilot_chat %} to generate unit tests for a Python class. This example demonstrates how you can use {% data variables.product.prodname_copilot_short %} to create unit tests for a class like `BankAccount`. We will show you how to prompt {% data variables.product.prodname_copilot_short %} to generate tests, execute them, and verify the results.
+
+### Example class: `BankAccount`
+
+Let’s start with a class `BankAccount` that contains methods for depositing, withdrawing, and getting the balance of an account. Create a new file `bank_account.py` in a {% data variables.product.github %} repository and add the following `BankAccount` class in Python.
+
+```python
+class BankAccount:
+ def __init__(self, initial_balance=0):
+ if initial_balance < 0:
+ raise ValueError("Initial balance cannot be negative.")
+ self.balance = initial_balance
+
+ def deposit(self, amount):
+ if amount <= 0:
+ raise ValueError("Deposit amount must be positive.")
+ self.balance += amount
+
+ def withdraw(self, amount):
+ if amount <= 0:
+ raise ValueError("Withdrawal amount must be positive.")
+ if amount > self.balance:
+ raise ValueError("Cannot withdraw more than the current balance.")
+ self.balance -= amount
+
+ def get_balance(self):
+ return self.balance
+```
+
+### Generating unit tests with {% data variables.product.prodname_copilot_chat_short %}
+
+You can prompt Copilot with a request to write tests that cover a range of scenarios. Be specific with your test requirements to get the best results. The following is an example prompt you can use to generate unit tests for the `BankAccount` class.
+
+**Prompt:** _Develop a comprehensive suite of unit tests for the BankAccount() function in Python. Write multiple test methods that cover a wide range of scenarios, including edge cases, exception handling, and data validation._
+
+This prompt does a few important things:
+* **Scope**: It explicitly asks for a comprehensive suite of unit tests, so that {% data variables.product.prodname_copilot_short %} generates more than just basic tests, covering a variety of potential use cases.
+* **Scenarios**: The prompt specifies that the tests should include:
+ * **Edge cases**: Tests for boundary conditions (e.g., negative values for deposits or withdrawals, withdrawing more than the available balance).
+ * **Exception handling**: Tests for errors that should be raised when certain invalid actions occur (e.g., withdrawing more than the available balance, depositing negative amounts).
+ * **Data validation**: Ensures that inputs are correctly validated and handled by the methods.
+
+{% data variables.product.prodname_copilot_short %} will give you a response like the following.
+
+```python
+import unittest
+from bank_account import BankAccount
+
+class TestBankAccount(unittest.TestCase):
+ def setUp(self):
+ self.account = BankAccount()
+
+ def test_initial_balance(self):
+ self.assertEqual(self.account.get_balance(), 0)
+
+ def test_deposit_positive_amount(self):
+ self.account.deposit(100)
+ self.assertEqual(self.account.get_balance(), 100)
+
+ def test_withdraw_within_balance(self):
+ self.account.deposit(100)
+ self.account.withdraw(50)
+ self.assertEqual(self.account.get_balance(), 50)
+
+ def test_deposit_negative_amount_raises_error(self):
+ with self.assertRaises(ValueError):
+ self.account.deposit(-100)
+
+ def test_withdraw_negative_amount_raises_error(self):
+ with self.assertRaises(ValueError):
+ self.account.withdraw(-50)
+
+ def test_withdraw_more_than_balance_raises_error(self):
+ self.account.deposit(100)
+ with self.assertRaises(ValueError):
+ self.account.withdraw(200)
+
+ def test_initial_balance_negative_raises_error(self):
+ with self.assertRaises(ValueError):
+ BankAccount(-100)
+
+if __name__ == '__main__':
+ unittest.main()
+```
+
+### Running the tests cases
+
+The test suite generated by {% data variables.product.prodname_copilot_short %} includes a test case for each scenario specified in the prompt. Each function in the `BankAccount` class is tested for a range of conditions, including valid operations like deposits and withdrawals, as well as edge cases such as negative amounts and attempts to withdraw more than the available balance.
+
+Once {% data variables.product.prodname_copilot_short %} has generated the test suite to your satisfaction, add the code to a new file `test_bank_account.py`. You can ask it how to run the tests.
+
+**Prompt:** _"How do I run these unit tests in Python using the unittest framework?"_
+
+{% data variables.product.prodname_copilot_short %} will give you the following bash command.
+
+```bash
+python -m unittest test_bank_account.py
+```
+
+After running the tests, you will see the output in your terminal or IDE. If all tests pass, you can be confident that your `BankAccount` class is working as expected.
+
+#### Slash command
+
+Additionally, you can prompt {% data variables.product.prodname_copilot_short %} to write a full suite of unit tests with the `/tests` slash command. Ensure that you have the file open on the current tab of your IDE and {% data variables.product.prodname_copilot_short %} will generate unit tests for that file. The tests that {% data variables.product.prodname_copilot_short %} generates may not cover all scenarios, so you should always review the generated code and add any additional tests that may be necessary.
+
+> [!TIP] If you ask {% data variables.product.prodname_copilot_short %} to write tests for a code file that is not already covered by unit tests, you can provide {% data variables.product.prodname_copilot_short %} with useful context by opening one or more existing test files in adjacent tabs in your editor. {% data variables.product.prodname_copilot_short %} will be able to see the testing framework you use and will be more likely to write a test that is consistent with your existing tests.
+
+{% data variables.product.prodname_copilot_short %} will generate a unit test suite such as the following.
+
+```python
+import unittest
+from bank_account import BankAccount
+
+class TestBankAccount(unittest.TestCase):
+ def setUp(self):
+ self.account = BankAccount()
+
+ def test_initial_balance(self):
+ self.assertEqual(self.account.get_balance(), 0)
+```
+
+## Writing integration tests with {% data variables.product.prodname_copilot_short %}
+
+Integration tests are essential for ensuring that the various components of your system work correctly when combined. In this section, we’ll extend our `BankAccount` class to include interactions with an external service `NotificationSystem` and use mocks to test the system’s behavior without needing real connections. The goal of the integration tests is to verify the interaction between the `BankAccount` class and the `NotificationSystem` services, ensuring that they work together correctly.
+
+### Example class: `BankAccount` with notification services
+
+Let's update the `BankAccount` class to include interactions with an external service such as a `NotificationSystem` that sends notifications to users. `NotificationSystem` represents the integration that would need to be tested.
+
+Update the `BankAccount` class in the `bank_account.py` file with the following code snippet.
+
+```python
+class BankAccount:
+ def __init__(self, initial_balance=0, notification_system=None):
+ if initial_balance < 0:
+ raise ValueError("Initial balance cannot be negative.")
+ self.balance = initial_balance
+ self.notification_system = notification_system
+
+ def deposit(self, amount):
+ if amount <= 0:
+ raise ValueError("Deposit amount must be positive.")
+ self.balance += amount
+ if self.notification_system:
+ self.notification_system.notify(f"Deposited {amount}, new balance: {self.balance}")
+
+ def withdraw(self, amount):
+ if amount <= 0:
+ raise ValueError("Withdrawal amount must be positive.")
+ if amount > self.balance:
+ raise ValueError("Cannot withdraw more than the current balance.")
+ self.balance -= amount
+
+ if self.notification_system:
+ self.notification_system.notify(f"Withdrew {amount}, new balance: {self.balance}")
+
+ def get_balance(self):
+ return self.balance
+```
+
+Here we'll break down our request for {% data variables.product.prodname_copilot_short %} to write integration tests for the `BankAccount` class into smaller, more manageable pieces. This will help {% data variables.product.prodname_copilot_short %} generate more accurate and relevant tests.
+
+**Prompt:** _"Write integration tests for the `deposit` function in the `BankAccount` class. Use mocks to simulate the `NotificationSystem` and verify that it is called correctly after a deposit."_
+
+This prompt does a few important things:
+* **Scope**: It specifies integration tests, focusing on the interaction between the `deposit` function and the `NotificationSystem`, rather than just unit tests.
+* **Mocks**: It explicitly asks for the use of mocks to simulate the `NotificationSystem`, ensuring that the interaction with external systems is tested without relying on their actual implementation.
+* **Verification**: The prompt emphasizes verifying that the `NotificationSystem` is called correctly after a deposit, ensuring that the integration between the components works as expected.
+* **Specificity**: The prompt clearly states the method (`deposit`) and the class (`BankAccount`) to be tested.
+
+> [!TIP] If {% data variables.product.prodname_copilot_short %} is producing invalid tests, provide examples of inputs and outputs for the function you want to test. This will help {% data variables.product.prodname_copilot_short %} evaluate the expected behavior of the function.
+
+{% data variables.product.prodname_copilot_short %} will generate a test suite like the following.
+
+```python
+import unittest
+from unittest.mock import Mock
+from bank_account import BankAccount
+
+class TestBankAccountIntegration(unittest.TestCase):
+ def setUp(self):
+ self.notification_system = Mock()
+
+ def test_deposit_with_notification(self):
+ account = BankAccount(initial_balance=100, notification_system=self.notification_system)
+ account.deposit(50)
+ self.assertEqual(account.get_balance(), 150)
+ self.notification_system.notify.assert_called_once_with("Deposited 50, new balance: 150")
+
+if __name__ == '__main__':
+ unittest.main()
+```
+
+Add the generated code to a new file `test_bank_account_integration.py`.
+
+### Improving on the test cases
+
+The prompt above generated a single test case that verifies the `NotificationSystem` is called when a valid deposit is made. However, it doesn't cover cases where an error is raised during the deposit. In those scenarios, the `NotificationSystem` should not be called. We need to add a test case that handles invalid deposits and ensure the notification system is not triggered.
+
+**Prompt:** _"Add a test case for invalid deposit amounts to verify the function raises the correct exceptions and that the `NotificationService` is not called."_
+
+{% data variables.product.prodname_copilot_short %} will generate a test case such as the following.
+
+```python
+ def test_deposit_negative_amount_raises_error(self):
+ account = BankAccount(initial_balance=100, notification_system=self.notification_system)
+ with self.assertRaises(ValueError):
+ account.deposit(0)
+ self.notification_system.notify.assert_not_called()
+```
+
+### Asking about areas of improvement
+
+Now that we've written test cases to validate the integration functionality for deposits, this is a great opportunity to search for improvements within the test suite. While the current tests are functional, we can prompt {% data variables.product.prodname_copilot_short %} to evalulate code coverage and suggest areas of improvement.
+
+**Prompt:** _"What additional tests should be included to ensure full coverage for the integration between the `BankAccount` class and the `NotificationSystem`?"_
+
+Prompting Copilot with this question can help you identify missing test cases that may have been overlooked.
+In this situation, while we tested valid and invalid deposits, we haven't yet covered the withdrawal functionality.
+
+{% data variables.product.prodname_copilot_short %} will generate an updated test suite such as the following.
+
+
+ Click to expand the full generated code example
+
+```python
+import unittest
+from unittest.mock import Mock
+from bank_account import BankAccount
+
+class TestBankAccountIntegration(unittest.TestCase):
+ def setUp(self):
+ self.notification_system = Mock()
+
+ def test_deposit_with_notification(self):
+ account = BankAccount(initial_balance=100, notification_system=self.notification_system)
+ account.deposit(50)
+ self.assertEqual(account.get_balance(), 150)
+ self.notification_system.notify.assert_called_once_with("Deposited 50, new balance: 150")
+
+ def test_deposit_negative_amount_raises_error(self):
+ account = BankAccount(initial_balance=100, notification_system=self.notification_system)
+ with self.assertRaises(ValueError):
+ account.deposit(-50)
+ self.notification_system.notify.assert_not_called()
+
+ def test_deposit_zero_amount_raises_error(self):
+ account = BankAccount(initial_balance=100, notification_system=self.notification_system)
+ with self.assertRaises(ValueError):
+ account.deposit(0)
+ self.notification_system.notify.assert_not_called()
+
+ def test_withdraw_with_notification(self):
+ account = BankAccount(initial_balance=100, notification_system=self.notification_system)
+ account.withdraw(30)
+ self.assertEqual(account.get_balance(), 70)
+ self.notification_system.notify.assert_called_once_with("Withdrew 30, new balance: 70")
+
+ def test_withdraw_exceeding_balance_raises_error(self):
+ account = BankAccount(initial_balance=100, notification_system=self.notification_system)
+ with self.assertRaises(ValueError):
+ account.withdraw(150)
+ self.notification_system.notify.assert_not_called()
+
+ def test_withdraw_negative_amount_raises_error(self):
+ account = BankAccount(initial_balance=100, notification_system=self.notification_system)
+ with self.assertRaises(ValueError):
+ account.withdraw(-30)
+ self.notification_system.notify.assert_not_called()
+
+ def test_withdraw_zero_amount_raises_error(self):
+ account = BankAccount(initial_balance=100, notification_system=self.notification_system)
+ with self.assertRaises(ValueError):
+ account.withdraw(0)
+ self.notification_system.notify.assert_not_called()
+
+ def test_initial_negative_balance_raises_error(self):
+ with self.assertRaises(ValueError):
+ BankAccount(initial_balance=-100, notification_system=self.notification_system)
+
+if __name__ == '__main__':
+ unittest.main()
+```
+
+
+
+Once Copilot has generated the test suite to your satisfaction, run the tests with command below to verify the results.
+
+```bash
+python -m unittest test_bank_account_integration.py
+```
diff --git a/content/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot.md b/content/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot.md
index 2c77d955dfac..90b992745964 100644
--- a/content/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot.md
+++ b/content/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot.md
@@ -408,6 +408,45 @@ If you want to accept the next line of the suggestion, you will need to set a cu
{% endazure_data_studio %}
+{% xcode %}
+
+{% data reusables.copilot.xcode-beta-note %}
+
+## About {% data variables.product.prodname_copilot %} for Xcode
+
+This guide demonstrates how to get coding suggestions from {% data variables.product.prodname_copilot %} for Xcode. To see instructions for other popular coding environments, use the tool switcher at the top of the page.
+
+## Prerequisites
+
+* **Subscription to {% data variables.product.prodname_copilot_short %}**. To use {% data variables.product.prodname_copilot %} for Xcode, you must have an active {% data variables.product.prodname_copilot %} subscription. {% data reusables.copilot.subscription-prerequisite %}
+
+* **Compatible versions of Xcode and macOS**. To use {% data variables.product.prodname_copilot %} for Xcode you must have Xcode version 8.0 or above and macOS Monterey (12.0) or above installed. See [Xcode](https://developer.apple.com/xcode/) on the Apple Developer site.
+
+* **{% data variables.product.prodname_copilot %} extension for Xcode**. To use {% data variables.product.prodname_copilot %} for Xcode, you must install the {% data variables.product.prodname_copilot %} for Xcode extension. See "[AUTOTITLE](/copilot/configuring-github-copilot/installing-the-github-copilot-extension-in-your-environment)."
+
+## Getting code suggestions
+
+{% data variables.product.prodname_copilot %} offers coding suggestions as you type. For example, type this function
+signature in a Swift file:
+
+```shell copy
+func CalculateDaysBetweenDates(
+```
+
+{% data variables.product.prodname_copilot %} will automatically suggest an entire function body in grayed text. To accept the first line of a suggestion, press Tab. To view the full suggestion, hold Option, and to accept the full suggestion, press Option+Tab.
+
+### Improving code suggestions
+
+If you encounter issues with code suggestions, such as conflicting or missing suggestions, you can try the following:
+
+* **Disable Xcode's native predictive text completion**: To avoid receiving two sets of code suggestions, you can disable Xcode's native predictive text completion. You can find this setting in the Xcode settings in the "Editing" tab under "Text Editing".
+* **Check for duplication detection in {% data variables.product.prodname_copilot_short %}**: If you receive limited or no suggestions from {% data variables.product.prodname_copilot_short %}, you may have duplication detection enabled. For more information on duplication detection, see "[AUTOTITLE](/copilot/configuring-github-copilot/configuring-your-personal-github-copilot-settings-on-githubcom#enabling-or-disabling-suggestions-matching-public-code)."
+* **Check for updates and restart Xcode**: Ensure you have the latest version of {% data variables.product.prodname_copilot_short %} for Xcode in the extension application and restart Xcode.
+
+You can also open an issue in the [{% data variables.product.prodname_copilot_short %} for Xcode repository](https://github.com/github/CopilotForXcode).
+
+{% endxcode %}
+
## Next steps
* **Learn how to write effective prompts** - See "[AUTOTITLE](/copilot/using-github-copilot/prompt-engineering-for-github-copilot)."
diff --git a/content/copilot/using-github-copilot/index.md b/content/copilot/using-github-copilot/index.md
index 6a282704dc49..abcf9f43add9 100644
--- a/content/copilot/using-github-copilot/index.md
+++ b/content/copilot/using-github-copilot/index.md
@@ -1,7 +1,7 @@
---
title: Using GitHub Copilot
shortTitle: Use GitHub Copilot
-intro: 'Use {% data variables.product.prodname_copilot %} to increase your productivity.'
+intro: "Use {% data variables.product.prodname_copilot %} to increase your productivity."
versions:
feature: copilot
topics:
@@ -10,16 +10,20 @@ children:
- /best-practices-for-using-github-copilot
- /getting-code-suggestions-in-your-ide-with-github-copilot
- /asking-github-copilot-questions-in-your-ide
- - /asking-github-copilot-questions-in-githubcom
+ - /asking-github-copilot-questions-in-github
- /asking-github-copilot-questions-in-github-mobile
- - /creating-a-pull-request-summary-with-github-copilot
+ - /asking-github-copilot-questions-in-windows-terminal
- /using-copilot-text-completion
+ - /code-review
- /using-github-copilot-in-the-command-line
- /prompt-engineering-for-github-copilot
- /using-extensions-to-integrate-external-tools-with-copilot-chat
+ - /using-claude-sonnet-in-github-copilot
- /finding-public-code-that-matches-github-copilot-suggestions
+ - /using-github-copilot-for-pull-requests
- /example-use-cases
redirect_from:
- /copilot/github-copilot-chat
- /copilot/github-copilot-in-the-cli
---
+
diff --git a/content/copilot/using-github-copilot/using-claude-sonnet-in-github-copilot.md b/content/copilot/using-github-copilot/using-claude-sonnet-in-github-copilot.md
new file mode 100644
index 000000000000..3e34fe1af9d3
--- /dev/null
+++ b/content/copilot/using-github-copilot/using-claude-sonnet-in-github-copilot.md
@@ -0,0 +1,55 @@
+---
+title: Using Claude 3.5 Sonnet in GitHub Copilot
+allowTitleToDifferFromFilename: true
+shortTitle: 'Use {% data variables.copilot.copilot_claude_sonnet %}'
+intro: 'Learn how to enable {% data variables.copilot.copilot_claude_sonnet %} for {% ifversion fpt %}yourself or{% endif %} your organization{% ifversion ghec %} or enterprise{% endif %}.'
+versions:
+ feature: copilot
+topics:
+ - Copilot
+---
+
+> [!NOTE] {% data variables.copilot.copilot_claude_sonnet %} is in {% data variables.release-phases.public_preview %} and subject to change. The "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-pre-release-license-terms)" apply to your use of this product.
+
+## {% data variables.copilot.copilot_claude_sonnet %} announcement and rollout
+
+{% data variables.copilot.copilot_claude_sonnet %} availability in {% data variables.product.prodname_copilot %} was announced on October 29th at GitHub Universe 2024. Access to the model will roll out progressively over an estimated two-week period to all {% data variables.product.prodname_copilot_short %} plans. This new model will initially be available in {% data variables.product.prodname_copilot_chat_short %} for {% data variables.product.prodname_vscode %} and in immersive chat on the {% data variables.product.github %} website.
+
+To know if you or your organization has access to enable {% data variables.copilot.copilot_claude_sonnet %}, you can check whether the policy is present at the bottom of [your personal {% data variables.product.prodname_copilot_short %} policy settings](https://github.com/settings/copilot). If you don't see a policy for **Anthropic {% data variables.copilot.copilot_claude_sonnet %} for {% data variables.product.prodname_copilot_short %}**, you have not yet received access via the rollout.
+
+## About {% data variables.copilot.copilot_claude_sonnet %} on GitHub
+
+{% data variables.copilot.copilot_claude_sonnet %} excels at coding tasks across the entire software development lifecycle, from initial design to bug fixes, maintenance to optimizations. Learn more about the [model's capabilities](https://www.anthropic.com/claude/sonnet) or read the [model card](https://assets.anthropic.com/m/61e7d27f8c8f5919/original/Claude-3-Model-Card.pdf).
+
+{% data variables.product.prodname_copilot %} uses {% data variables.copilot.copilot_claude_sonnet %} hosted on Amazon Web Services. When using {% data variables.copilot.copilot_claude_sonnet %}, prompts and metadata are sent to Amazon's Bedrock service, which makes the [following data commitments](https://docs.aws.amazon.com/bedrock/latest/userguide/data-protection.html): _Amazon Bedrock doesn't store or log your prompts and completions. Amazon Bedrock doesn't use your prompts and completions to train any AWS models and doesn't distribute them to third parties_.
+
+When using {% data variables.copilot.copilot_claude_sonnet %}, input prompts and output completions continue to run through {% data variables.product.prodname_copilot %}'s content filters for public code matching, when applied, along with those for harmful, offensive, or off-topic content.
+
+## Configuring access
+
+You must enable access to {% data variables.copilot.copilot_claude_sonnet %} before you can use the model.
+
+{% ifversion fpt %}
+
+### Setup for individual use
+
+If you have a {% data variables.product.prodname_copilot_individuals_short %} subscription, you can enable {% data variables.copilot.copilot_claude_sonnet %} in two ways:
+
+* The first time you choose to use {% data variables.copilot.copilot_claude_sonnet %} with {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vscode %}, or in the immersive view of {% data variables.product.prodname_copilot_chat_short %}, you will be prompted to allow access to the model.
+
+ Clicking **Allow** enables you to use {% data variables.copilot.copilot_claude_sonnet %} and updates the policy in your personal settings on {% data variables.product.github %}.
+
+* You can enable the model directly in your personal settings on the {% data variables.product.github %} website. See "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber#enabling-or-disabling-claude-35-sonnet)."
+
+{% endif %}
+
+### Setup for organization {% ifversion ghec %}and enterprise{% endif %} use
+
+As an {% ifversion ghec %}enterprise or{% endif %} organization owner, you can enable or disable {% data variables.copilot.copilot_claude_sonnet %} for everyone who has been assigned a {% ifversion ghec %}{% data variables.product.prodname_copilot_enterprise_short %} or {% endif %}{% data variables.product.prodname_copilot_business_short %} seat through your {% ifversion ghec %}enterprise or {% endif %}organization. See "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization){% ifversion ghec %}" and "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise){% endif %}."
+
+## Using {% data variables.copilot.copilot_claude_sonnet %}
+
+For details of how to change the model for {% data variables.product.prodname_copilot_chat_short %}, see:
+
+* "[AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom#changing-your-ai-model)"
+* "[AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide#changing-your-ai-model)"
diff --git a/content/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot.md b/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/creating-a-pull-request-summary-with-github-copilot.md
similarity index 97%
rename from content/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot.md
rename to content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/creating-a-pull-request-summary-with-github-copilot.md
index e92f8e73a480..9b217c623cb1 100644
--- a/content/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot.md
+++ b/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/creating-a-pull-request-summary-with-github-copilot.md
@@ -7,6 +7,7 @@ versions:
topics:
- Copilot
redirect_from:
+ - /copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot
- /copilot/github-copilot-enterprise/copilot-pull-request-summaries/creating-a-pull-request-summary-with-github-copilot
- /copilot/github-copilot-enterprise/copilot-pull-request-summaries
---
diff --git a/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/index.md b/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/index.md
new file mode 100644
index 000000000000..ba3ac0a0197f
--- /dev/null
+++ b/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/index.md
@@ -0,0 +1,12 @@
+---
+title: Using GitHub Copilot for pull requests
+shortTitle: '{% data variables.product.prodname_copilot_short %} for pull requests'
+intro: 'Learn how {% data variables.product.prodname_copilot_short %} can help you work on pull requests.'
+versions:
+ feature: copilot
+topics:
+ - Copilot
+children:
+ - /using-copilot-to-help-you-work-on-a-pull-request
+ - /creating-a-pull-request-summary-with-github-copilot
+---
diff --git a/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request.md b/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request.md
new file mode 100644
index 000000000000..ecaae44c203c
--- /dev/null
+++ b/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request.md
@@ -0,0 +1,213 @@
+---
+title: Using Copilot to help you work on a pull request
+shortTitle: Working on a PR
+intro: 'You can iterate, validate, and integrate suggested changes to code by using {% data variables.product.prodname_copilot_workspace %}.'
+versions:
+ feature: copilot-hadron
+topics:
+ - Copilot
+---
+
+> [!NOTE] {% data variables.product.prodname_copilot_workspace %} is currently in {% data variables.release-phases.public_preview %} and is subject to change.
+
+## About using {% data variables.product.prodname_copilot_short %} to help you work on your pull requests
+
+After you create a pull request, you can continue working on the PR on the {% data variables.product.github %} website. This article is about {% data variables.product.prodname_copilot_workspace %}, which provides a {% data variables.product.prodname_copilot_short %}-enabled environment for:
+
+* **Refining** your pull requests
+* **Validating** changes
+* **Integrating** suggestions from reviewers
+
+{% data variables.product.prodname_copilot_workspace %} enables you to work on your pull requests in one place - on {% data variables.product.github %} - from pull request creation to merge.
+
+{% data variables.product.prodname_copilot_short %} can help with pull requests in other ways too. These are explained in separate articles. {% data variables.product.prodname_copilot_short %} can:
+* Write a pull request summary for you - see "[AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/creating-a-pull-request-summary-with-github-copilot)."
+* Review a pull request for you - see "[AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review)."
+* Suggest fixes for coding problems identified by {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} - see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning)."
+
+### Benefits of {% data variables.product.prodname_copilot_workspace %}
+
+{% data variables.product.prodname_copilot_workspace %}:
+
+* Allows you to work on a pull request without having to switch back and forward between the {% data variables.product.github %} website and your IDE.
+* Gives you easy access to view/test/modify/apply coding suggestions, from {% data variables.product.prodname_copilot_short %} code reviews and {% data variables.product.prodname_copilot_autofix_short %}, as well as reviews by human reviewers.
+* Gives you {% data variables.product.prodname_copilot_short %} code completion suggestions on {% data variables.product.github %}. Previously these were only available in an IDE.
+* Shows you a list of files changed by the pull request, within the browser-based editor, but also allows you to find and edit any file from across the repo.
+* Enables you to build, test, and run your code directly from the {% data variables.product.prodname_copilot_workspace_short %} environment on {% data variables.product.github %}.
+
+## Prerequisites
+
+Using {% data variables.product.prodname_copilot_workspace %} requires:
+
+* A {% data variables.product.prodname_copilot_short %} subscription. For more information, see "[AUTOTITLE](/copilot/about-github-copilot/subscription-plans-for-github-copilot)."
+* Admission to the {% data variables.release-phases.public_preview %} from the waitlist. To apply to join the waitlist, see "[Join the Copilot code review waitlist](https://gh.io/copilot-code-review-waitlist)."
+* An existing pull request on the {% data variables.product.github %} website. If you need help on creating a pull request, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)."
+
+Without access {% data variables.product.prodname_copilot_workspace %} you can still edit the files in pull requests by going to the **Files changed** tab, clicking the ellipsis (**...**) next to the file you want to edit, and then clicking **Edit file**.
+
+## Editing files in a pull request
+
+To work on a pull request in {% data variables.product.prodname_copilot_workspace %}:
+
+1. Click the **{% octicon "copilot" aria-hidden="true" %} Open in {% data variables.product.prodname_copilot_workspace_short %}** button on the right side of the main page of a pull request.
+
+ {% data variables.product.prodname_copilot_workspace %} opens, displaying an overview of the pull request.
+
+ At the left of the {% data variables.product.prodname_copilot_workspace %} window is a list of the files changed by the pull request.
+
+ ![Screenshot of the list of files in a PR, at the left of {% data variables.product.prodname_copilot_workspace %}.](/assets/images/help/copilot/workspace-files-in-pr.png)
+
+1. To work on a file that is not currently changed by this pull request, click **Files in this pull request** and, from the dropdown, select **All files in this repository**.
+1. Click a file in the list to open the file in the {% data variables.product.prodname_copilot_workspace_short %} editor.
+
+ The file is displayed in a diff view. You can change the view if required. See "[Changing the {% data variables.product.prodname_copilot_workspace_short %} options](#changing-the-workspace-options)" later in this article.
+
+ You can open and change multiple files before committing your changes.
+
+1. After you have finished making changes, click **Review and commit**.
+
+ The **Commit changes** panel is displayed. {% data variables.product.prodname_copilot_short %} autogenerates a commit message for you, based on the changes you have made. You can edit the message and add an extended description if you want.
+
+ ![Screenshot of the "Commit changes" panel showing an autogenerated commit message and three changed files.](/assets/images/help/copilot/workspace-commit-changes.png)
+
+ The panel lists the files you have changed. You can expand each file to see the changes you have made.
+
+1. Optionally, if you edited multiple files and you decide you don't want to commit all of the changes in a single commit, clear the check box beside the files whose changes you don't want to commit. When you click **Commit changes**, the changes you applied to those files will remain applied but uncommitted, and you can add them to the pull request in a separate commit.
+
+ > [!NOTE] If you clear the check box beside some files you may need to rewrite the commit message to avoid mentioning the changes to those files.
+
+1. Click **Commit changes**.
+
+ Alternatively, click **Reset all changes** to return the files to their current state in the pull request, losing the changes you made in the {% data variables.product.prodname_copilot_workspace_short %} editor panel. Resetting your changes cannot be undone.
+
+## Using {% data variables.product.prodname_copilot_short %} to work on pull request comments
+
+You can use {% data variables.product.prodname_copilot_workspace %} to work through all comments on your pull request, one after the other, and then commit any changes you choose to make in a single commit.
+
+1. On a comment that includes a code change suggestion, click **Open in {% data variables.product.prodname_copilot_workspace_short %}**.
+
+ ![Screenshot of a coding suggestion by {% data variables.copilot.copilot_code-review_short %}.](/assets/images/help/copilot/workspace-copilot-review-suggestion.png)
+
+ {% data variables.product.prodname_copilot_workspace %} opens, displaying the suggested change in the Suggestions panel on the right of the {% data variables.product.prodname_copilot_workspace_short %} window.
+
+1. Review the suggested change, then click one of the two buttons at the bottom of the Suggestions panel:
+
+ * **Apply** - If you agree with the suggested change.
+ * **Dismiss** - If you do not want to make the suggested change.
+
+1. If there are multiple comments in the pull request, you can step through to the next comment by clicking the **>** arrow at the bottom of the Suggestions panel.
+
+ ![Screenshot of the Suggestions panel, showing the ">" arrow and "Dismiss" and "Apply" buttons.](/assets/images/help/copilot/workspace-next-comment.png)
+
+1. Optionally, to see a list of all of the comments in the pull request, click the back arrow at the top left of the Suggestions panel.
+
+ ![Screenshot of the Suggestions panel, showing the back arrow at the top left.](/assets/images/help/copilot/workspace-all-comments.png)
+
+ If you have accepted or dismissed any suggestions, these are shown within "applied" and "dismissed" dropdowns, which make it easy to see which suggestions you have not yet dealt with.
+
+ ![Screenshot a list of comments in the Suggestions panel. Two are awaiting action. Beneath this are dropdown links headed "1 applied" and "1 dismissed."](/assets/images/help/copilot/workspace-applied-dismissed.png)
+
+1. After you have finished reviewing the suggested changes, click **Review and commit**.
+1. Optionally, if you decide you don't want to commit all of the applied changes in a single commit, clear the check box beside the files whose changes you don't want to commit. When you click **Commit changes**, the changes you applied to those files will remain applied but uncommitted, and you can add them to the pull request in a separate commit.
+1. Click **Commit changes**.
+
+ Alternatively, click **Reset all changes** to return the suggestions to their initial state, losing the apply or dismiss choices you made, and losing any changes you made by editing files directly in the {% data variables.product.prodname_copilot_workspace_short %} editor panel. Resetting your changes cannot be undone.
+
+## Chatting with {% data variables.product.prodname_copilot_short %} about a pull request
+
+1. At the top of the {% data variables.product.prodname_copilot_workspace_short %} window, click the {% octicon "copilot" aria-label="Toggle {% data variables.product.prodname_copilot_short %} button.
+1. At the bottom of the {% data variables.product.prodname_copilot_short %} panel, type a question in the "Ask {% data variables.product.prodname_copilot_short %}" box then press Enter.
+
+ You can ask questions about:
+
+ * **The currently displayed file** - for example, "how could I improve this file?"
+ * **The whole pull request** - for example, "what frameworks are referenced in this pull request?"
+ * **General programming topics** - for example, "what is the latest version of ruby?"
+
+ For more information, see "[AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom)."
+
+> [!NOTE] Currently not all {% data variables.product.prodname_copilot_chat_short %} features are available in the {% data variables.release-phases.public_preview %} of {% data variables.product.prodname_copilot_workspace %}.
+
+## Verifying your changes
+
+{% data variables.product.prodname_copilot_workspace_short %} includes a built-in terminal and a quick way to build, run, and test your code.
+
+### Opening the terminal
+
+To open the terminal, click {% octicon "terminal" aria-label="Toggle console panel" %} at the top right of the {% data variables.product.prodname_copilot_workspace_short %} editor panel.
+
+> [!NOTE] The terminal requires a codespace to be running. If you don't see the {% octicon "terminal" aria-label="Toggle console panel" %} icon, you may need to wait a few seconds for the codespace to start.
+
+### Running terminal commands
+
+You can type commands directly into the terminal, or you can use quick commands to run commonly used commands with a couple of clicks.
+
+#### Configuring personal quick commands
+
+You can configure **Build**, **Run**, and **Test** commands that you can use when you work on a specific project in {% data variables.product.prodname_copilot_workspace %}. If commands have already been configured for the repository, you can replace them with alternative commands for your own personal use.
+
+1. At the top of the {% data variables.product.prodname_copilot_workspace_short %} window, click {% octicon "gear" aria-hidden="true" %} **Configure**.
+
+ If **Build**, **Run**, and **Test** quick commands have already been defined, the {% octicon "play" aria-hidden="true" %} **Build** button is displayed instead of {% octicon "gear" aria-hidden="true" %} **Configure**. Click the dropdown arrow beside the {% octicon "play" aria-hidden="true" %} **Build** button and then click {% octicon "gear" aria-hidden="true" %} **Configure** from the dropdown menu.
+
+ ![Screenshot of the "Commands" dropdown menu with the "Configure" option highlighted with a dark orange outline.](/assets/images/help/copilot/workspace-configure-commands.png)
+
+1. In the "Configure commands" dialog, enter the commands you want to use for **Build**, **Run**, and **Test** options.
+1. Click **Save**.
+
+#### Configuring quick commands for your repository
+
+You can set default **Build**, **Run**, and **Test** commands for everyone who uses {% data variables.product.prodname_copilot_workspace %} to work on pull requests for your repository.
+
+1. Create or edit a file in the root of your repository called `.devcontainer/devcontainer.json`.
+
+ > [!NOTE] The `.devcontainer/devcontainer.json` file is a configuration file for codespaces created for a repository. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#devcontainerjson)."
+
+1. Add a `commands` section as follows, replacing the example commands shown here with the commands that people working on your repository should use.
+
+ ```json
+ {
+ "commands": {
+ "Build": "make",
+ "Run": "./bin/start",
+ "Test": "make test"
+ }
+ }
+ ```
+
+1. Click **Save**.
+
+#### Using {% data variables.product.prodname_copilot_workspace_short %} quick commands
+
+1. To run the first of the defined quick commands (typically **Build**), click the button at the top of the {% data variables.product.prodname_copilot_workspace_short %} window.
+1. To run a different quick command, click the dropdown arrow beside the button and then click the command you want to run from the dropdown menu.
+
+ ![Screenshot of the "Commands" dropdown menu with the "Run" option highlighted with a dark orange outline.](/assets/images/help/copilot/workspace-run-command.png)
+
+1. After clicking **Run**, while the process is running, you can click the dropdown arrow again and choose from options to stop or restart the process, or view the output from the run command.
+
+ ![Screenshot of the dropdown menu for a running application with the "Stop" option highlighted with a dark orange outline.](/assets/images/help/copilot/workspace-stop-command.png)
+
+#### Previewing a web application
+
+If your run command starts a web server, the {% octicon "globe" aria-label="Open preview" %} button is displayed at the top of the {% data variables.product.prodname_copilot_workspace_short %} window.
+
+Click this button to preview the server output in a new tab of your browser.
+
+## Changing the {% data variables.product.prodname_copilot_workspace_short %} options
+
+You can change how files are displayed in {% data variables.product.prodname_copilot_workspace %}.
+
+### Changing the diff view
+
+1. Click the compare picker icon ({% octicon "git-compare" aria-hidden="true" %}), at the top right of the {% data variables.product.prodname_copilot_workspace_short %} editor panel.
+1. Choose a view option:
+
+ * **Unified** - Shows changes in a single view, with added lines highlighted in green and removed lines highlighted in red.
+ * **Split** - Shows changes in a split view, with the original file on the left and the new file on the right.
+ * **Hidden** - Shows the current state of the file in this pull request, without showing what changes the PR makes.
+
+### Wrapping long lines
+
+1. Click the ellipsis (**...**), at the top right of the {% data variables.product.prodname_copilot_workspace_short %} editor panel.
+1. Click **Wrap lines** to toggle line wrapping on or off.
diff --git a/content/copilot/using-github-copilot/using-github-copilot-in-the-command-line.md b/content/copilot/using-github-copilot/using-github-copilot-in-the-command-line.md
index 9ae996f4defe..d5e09980801c 100644
--- a/content/copilot/using-github-copilot/using-github-copilot-in-the-command-line.md
+++ b/content/copilot/using-github-copilot/using-github-copilot-in-the-command-line.md
@@ -14,7 +14,7 @@ redirect_from:
## Prerequisites
-* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+* **Access to {% data variables.product.prodname_copilot %}**. See "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
* **{% data variables.product.prodname_cli %} installed**. {% data reusables.cli.cli-installation %}
* **{% data variables.product.prodname_copilot_cli_short %} extension installed**. See "[AUTOTITLE](/copilot/github-copilot-in-the-cli/installing-github-copilot-in-the-cli)."
diff --git a/content/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop.md b/content/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop.md
index fca4e2f16dda..9a073b5a746d 100644
--- a/content/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop.md
+++ b/content/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop.md
@@ -1,7 +1,7 @@
---
title: Authenticating to GitHub in GitHub Desktop
shortTitle: Authentication
-intro: 'You can securely access your account''s resources on {% data variables.product.prodname_desktop %} by authenticating to {% data variables.product.prodname_dotcom %}.'
+intro: 'You can securely access your account''s resources on {% data variables.product.prodname_desktop %} by authenticating to {% data variables.product.github %}.'
redirect_from:
- /desktop/getting-started-with-github-desktop/authenticating-to-github-using-the-browser
- /desktop/getting-started-with-github-desktop/authenticating-to-github
@@ -13,65 +13,39 @@ versions:
---
## About authentication
-To keep your account secure, you must authenticate before you can use {% data variables.product.prodname_desktop %} to access resources on {% data variables.product.prodname_dotcom %}.
+To keep your account secure, you must authenticate before you can use {% data variables.product.prodname_desktop %} to access resources on {% data variables.product.github %}.
Before you authenticate, {% data reusables.desktop.get-an-account %}
{% mac %}
-## Authenticating an account on {% data variables.product.prodname_dotcom %}
+## Authenticating to your {% data variables.product.github %} account
{% data reusables.desktop.mac-select-desktop-menu %}
-1. In the "Preferences" window, on the **Accounts** pane, click the **Sign In** button next to "GitHub.com".
-
- ![Screenshot of the "Accounts" pane in the "Preferences" window. Next to "GitHub.com", a button, labeled "Sign In", is outlined in orange.](/assets/images/help/desktop/sign-in-github.png)
-
+{% data reusables.desktop.mac-click-sign-into %}
+1. If you are signing into an account on {% data variables.product.prodname_enterprise %}, in the "Sign in" modal window, type the URL where you access {% data variables.product.github %}, then click **Continue**.
{% data reusables.desktop.sign-in-browser %}
{% data reusables.desktop.authenticate-in-browser %}
{% data reusables.desktop.2fa-in-browser %}
-1. After {% data variables.product.prodname_dotcom %} authenticates your account, follow the prompts to return to {% data variables.product.prodname_desktop %}.
-
-## Authenticating an account on {% data variables.product.prodname_ghe_server %}
-
-{% data reusables.desktop.mac-select-desktop-menu %}
-1. In the "Preferences" window, on the **Accounts** pane, click the **Sign In** button next to "{% data variables.product.prodname_enterprise %}".
-
- ![Screenshot of the "Accounts" pane in the "Preferences" window. Next to "GitHub Enterprise", a button, labeled "Sign In", is outlined in orange.](/assets/images/help/desktop/sign-in-ghes.png)
-
-1. To add an account on {% data variables.location.product_location_enterprise %}, in the "Sign in" modal window, type the URL for your instance under "Enterprise address," then click **Continue**.
-{% data reusables.desktop.sign-in-browser %}
-1. To authenticate to {% data variables.location.product_location_enterprise %} account, type your account credentials and click **Sign in**.
-
- Alternatively, if you were already signed in to {% data variables.location.product_location_enterprise %} account, follow the prompts to return to {% data variables.product.prodname_desktop %} to finish authenticating.
+1. After {% data variables.product.github %} authenticates your account, follow the prompts to return to {% data variables.product.prodname_desktop %}.
{% endmac %}
{% windows %}
-## Authenticating an account on {% data variables.product.prodname_dotcom %}
+## Authenticating to your {% data variables.product.github %} account
{% data reusables.desktop.windows-choose-options %}
-1. In the "Options" window, on the **Accounts** pane, click the **Sign In** button next to "{% data variables.product.prodname_dotcom_the_website %}".
-
- ![Screenshot of the "Accounts" pane in the "Options" window. Next to "GitHub.com", a button, labeled "Sign In", is outlined in orange.](/assets/images/help/desktop/windows-sign-in-github.png)
+{% data reusables.desktop.windows-click-sign-into %}
+1. If you are signing into an account on {% data variables.product.prodname_enterprise %}, in the "Sign in" modal window, type the URL where you access {% data variables.product.github %}, then click **Continue**.
{% data reusables.desktop.sign-in-browser %}
{% data reusables.user-settings.password-authentication-deprecation-desktop %}
{% data reusables.desktop.authenticate-in-browser %}
{% data reusables.desktop.2fa-in-browser %}
-1. After {% data variables.product.prodname_dotcom %} authenticates your account, follow the prompts to return to {% data variables.product.prodname_desktop %}.
-
-## Authenticating an account on {% data variables.product.prodname_enterprise %}
-
-{% data reusables.desktop.windows-choose-options %}
-1. In the "Options" window, on the **Accounts** pane, click the **Sign In** button next to "{% data variables.product.prodname_enterprise %}".
-
- ![Screenshot of the "Accounts" pane in the "Options" window. Next to "GitHub Enterprise", a button, labeled "Sign In", is outlined in orange.](/assets/images/help/desktop/windows-sign-in-ghes.png)
-
-1. To add a {% data variables.product.prodname_enterprise %} account, type your credentials under "Enterprise address," then click **Continue**.
-{% data reusables.desktop.retrieve-2fa %}
+1. After {% data variables.product.github %} authenticates your account, follow the prompts to return to {% data variables.product.prodname_desktop %}.
{% endwindows %}
@@ -87,7 +61,7 @@ For some errors, {% data variables.product.prodname_desktop %} will prompt you w
1. In the menu bar, select **Help**, then click **Show Logs in Finder**.
- ![Screenshot of the "GitHub Desktop" menu bar on a Mac. Under the expanded "Help" dropdown menu, a cursor hovers over "Show Logs in Finder", highlighted in blue.](/assets/images/help/desktop/mac-show-logs.png)
+ ![Screenshot of the "GitHub Desktop" menu bar on a Mac. Under the expanded "Help" dropdown menu, "Show Logs in Finder" is highlighted blue.](/assets/images/help/desktop/mac-show-logs.png)
1. Select the log file from the date when you encountered the authentication error.
@@ -97,7 +71,7 @@ For some errors, {% data variables.product.prodname_desktop %} will prompt you w
1. Use the **Help** drop-down menu and click **Show Logs in Explorer**.
- ![Screenshot of the "GitHub Desktop" menu bar on Windows. In the expanded "Help" dropdown menu, an option labeled "Show Logs in Explorer" is outlined in orange.](/assets/images/help/desktop/windows-show-logs.png)
+ ![Screenshot of the "GitHub Desktop" menu bar on Windows. In the expanded "Help" dropdown menu, "Show Logs in Explorer" is outlined in orange.](/assets/images/help/desktop/windows-show-logs.png)
1. Select the log file from the date when you encountered the authentication error.
diff --git a/content/desktop/installing-and-authenticating-to-github-desktop/installing-github-desktop.md b/content/desktop/installing-and-authenticating-to-github-desktop/installing-github-desktop.md
index 4c5c386b7ed1..b4c0920688b5 100644
--- a/content/desktop/installing-and-authenticating-to-github-desktop/installing-github-desktop.md
+++ b/content/desktop/installing-and-authenticating-to-github-desktop/installing-github-desktop.md
@@ -14,7 +14,7 @@ versions:
## About {% data variables.product.prodname_desktop %} installation
-You can install {% data variables.product.prodname_desktop %} on supported operating systems, which currently include {% data variables.desktop.mac-osx-versions %} and {% data variables.desktop.windows-versions %}. If you have an account on {% data variables.product.prodname_dotcom %} or {% data variables.product.prodname_enterprise %}, you can connect your account to {% data variables.product.prodname_desktop %}.{% ifversion fpt or ghec %} For more information about creating an account, see "[AUTOTITLE](/get-started/start-your-journey/creating-an-account-on-github)."{% endif %}{% ifversion ghec %} If you're part of an organization that uses {% data variables.product.prodname_emus %} and you do not have an account, contact your enterprise administrator.{% elsif ghes %} If you're a member of an organization that uses {% data variables.product.product_name %} and you do not have an account, contact your {% data variables.product.prodname_enterprise %} site administrator.{% endif %}
+You can install {% data variables.product.prodname_desktop %} on supported operating systems, which currently include {% data variables.desktop.mac-osx-versions %} and {% data variables.desktop.windows-versions %}. If you have a {% data variables.product.prodname_dotcom %} or {% data variables.product.prodname_enterprise %} account, you can connect your account to {% data variables.product.prodname_desktop %}.{% ifversion fpt or ghec %} For more information about creating an account, see "[AUTOTITLE](/get-started/start-your-journey/creating-an-account-on-github)."{% endif %}{% ifversion ghec %} If you're part of an organization that uses {% data variables.product.prodname_emus %} and you do not have an account, contact your enterprise administrator.{% elsif ghes %} If you're a member of an organization that uses {% data variables.product.product_name %} and you do not have an account, contact your {% data variables.product.prodname_enterprise %} site administrator.{% endif %}
{% windows %}
diff --git a/content/desktop/overview/about-github-desktop.md b/content/desktop/overview/about-github-desktop.md
index a373d3cedf51..fc2d57fb33aa 100644
--- a/content/desktop/overview/about-github-desktop.md
+++ b/content/desktop/overview/about-github-desktop.md
@@ -24,7 +24,7 @@ redirect_from:
* **Get started easily.** If you're new to Git and {% data variables.product.prodname_dotcom %}, you may find it easier to use {% data variables.product.prodname_desktop %} than to use Git on the command line. {% data variables.product.prodname_desktop %} has a graphical user interface that simplifies commands and helps you visualize changes.
* **Find commands.** Because {% data variables.product.prodname_desktop %} has a visual interface, you can easily access less-common Git commands, such as choosing which changed lines to include in a commit or adding a co-author to a commit, without needing to memorize or look up syntax.
* **Follow best practices.** {% data variables.product.prodname_desktop %} encourages best practices. For example, it helps you to create an accurate and easy-to-follow commit history so other collaborators on a project can easily review your work.
-* **Integrate with {% data variables.product.prodname_dotcom %}.** {% data variables.product.prodname_desktop %} is specifically designed for use with {% data variables.product.prodname_dotcom %}. For example, you can authenticate to {% data variables.product.github %} or {% data variables.product.prodname_ghe_server %} quickly, without needing to use a separate credential manager. You can also check out a pull request to run checks without needing to open your browser.
+* **Integrate with {% data variables.product.github %}.** {% data variables.product.prodname_desktop %} is specifically designed for use with {% data variables.product.github %}. For example, you can authenticate to {% data variables.product.github %} or {% data variables.product.prodname_enterprise %} quickly, without needing to use a separate credential manager. You can also check out a pull request to run checks without needing to open your browser.
## {% data variables.product.prodname_desktop %} workflow
diff --git a/content/desktop/overview/getting-started-with-github-desktop.md b/content/desktop/overview/getting-started-with-github-desktop.md
index 47c2b9a3f773..4429ff650f85 100644
--- a/content/desktop/overview/getting-started-with-github-desktop.md
+++ b/content/desktop/overview/getting-started-with-github-desktop.md
@@ -35,9 +35,7 @@ After you have installed {% data variables.product.prodname_desktop %}, you can
1. Before you can authenticate to {% data variables.product.prodname_dotcom %} or {% data variables.product.prodname_enterprise %}, you will need an account.{% ifversion fpt or ghec %} For more information, see "[AUTOTITLE](/get-started/start-your-journey/creating-an-account-on-github)."{% endif %}{% ifversion ghec %} If you're part of an organization that uses {% data variables.product.prodname_emus %} and you do not have an account, contact your enterprise administrator.{% elsif ghes %} If you're a member of an organization that uses {% data variables.product.product_name %} and you do not have an account, contact your {% data variables.product.prodname_enterprise %} site administrator.{% endif %}
{% data reusables.desktop.mac-select-desktop-menu %}
-1. In the "Preferences" window, on the **Accounts** pane, click one of the **Sign In** buttons to sign in to your account.
-
- ![Screenshot of the "Accounts" pane in the "Preferences" window. Next to "GitHub.com", a button, labeled "Sign In", is outlined in orange.](/assets/images/help/desktop/sign-in-github.png)
+{% data reusables.desktop.mac-click-sign-into %}
1. Follow the steps to sign in. For more information about authentication, see "[AUTOTITLE](/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop)."
{% endmac %}
@@ -45,8 +43,9 @@ After you have installed {% data variables.product.prodname_desktop %}, you can
{% windows %}
1. Before you can authenticate to {% data variables.product.prodname_dotcom %} or {% data variables.product.prodname_enterprise %}, you will need an account.{% ifversion fpt or ghec %} For more information, see "[AUTOTITLE](/get-started/start-your-journey/creating-an-account-on-github)."{% endif %}{% ifversion ghec %} If you're part of an organization that uses {% data variables.product.prodname_emus %} and you do not have an account, contact your enterprise administrator.{% elsif ghes %} If you're a member of an organization that uses {% data variables.product.product_name %} and you do not have an account, contact your {% data variables.product.prodname_enterprise %} site administrator.{% endif %}
-1. In the File drop-down menu, click **Options**. In the options window, click **Accounts** and follow the steps to sign in. For more information on authenticating, see "[AUTOTITLE](/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop)."
- ![Screenshot of the "Accounts" pane in the "Options" window. Next to "GitHub.com", a button, labeled "Sign In", is outlined in orange.](/assets/images/help/desktop/windows-sign-in-github.png)
+{% data reusables.desktop.windows-choose-options %}
+{% data reusables.desktop.windows-click-sign-into %}
+1. Follow the steps to sign in. For more information about authentication, see "[AUTOTITLE](/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop)."
{% endwindows %}
@@ -58,7 +57,7 @@ After you install {% data variables.product.prodname_desktop %}, you can configu
You can connect or remove accounts on {% data variables.product.prodname_dotcom %} or {% data variables.product.prodname_enterprise %}, choose a default text editor or shell, edit your Git configuration, change the appearance of {% data variables.product.prodname_desktop %}, customize system dialog boxes, and set privacy preferences in the {% data variables.product.prodname_desktop %} Preferences window. For more information, see "[AUTOTITLE](/desktop/configuring-and-customizing-github-desktop/configuring-basic-settings-in-github-desktop)."
-![Screenshot of the "Preferences" window. The left sidebar, with menu options such as "Accounts" and "Integrations", is highlighted with an orange outline.](/assets/images/help/desktop/mac-select-preferences-pane.png)
+![Screenshot of the "Preferences" window. Options in the left sidebar are highlighted with an orange outline.](/assets/images/help/desktop/mac-select-preferences-pane.png)
{% endmac %}
@@ -66,7 +65,7 @@ You can connect or remove accounts on {% data variables.product.prodname_dotcom
You can connect or remove accounts on {% data variables.product.prodname_dotcom %} or {% data variables.product.prodname_enterprise %}, choose a default text editor or shell, edit your Git configuration, change the appearance of {% data variables.product.prodname_desktop %}, customize system dialog boxes, and set privacy preferences in the {% data variables.product.prodname_desktop %} Options window. For more information, see "[AUTOTITLE](/desktop/configuring-and-customizing-github-desktop/configuring-basic-settings-in-github-desktop)."
-![Screenshot of the "Preferences" window. The left sidebar, with menu options such as "Accounts" and "Integrations", is highlighted with an orange outline.](/assets/images/help/desktop/mac-select-preferences-pane.png)
+![Screenshot of the "Preferences" window. Options in the left sidebar are highlighted with an orange outline.](/assets/images/help/desktop/mac-select-preferences-pane.png)
{% endwindows %}
diff --git a/content/get-started/exploring-integrations/about-building-integrations.md b/content/get-started/exploring-integrations/about-building-integrations.md
index 5be98d820fa5..de04f4417016 100644
--- a/content/get-started/exploring-integrations/about-building-integrations.md
+++ b/content/get-started/exploring-integrations/about-building-integrations.md
@@ -25,4 +25,6 @@ Your integration can use webhooks to learn when specific events happen on {% dat
{% ifversion fpt or ghec %} If your integration is a {% data variables.product.prodname_github_app %} or custom action, you can publish your integration on {% data variables.product.prodname_marketplace %}. For more information, see "[AUTOTITLE](/apps/github-marketplace/github-marketplace-overview/about-github-marketplace-for-apps)" and "[AUTOTITLE](/actions/creating-actions/publishing-actions-in-github-marketplace)."{% endif %}
+{% ifversion fpt or ghec %}
If your integration uses generative AI, you can find and experiment with AI models for free on {% data variables.product.company_short %}. See "[AUTOTITLE](/github-models/prototyping-with-ai-models)."
+{% endif %}
diff --git a/content/get-started/getting-started-with-git/managing-remote-repositories.md b/content/get-started/getting-started-with-git/managing-remote-repositories.md
index 6fdab1b6af26..a5ab27ee76ca 100644
--- a/content/get-started/getting-started-with-git/managing-remote-repositories.md
+++ b/content/get-started/getting-started-with-git/managing-remote-repositories.md
@@ -24,6 +24,12 @@ versions:
ghec: '*'
shortTitle: Manage remote repositories
---
+{% ifversion ghec %}
+
+> [!NOTE] {% data reusables.enterprise-data-residency.access-domain %}
+
+{% endif %}
+
## Adding a remote repository
To add a new remote, use the `git remote add` command on the terminal, in the directory your repository is stored at.
diff --git a/content/get-started/getting-started-with-git/updating-credentials-from-the-macos-keychain.md b/content/get-started/getting-started-with-git/updating-credentials-from-the-macos-keychain.md
index 4787e4c8c468..7fd6685149a3 100644
--- a/content/get-started/getting-started-with-git/updating-credentials-from-the-macos-keychain.md
+++ b/content/get-started/getting-started-with-git/updating-credentials-from-the-macos-keychain.md
@@ -23,6 +23,12 @@ We recommend you either [configure SSH](/authentication/connecting-to-github-wit
{% data reusables.user-settings.password-authentication-deprecation %}
+{% ifversion ghec %}
+
+> [!NOTE] {% data reusables.enterprise-data-residency.access-domain %}
+
+{% endif %}
+
## Updating your credentials via Keychain Access
1. Click on the Spotlight icon (magnifying glass) on the right side of the menu bar.
diff --git a/content/get-started/learning-about-github/githubs-plans.md b/content/get-started/learning-about-github/githubs-plans.md
index 3cde4f146be1..91edf97e1a22 100644
--- a/content/get-started/learning-about-github/githubs-plans.md
+++ b/content/get-started/learning-about-github/githubs-plans.md
@@ -117,7 +117,7 @@ In addition to the features available with {% data variables.product.prodname_fr
## {% data variables.product.prodname_enterprise %}
-{% data variables.product.prodname_enterprise %} includes two deployment options: {% data variables.product.prodname_ghe_cloud %}, which is cloud-hosted and part of {% data variables.product.prodname_dotcom_the_website %}, and {% data variables.product.prodname_ghe_server %}, which is self-hosted. For more information, see "[About {% data variables.product.prodname_dotcom %} for enterprises]({% ifversion fpt %}/enterprise-cloud@latest{% endif %}/admin/overview/about-github-for-enterprises){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %}
+{% data variables.product.prodname_enterprise %} includes two deployment options: {% data variables.product.prodname_ghe_cloud %}, which is hosted by {% data variables.product.company_short %} in the cloud, and {% data variables.product.prodname_ghe_server %}, which is self-hosted. For more information, see "[About {% data variables.product.prodname_dotcom %} for enterprises]({% ifversion fpt %}/enterprise-cloud@latest{% endif %}/admin/overview/about-github-for-enterprises){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %}
In addition to the features available with {% data variables.product.prodname_team %}, {% data variables.product.prodname_enterprise %} includes:
@@ -140,6 +140,7 @@ In addition to the features available with {% data variables.product.prodname_te
* If you upgrade an existing organization to {% data variables.product.prodname_ghe_cloud %}, your enterprise account will contain your organization. For more information, see "[AUTOTITLE]({% ifversion fpt or ghes %}/enterprise-cloud@latest{% endif %}/billing/managing-the-plan-for-your-github-account/upgrading-your-accounts-plan#upgrading-your-organizations-plan)" and "[AUTOTITLE]({% ifversion fpt or ghes %}/enterprise-cloud@latest{% endif %}/admin/managing-your-enterprise-account/creating-an-enterprise-account#about-enterprise-account-creation){% ifversion fpt or ghes %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %}
* The option to provision and manage the user accounts for your developers, by using {% data variables.product.prodname_emus %}. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/identity-and-access-management/understanding-iam-for-enterprises/about-enterprise-managed-users)."
* Additional features such as audit log streaming and IP allow list. For more information, see "[AUTOTITLE]({% ifversion fpt and ghes %}/enterprise-cloud@latest{% endif %}/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise)" and "[AUTOTITLE](/enterprise-cloud@latest/admin/configuration/hardening-security-for-your-enterprise/restricting-network-traffic-to-your-enterprise-with-an-ip-allow-list){% ifversion fpt or ghes %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %}
+* The option to host your company's data in a specific region, on a unique subdomain
For a detailed list of the features available with {% data variables.product.prodname_enterprise %}, see our [Pricing](https://github.com/pricing) page.
diff --git a/content/get-started/onboarding/getting-started-with-github-enterprise-cloud.md b/content/get-started/onboarding/getting-started-with-github-enterprise-cloud.md
index 18314e812b7b..8335328794b0 100644
--- a/content/get-started/onboarding/getting-started-with-github-enterprise-cloud.md
+++ b/content/get-started/onboarding/getting-started-with-github-enterprise-cloud.md
@@ -177,3 +177,7 @@ For more information, see "[AUTOTITLE](/get-started/start-your-journey/git-and-g
{% data reusables.getting-started.contact-support %}
{% data variables.product.prodname_ghe_cloud %} allows you to submit priority support requests with a target eight-hour response time. For more information, see "[AUTOTITLE](/support/learning-about-github-support/about-github-support)."
+
+## Further reading
+
+* "[AUTOTITLE](/enterprise-cloud@latest/admin/overview/feature-overview-for-github-enterprise-cloud)"
diff --git a/content/get-started/using-github-docs/about-versions-of-github-docs.md b/content/get-started/using-github-docs/about-versions-of-github-docs.md
index 38946aadfb89..a5b624acbae4 100644
--- a/content/get-started/using-github-docs/about-versions-of-github-docs.md
+++ b/content/get-started/using-github-docs/about-versions-of-github-docs.md
@@ -47,9 +47,17 @@ On {% data variables.product.prodname_dotcom_the_website %}, each account has it
If you don't know whether an organization uses {% data variables.product.prodname_ghe_cloud %}, ask an organization owner. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/viewing-peoples-roles-in-an-organization)."
+### {% data variables.enterprise.data_residency_site %}
+
+If you access {% data variables.product.github %} at a subdomain of {% data variables.enterprise.data_residency_site %}, such as `octocorp.ghe.com`, you're part of an enterprise that uses {% data variables.enterprise.data_residency %}. You should use the "{% data variables.product.prodname_ghe_cloud %}" version of {% data variables.product.prodname_docs %}.
+
+Because you're using a {% data variables.enterprise.prodname_managed_user %}, certain parts of the documentation may not apply to you. See "[AUTOTITLE](/enterprise-cloud@latest/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts)."
+
+If you see references to "github.com" in the documentation, you may need to substitute these references for your enterprise's subdomain on {% data variables.enterprise.data_residency_site %}. For example, you will make API calls to `https://{% data variables.enterprise.data_residency_api %}`, rather than `https://api.github.com`.
+
### {% data variables.product.prodname_ghe_server %}
-If you access {% data variables.product.prodname_dotcom %} at a URL other than https://github.com, `https://*.github.us`, or `https://*.ghe.com`, you're using {% data variables.product.prodname_ghe_server %}. For example, you may access {% data variables.product.prodname_ghe_server %} at `https://github.YOUR-COMPANY-NAME.com`. Your administrators may choose a URL that doesn't include the word "{% data variables.product.company_short %}."
+If you access {% data variables.product.prodname_dotcom %} at a URL **other than** https://github.com, `https://*.github.us`, or `https://*.ghe.com`, you're using {% data variables.product.prodname_ghe_server %}. For example, you may access {% data variables.product.prodname_ghe_server %} at `https://github.YOUR-COMPANY-NAME.com`. Your administrators may choose a URL that doesn't include the word "{% data variables.product.company_short %}."
In a wide browser window, the word "Enterprise" immediately follows the {% data variables.product.company_short %} logo on the left side of the header.
diff --git a/content/get-started/using-github/github-mobile.md b/content/get-started/using-github/github-mobile.md
index b94f8c5b1c3e..b3adaa7595ad 100644
--- a/content/get-started/using-github/github-mobile.md
+++ b/content/get-started/using-github/github-mobile.md
@@ -45,13 +45,17 @@ To install {% data variables.product.prodname_mobile %} for Android or iOS, see
## Managing accounts
-You can be simultaneously signed into mobile with multiple accounts on {% data variables.product.prodname_dotcom_the_website %} and on {% data variables.product.prodname_ghe_server %}. For more information about our different products, see "[AUTOTITLE](/get-started/learning-about-github/githubs-plans)."
+You can be simultaneously signed into mobile with multiple accounts on {% data variables.product.prodname_dotcom_the_website %}, on {% data variables.enterprise.data_residency_site %}, and on {% data variables.product.prodname_ghe_server %}. For more information about our different products, see "[AUTOTITLE](/get-started/learning-about-github/githubs-plans)."
{% data reusables.mobile.push-notifications-on-ghes %}
{% data variables.product.prodname_mobile %} may not work with your enterprise if you're required to access your enterprise over VPN.
-### Prerequisites
+### Prerequisites for {% data variables.enterprise.data_residency_site %} accounts
+
+To access accounts on {% data variables.enterprise.data_residency %} using {% data variables.product.prodname_mobile %}, you need to install {% data variables.product.prodname_mobile %} with at least version iOS 1.182.0 or Android 1.178.0.
+
+### Prerequisites for {% data variables.product.prodname_ghe_server %} accounts
You must install {% data variables.product.prodname_mobile %} 1.4 or later on your device to use {% data variables.product.prodname_mobile %} with {% data variables.product.prodname_ghe_server %}.
@@ -61,11 +65,11 @@ During the {% data variables.release-phases.public_preview %} for {% data variab
### Adding, switching, or signing out of accounts
-You can sign into mobile with any {% data variables.product.company_short %} account, either on {% data variables.product.prodname_dotcom_the_website %} or on {% data variables.product.prodname_ghe_server %}. At the bottom of the app, long-press {% octicon "person" aria-hidden="true" %} **Profile**, then tap {% octicon "plus" aria-hidden="true" %} **Add Enterprise Account**. Follow the prompts to sign in.
+You can sign into mobile with any {% data variables.product.github %} account, on {% data variables.product.prodname_dotcom_the_website %}, on {% data variables.enterprise.data_residency_domain %}, or on {% data variables.product.prodname_ghe_server %}. At the bottom of the app, long-press {% octicon "person" aria-hidden="true" %} **Profile**, then tap {% octicon "plus" aria-hidden="true" %} **Add Enterprise Account**. Follow the prompts to sign in.
-After signing in with an account on {% data variables.product.prodname_ghe_server %}, you can switch between any other accounts you're currently logged into within the app. At the bottom of the app, long-press {% octicon "person" aria-hidden="true" %} **Profile**, then tap the account you want to switch to.
+After signing in with a second account, you can switch between the accounts you're currently logged into within the app. At the bottom of the app, long-press {% octicon "person" aria-hidden="true" %} **Profile**, then tap the account you want to switch to.
-If you no longer need to access your account on {% ifversion ghec or ghes%}{% data variables.product.prodname_ghe_server %} from{% endif %} {% data variables.product.prodname_mobile %}, you can sign out of the account. At the bottom of the app, long-press {% octicon "person" aria-hidden="true" %} **Profile**, swipe left on the account to sign out of, then tap **Sign out**.
+If you no longer need to access an account using {% data variables.product.prodname_mobile %}, you can sign out of that account. At the bottom of the app, long-press {% octicon "person" aria-hidden="true" %} **Profile**, swipe left on the account to sign out of, then tap **Sign out**.
Alternatively, once logged into one account, access the account switcher to log into other accounts or log out of an existing account by navigating to the {% octicon "person" aria-hidden="true" %} **Profile** tab, then tapping {% octicon "gear" aria-hidden="true" %}, and then tapping **Manage Accounts**.
@@ -85,11 +89,11 @@ If you configure the language on your device to a supported language, {% data va
## Managing Universal Links for {% data variables.product.prodname_mobile %} on iOS
-{% data variables.product.prodname_mobile %} automatically enables Universal Links for iOS. When you tap any {% data variables.product.product_name %} link, the destination URL will open in {% data variables.product.prodname_mobile %} instead of Safari. For more information, see [Universal Links](https://developer.apple.com/ios/universal-links/) on the Apple Developer site.
+{% data variables.product.prodname_mobile %} automatically enables Universal Links for iOS. When you tap any {% data variables.product.github %} link, the destination URL will open in {% data variables.product.prodname_mobile %} instead of Safari. For more information, see [Universal Links](https://developer.apple.com/ios/universal-links/) on the Apple Developer site.
-To disable Universal Links, long-press any {% data variables.product.product_name %} link, then tap **Open**. Every time you tap a {% data variables.product.product_name %} link in the future, the destination URL will open in Safari instead of {% data variables.product.prodname_mobile %}.
+To disable Universal Links, long-press any {% data variables.product.github %} link, then tap **Open**. Every time you tap a {% data variables.product.github %} link in the future for the same {% data variables.product.github %} instance, the destination URL will open in Safari instead of {% data variables.product.prodname_mobile %}.
-To re-enable Universal Links, long-press any {% data variables.product.product_name %} link, then tap **Open in {% data variables.product.prodname_dotcom %}**.
+To re-enable Universal Links, long-press any {% data variables.product.github %} link, then tap **Open in {% data variables.product.github %}**.
## Sharing feedback
diff --git a/content/get-started/writing-on-github/working-with-advanced-formatting/creating-diagrams.md b/content/get-started/writing-on-github/working-with-advanced-formatting/creating-diagrams.md
index 798baa010b3c..c558578f909f 100644
--- a/content/get-started/writing-on-github/working-with-advanced-formatting/creating-diagrams.md
+++ b/content/get-started/writing-on-github/working-with-advanced-formatting/creating-diagrams.md
@@ -52,6 +52,12 @@ To ensure {% data variables.product.company_short %} supports your Mermaid synta
You can use GeoJSON or TopoJSON syntax to create interactive maps. To create a map, add GeoJSON or TopoJSON inside a fenced code block with the `geojson` or `topojson` syntax identifier. For more information, see "[AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks)."
+{% ifversion ghec %}
+
+>[!NOTE] GeoJSON and TopoJSON maps are not available on subdomains of {% data variables.enterprise.data_residency_site %}, such as `octocorp.ghe.com`.
+
+{% endif %}
+
{% data reusables.advanced-formatting.administrator-must-enable-mapping %}
### Using GeoJSON
diff --git a/content/github-cli/github-cli/index.md b/content/github-cli/github-cli/index.md
index 03dcf3b8a788..5073342a7ca8 100644
--- a/content/github-cli/github-cli/index.md
+++ b/content/github-cli/github-cli/index.md
@@ -9,6 +9,7 @@ versions:
children:
- /about-github-cli
- /quickstart
+ - /using-multiple-accounts
- /creating-github-cli-extensions
- /using-github-cli-extensions
- /github-cli-reference
diff --git a/content/github-cli/github-cli/quickstart.md b/content/github-cli/github-cli/quickstart.md
index 4785927ea053..aeba5b188243 100644
--- a/content/github-cli/github-cli/quickstart.md
+++ b/content/github-cli/github-cli/quickstart.md
@@ -88,6 +88,12 @@ You can change configuration settings and add aliases or extensions, to make {%
* Create or add custom commands with {% data variables.product.prodname_cli %} extensions. For more information, see "[AUTOTITLE](/github-cli/github-cli/using-github-cli-extensions)" and "[AUTOTITLE](/github-cli/github-cli/creating-github-cli-extensions)."
+## Using {% data variables.product.prodname_cli %} with multiple accounts
+
+If you have multiple accounts on the same {% data variables.product.github %} platform, such as {% data variables.location.product_location %}, you can authenticate to each one and switch between them using the `gh auth switch` command. See [gh auth switch](https://cli.github.com/manual/gh_auth_switch) in the {% data variables.product.prodname_cli %} manual.
+
+If you need to use the {% data variables.product.prodname_cli %} across multiple {% data variables.product.github %} platforms, such as a personal account on {% data variables.product.prodname_dotcom_the_website %} and a {% data variables.enterprise.prodname_managed_user %} on {% data variables.enterprise.data_residency_site %}, see "[AUTOTITLE](/github-cli/github-cli/using-multiple-accounts)."
+
## Further reading
* [AUTOTITLE](/github-cli/github-cli/github-cli-reference)
diff --git a/content/github-cli/github-cli/using-multiple-accounts.md b/content/github-cli/github-cli/using-multiple-accounts.md
new file mode 100644
index 000000000000..216fa82d4c5b
--- /dev/null
+++ b/content/github-cli/github-cli/using-multiple-accounts.md
@@ -0,0 +1,32 @@
+---
+title: Using the GitHub CLI across GitHub platforms
+intro: 'Learn how to run commands when you are authenticated to accounts on different {% data variables.product.github %} platforms.'
+shortTitle: Accounts across platforms
+versions:
+ fpt: '*'
+ ghes: '*'
+ ghec: '*'
+topics:
+ - CLI
+allowTitleToDifferFromFilename: true
+---
+
+If you have accounts on multiple {% data variables.product.github %} platforms, such as a personal account on {% data variables.product.prodname_dotcom_the_website %} and a {% data variables.enterprise.prodname_managed_user %} on {% data variables.enterprise.data_residency_site %}, you can authenticate with `gh auth login` for each account.
+
+You'll need to authenticate to run _any_ commands in a given environment. For example, even if you're running a command that only requires read access to a public repository on {% data variables.product.prodname_dotcom_the_website %}, you won't be able to use this command if you're only authenticated to an account on {% data variables.enterprise.data_residency_site %}. You should therefore authenticate to all accounts you want to use with the {% data variables.product.prodname_cli %}.
+
+## How do I run commands for each account?
+
+Once you've authenticated with multiple accounts, when you run a command, the {% data variables.product.prodname_cli %} can sometimes automatically detect which platform you're trying to access. In other cases, you'll need to provide more information in your command.
+
+The {% data variables.product.prodname_cli %} **automatically detects** your intended account when you're in the context of a specific repository. For example, if you `cd` into your `my-repo` directory and run `gh repo view`, the command will target the correct platform for that repository.
+
+The {% data variables.product.prodname_cli %} **can't automatically detect** your intended account when it doesn't have this context. For example, if you run `gh repo list` to list repositories for your account, the {% data variables.product.prodname_cli %} won't know which account you want to access. In cases like this:
+
+* The {% data variables.product.prodname_cli %} will default to {% data variables.product.prodname_dotcom_the_website %}.
+* You can set the `GH_HOST` environment variable to change the default target for these kinds of requests. See [gh environment](https://cli.github.com/manual/gh_help_environment) in the {% data variables.product.prodname_cli %} manual.
+* Some commands allow you allow you to specify your target environment with the `--hostname` option, such as `gh api`, or pass the full URL for a repository, such as `gh pr view`.
+
+## Can I use multiple accounts on the same platform?
+
+You can also authenticate with multiple accounts on the same platform. To switch between these accounts, you can use the `gh auth switch` command. See [gh auth switch](https://cli.github.com/manual/gh_auth_switch) in the {% data variables.product.prodname_cli %} manual.
diff --git a/content/github-models/index.md b/content/github-models/index.md
index 6d6e9ce83700..974225a2cb66 100644
--- a/content/github-models/index.md
+++ b/content/github-models/index.md
@@ -7,5 +7,6 @@ versions:
ghec: '*'
children:
- /prototyping-with-ai-models
+ - /integrating-ai-models-into-your-development-workflow
- /responsible-use-of-github-models
---
diff --git a/content/github-models/integrating-ai-models-into-your-development-workflow.md b/content/github-models/integrating-ai-models-into-your-development-workflow.md
new file mode 100644
index 000000000000..9d15d759228e
--- /dev/null
+++ b/content/github-models/integrating-ai-models-into-your-development-workflow.md
@@ -0,0 +1,64 @@
+---
+title: Integrating AI models into your development workflow
+intro: 'Call AI models in the tools you use every day.'
+versions:
+ feature: github-models
+shortTitle: Integrate AI models
+---
+
+With {% data variables.product.prodname_github_models %} extensions, you can call specific AI models from both {% data variables.product.prodname_copilot_chat_short %} and {% data variables.product.prodname_cli %}. These extensions integrate directly into your development workflow, allowing you to prompt models without context switching.
+
+## Using AI models in {% data variables.product.prodname_copilot_chat_short %}
+
+If you have a {% data variables.product.prodname_copilot_short %} subscription, you can work with AI models in {% data variables.product.prodname_copilot_chat_short %} in two different ways:
+* Using the {% data variables.product.prodname_github_models %} {% data variables.product.prodname_copilot_extension_short %}. With this extension, you can ask for model recommendations based on certain criteria and chat with specific models. See "[Using the {% data variables.product.prodname_github_models %} {% data variables.product.prodname_copilot_extension_short %}](#using-the-github-models-copilot-extension)."
+* Using multiple model support in {% data variables.product.prodname_copilot_chat_short %}. With multi-model {% data variables.product.prodname_copilot_chat_short %}, you can choose a specific model to use for a conversation, then prompt {% data variables.product.prodname_copilot_chat_short %} as usual. See "[AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom#ai-models-for-copilot-chat)" and "[AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide#ai-models-for-copilot-chat)."
+
+### Using the {% data variables.product.prodname_github_models %} {% data variables.product.prodname_copilot_extension_short %}
+
+> [!NOTE] The {% data variables.product.prodname_github_models %} {% data variables.product.prodname_copilot_extension_short %} is in {% data variables.release-phases.public_preview %} and is subject to change.
+
+1. Install the [{% data variables.product.prodname_github_models %} {% data variables.product.prodname_copilot_extension_short %}](https://github.com/marketplace/models-github).
+ * If you have a {% data variables.product.prodname_copilot_individuals_short %} subscription, you can install the extension on your personal account.
+ * If you have access to {% data variables.product.prodname_copilot_short %} through a {% data variables.product.prodname_copilot_business_short %} or {% data variables.product.prodname_copilot_enterprise_short %} subscription:
+ * An organization owner or enterprise owner needs to enable the {% data variables.product.prodname_copilot_extensions_short %} policy for your organization or enterprise.
+ * An organization owner needs to install the extension for your organization.
+
+1. Open any implementation of {% data variables.product.prodname_copilot_chat_short %} that supports {% data variables.product.prodname_copilot_extensions %}. For a list of supported {% data variables.product.prodname_copilot_chat_short %} implementations, see "[AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat#supported-clients-and-ides)."
+1. In the chat window, type `@models YOUR-PROMPT`, then send your prompt. There are several use cases for the {% data variables.product.prodname_github_models %} {% data variables.product.prodname_copilot_extension_short %}, including:
+ * Recommending a particular model based on context and criteria you provide. For example, you can ask for a low-cost OpenAI model that supports function calling.
+ * Executing prompts using a particular model. This is especially useful when you want to use a model that is not currently available in multi-model {% data variables.product.prodname_copilot_chat_short %}.
+ * Listing models currently available through {% data variables.product.prodname_github_models %}
+
+## Using AI models from the command line
+
+> [!NOTE] The {% data variables.product.prodname_github_models %} extension for {% data variables.product.prodname_cli %} is in {% data variables.release-phases.public_preview %} and is subject to change.
+
+You can use the {% data variables.product.prodname_github_models %} extension for {% data variables.product.prodname_cli %} to prompt AI models from the command line, and even pipe in the output of a command as context.
+
+### Prerequisites
+
+To use the {% data variables.product.prodname_github_models %} CLI extension, you need to have {% data variables.product.prodname_cli %} installed. {% data reusables.cli.cli-installation %}
+
+### Installing the extension
+
+1. If you have not already authenticated to the {% data variables.product.prodname_cli %}, run the following command in your terminal.
+
+ ```shell copy
+ gh auth login
+ ```
+
+1. To install the {% data variables.product.prodname_github_models %} extension, run the following command.
+
+ ```shell copy
+ gh extension install https://github.com/github/gh-models
+ ```
+
+### Using the extension
+
+To see a list of all available commands, run `gh models`.
+
+There are a few key ways you can use the extension:
+ * **To ask a model multiple questions using a chat experience**, run `gh models run`. Select your model from the listed models, then send your prompts.
+ * **To ask a model a single question**, run `gh models run MODEL-NAME "QUESTION"` in your terminal. For example, to ask the `gpt-4o` model why the sky is blue, you can run `gh models run gpt-4o "why is the sky blue?"`.
+ * **To provide the output of a command as context when you call a model**, you can join a separate command and the call to the model with the pipe character (`|`). For example, to summarize the README file in the current directory using the `gpt-4o` model, you can run `cat README.md | gh models run gpt-4o "summarize this text"`.
diff --git a/content/github-models/prototyping-with-ai-models.md b/content/github-models/prototyping-with-ai-models.md
index 3e2d29d3872d..0e4abeab8f72 100644
--- a/content/github-models/prototyping-with-ai-models.md
+++ b/content/github-models/prototyping-with-ai-models.md
@@ -1,5 +1,6 @@
---
title: Prototyping with AI models
+shortTitle: Prototype with AI models
intro: 'Find and experiment with AI models for free.'
versions:
feature: github-models
@@ -15,7 +16,7 @@ To find AI models, go to [{% data variables.product.prodname_marketplace %}](htt
To view details about a model, click on the model's name.
-> [!NOTE] Access to OpenAI's `o1` models is in {% data variables.release-phases.public_preview %} and subject to change. To request access, join the [waitlist](https://github.com/o1-waitlist-signup).
+{% data reusables.models.o1-models-preview-note %}
## Experimenting with AI models in the playground
@@ -29,6 +30,8 @@ To open the playground, go to [{% data variables.product.prodname_marketplace %}
To adjust parameters for the model, select the **Parameters** tab in the sidebar. To see code that corresponds to the parameters that you selected, switch from the **Chat** tab to the **Code** tab.
+You can also compare two models at once. In the menu bar for your model, click {% octicon "plus" aria-hidden="true" %} **Compare**, then select a model for comparison using the **Model: MODEL-NAME** {% octicon "chevron-down" aria-hidden="true" %} dropdown menu in the second chat window. When you type a prompt in either chat window, the prompt will automatically be mirrored to the other window, and you can compare the responses from each model.
+
The playground is rate limited. See [Rate limits](#rate-limits) below.
## Experimenting with AI models using the API
@@ -39,7 +42,7 @@ The playground is rate limited. See [Rate limits](#rate-limits) below.
{% data variables.product.company_short %} provides free API usage so that you can experiment with AI models in your own application.
-To learn how to use a model in your application, go to [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace/models), then click {% octicon "ai-model" aria-hidden="true" %} **Models** in the sidebar. Click on a model's name, then click {% octicon "code" aria-hidden="true" %} **Code**.
+To learn how to use a model in your application, go to [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace/models), then click {% octicon "ai-model" aria-hidden="true" %} **Models** in the sidebar. Click on a model's name, then click {% octicon "command-palette" aria-hidden="true" %} **Playground**. In the menu bar at the top of your chat window, click {% octicon "code" aria-hidden="true" %} **Code**.
The steps to use each model are similar. In general, you will need to:
@@ -57,43 +60,44 @@ The steps to use each model are similar. In general, you will need to:
The free API usage is rate limited. See [Rate limits](#rate-limits) below.
-{% ifversion github-models-cli %}
-
-## Experimenting with AI models using {% data variables.product.prodname_cli %}
-
->[!NOTE] The {% data variables.product.prodname_github_models %} CLI extension is in {% data variables.release-phases.public_preview %} and subject to change.
-
-You can use {% data variables.product.prodname_github_models %} with the {% data variables.product.prodname_cli %} to experiment with AI models from the command line.
+## Saving and sharing your playground experiments
-### Prerequisites
+You can save and share your progress in the playground with presets. Presets save:
+* Your current state
+* Your parameters
+* Your chat history (optional)
-To use the {% data variables.product.prodname_github_models %} CLI extension, you need to have {% data variables.product.prodname_cli %} installed. {% data reusables.cli.cli-installation %}
+To create a preset for your current context, select the **Preset: PRESET-NAME** {% octicon "triangle-down" aria-hidden="true" %} dropdown menu, then click {% octicon "plus" aria-hidden="true" %} **Create new preset**. You need to name your preset, and you can also choose to provide a preset description, include your chat history, and allow your preset to be shared.
-### Installing the extension
+There are two ways to load a preset:
+* Select the **Preset: PRESET-NAME** {% octicon "triangle-down" aria-hidden="true" %} dropdown menu, then click the preset you want to load.
+* Open a shared preset URL
-1. If you have not already authenticated to the {% data variables.product.prodname_cli %}, run the following command in your terminal.
+After you load a preset, you can edit, share, or delete the preset:
+* To edit the preset, change the parameters and prompt the model. Once you are satisfied with your changes, select the **Preset: PRESET-NAME** {% octicon "triangle-down" aria-hidden="true" %} dropdown menu, then click {% octicon "pencil" aria-hidden="true" %} **Edit preset** and save your updates.
+* To share the preset, select the **Preset: PRESET-NAME** {% octicon "triangle-down" aria-hidden="true" %} dropdown menu, then click {% octicon "share" aria-hidden="true" %} **Share preset** to get a shareable URL.
+* To delete the preset, select the **Preset: PRESET-NAME** {% octicon "triangle-down" aria-hidden="true" %} dropdown menu, then click {% octicon "trash" aria-hidden="true" %} **Delete preset** and confirm the deletion.
- ```shell copy
- gh auth login
- ```
+## Experimenting with AI models in {% data variables.product.prodname_vscode %}
-1. To install the {% data variables.product.prodname_github_models %} extension, run the following command.
+> [!NOTE] The AI Toolkit extension for {% data variables.product.prodname_vscode %} is in {% data variables.release-phases.public_preview %} and is subject to change.
- ```shell copy
- gh extension install https://github.com/github/gh-models
- ```
+If you prefer to experiment with AI models in your IDE, you can install the AI Toolkit extension for {% data variables.product.prodname_vscode %}, then test models with adjustable parameters and context.
-### Using the extension
+1. In {% data variables.product.prodname_vscode %}, install the pre-release version of the [AI Toolkit for {% data variables.product.prodname_vscode %}](https://marketplace.visualstudio.com/items?itemName=ms-windows-ai-studio.windows-ai-studio).
+1. To open the extension, click the AI Toolkit icon in the activity bar.
+1. Authorize the AI Toolkit to connect to your {% data variables.product.prodname_dotcom %} account.
+1. In the "My models" section of the AI Toolkit panel, click **Open Model Catalog**, then find a model to experiment with.
+ * To use a model hosted remotely through {% data variables.product.prodname_github_models %}, on the model card, click **Try in playground**.
+ * To download and use a model locally, on the model card, click **Download**. Once the download is complete, on the same model card, click **Load in playground**.
-To see a list of all available commands, run `gh models help`. To run the extension in interactive mode, run `gh models run`. This will prompt you to select a model and then to enter a prompt. The extension will then return a response from the model.
-
-For more information about what you can do with {% data variables.product.prodname_cli %}, see the [{% data variables.product.prodname_cli %} manual](https://cli.github.com/manual).
-
-{% endif %}
+1. In the sidebar, provide any context instructions and inference parameters for the model, then send a prompt.
## Going to production
-The rate limits for the playground and free API usage are intended to help you experiment with models and develop your AI application. Once you are ready to bring your application to production, you can use a token from a paid Azure account instead of your {% data variables.product.company_short %} {% data variables.product.pat_generic %}. You don't need to change anything else in your code. For more information, see the [Azure AI](https://ai.azure.com/github/model/docs) documentation.
+The rate limits for the playground and free API usage are intended to help you experiment with models and develop your AI application. Once you are ready to bring your application to production, you can use a token from a paid Azure account instead of your {% data variables.product.company_short %} {% data variables.product.pat_generic %}. You don't need to change anything else in your code.
+
+For more information, see the [Azure AI](https://aka.ms/azureai/github-models) documentation.
## Rate limits
diff --git a/content/graphql/guides/forming-calls-with-graphql.md b/content/graphql/guides/forming-calls-with-graphql.md
index a6dec0fe0a01..f131daffae54 100644
--- a/content/graphql/guides/forming-calls-with-graphql.md
+++ b/content/graphql/guides/forming-calls-with-graphql.md
@@ -37,11 +37,15 @@ To authenticate with an OAuth token from an {% data variables.product.prodname_o
## The GraphQL endpoint
-The REST API has numerous endpoints; the GraphQL API has a single endpoint:
+The REST API has numerous endpoints. With the GraphQL API, the endpoint remains constant, no matter what operation you perform. For {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% else %}{% data variables.product.prodname_ghe_server %}{% endif %}, that endpoint is:
{% data variables.product.graphql_url %}
-The endpoint remains constant no matter what operation you perform.
+{% ifversion ghec %}
+
+If you access {% data variables.product.github %} at a different domain, such as `{% data variables.enterprise.data_residency_example_domain %}`, the endpoint will reflect that domain. For example: `https://api.octocorp.ghe.com/graphql`.
+
+{% endif %}
## Communicating with GraphQL
diff --git a/content/graphql/guides/using-the-explorer.md b/content/graphql/guides/using-the-explorer.md
index 63f28e54b090..df5ff864d42e 100644
--- a/content/graphql/guides/using-the-explorer.md
+++ b/content/graphql/guides/using-the-explorer.md
@@ -87,7 +87,7 @@ There are many open source GraphQL client IDEs. For example, you can use Altair
1. In the "Header key" field, enter `Authorization`.
1. In the "Header value" field, enter `Bearer TOKEN`, replacing `TOKEN` with your token from the first step.
1. Click **Save** in the bottom right corner of the window to save your authorization header.
-1. In the "GraphQL Endpoint" field, enter `{% data variables.product.graphql_url %}`.
+1. In the "GraphQL Endpoint" field, enter your GraphQL URL, such as `{% data variables.product.graphql_url %}`.
1. To load the {% data variables.product.company_short %} GraphQL schema, download the [public schema](/graphql/overview/public-schema).
1. In Altair, click on **Docs** on the top right, then the three dots and **Load Schema...**
1. Select the file public schema that you downloaded in an earlier step.
diff --git a/content/index.md b/content/index.md
index 855610b01ec8..1e12a2121f46 100644
--- a/content/index.md
+++ b/content/index.md
@@ -106,7 +106,7 @@ childGroups:
- copilot
- copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot
- copilot/using-github-copilot/prompt-engineering-for-github-copilot
- - copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom
+ - copilot/using-github-copilot/asking-github-copilot-questions-in-github
- copilot/using-github-copilot/example-use-cases/refactoring-code-with-github-copilot
- name: CI/CD and DevOps
octicon: GearIcon
diff --git a/content/migrations/importing-source-code/using-github-importer/about-github-importer.md b/content/migrations/importing-source-code/using-github-importer/about-github-importer.md
index 8732a88b7d8e..82511b62e1e5 100644
--- a/content/migrations/importing-source-code/using-github-importer/about-github-importer.md
+++ b/content/migrations/importing-source-code/using-github-importer/about-github-importer.md
@@ -1,6 +1,6 @@
---
title: About GitHub Importer
-intro: "If your source code is stored on another Git-based hosting service, you can move the code to {% data variables.product.prodname_dotcom %} using {% data variables.product.prodname_importer %}."
+intro: "If your source code is stored on another Git-based hosting service, you can move the code to {% data variables.product.prodname_dotcom_the_website %} using {% data variables.product.prodname_importer %}."
redirect_from:
- /articles/about-github-importer
- /github/importing-your-projects-to-github/about-github-importer
@@ -18,13 +18,14 @@ versions:
## About {% data variables.product.prodname_importer %}
-{% data variables.product.prodname_importer %} is a tool that quickly imports Git repositories from other hosting services to {% data variables.product.prodname_dotcom %}.
+{% data variables.product.prodname_importer %} is a tool that quickly imports Git repositories from other hosting services to {% data variables.product.prodname_dotcom_the_website %}.
To get started with {% data variables.product.prodname_importer %}, see "[AUTOTITLE](/migrations/importing-source-code/using-github-importer/importing-a-repository-with-github-importer#importing-a-repository-with-github-importer)."
## Capabilities and limitations of {% data variables.product.prodname_importer %}
* {% data variables.product.prodname_importer %} imports the source code and commit history of a repository. It does not import other associated data from the hosting service, such as issues and pull requests.
+* {% data variables.product.prodname_importer %} is only available on {% data variables.product.prodname_dotcom_the_website %}.
* During an import, you can authenticate with your remote repository. The repository must be accessible from the public internet. If the repository is hosted on a private network, {% data variables.product.prodname_importer %} won't be able to access it.
* {% data variables.product.prodname_importer %} does not support repositories that use version control systems other than Git, such as Mercurial, Subversion, or Team Foundation Version Control (TFVC). For more information about alternatives to {% data variables.product.prodname_importer %}, see "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/about-source-code-imports-using-the-command-line)."
* Repositories and individual files on {% data variables.product.prodname_dotcom %} are subject to size limits. For more information, see "[AUTOTITLE](/repositories/working-with-files/managing-large-files/about-large-files-on-github)."
diff --git a/content/migrations/importing-source-code/using-github-importer/importing-a-repository-with-github-importer.md b/content/migrations/importing-source-code/using-github-importer/importing-a-repository-with-github-importer.md
index 793e2055acc1..4c863afc84e8 100644
--- a/content/migrations/importing-source-code/using-github-importer/importing-a-repository-with-github-importer.md
+++ b/content/migrations/importing-source-code/using-github-importer/importing-a-repository-with-github-importer.md
@@ -23,7 +23,7 @@ shortTitle: Import a repository
When you import a repository using the {% data variables.product.prodname_importer %}, a new repository will be created. If you already have an existing repository you want to use, you can instead add your local repository to {% data variables.product.prodname_dotcom %} using Git. For more information, see "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github#importing-a-git-repository-with-the-command-line)."
-1. In the upper-right corner of any page, click {% octicon "plus" aria-label="Create new..." %}, and then click **Import repository**.
+1. In the upper-right corner of any page on {% data variables.product.prodname_dotcom_the_website %}, click {% octicon "plus" aria-label="Create new..." %}, and then click **Import repository**.
![Screenshot of the top-right corner of any page on {% data variables.product.prodname_dotcom %}. A plus icon is highlighted with an orange outline.](/assets/images/help/importer/import-repository.png)
diff --git a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/about-source-code-imports-using-the-command-line.md b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/about-source-code-imports-using-the-command-line.md
index 54bba7e69a23..bc84740779e1 100644
--- a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/about-source-code-imports-using-the-command-line.md
+++ b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/about-source-code-imports-using-the-command-line.md
@@ -12,7 +12,7 @@ shortTitle: About source code imports
{% ifversion fpt or ghec %}
-If you want to import a Git repository that is stored on a code hosting service that is publicly available on the internet, we recommend using {% data variables.product.prodname_importer %}. For more information, see "[AUTOTITLE](/migrations/importing-source-code/using-github-importer)."
+If you want to import a Git repository to {% data variables.product.prodname_dotcom_the_website %}, and the repository is stored on a code hosting service that is publicly available on the internet, we recommend using {% data variables.product.prodname_importer %}. For more information, see "[AUTOTITLE](/migrations/importing-source-code/using-github-importer)."
If your source code is not tracked by Git or is not publicly available, you can use the command line instead.
diff --git a/content/migrations/overview/migration-paths-to-github.md b/content/migrations/overview/migration-paths-to-github.md
index ac451be32da1..2aba90d93ce4 100644
--- a/content/migrations/overview/migration-paths-to-github.md
+++ b/content/migrations/overview/migration-paths-to-github.md
@@ -36,6 +36,7 @@ You can review the scope and tooling for your migration to {% data variables.pro
* [Any Team Foundation Version Control (TFVC) repository to {% data variables.product.prodname_dotcom_the_website %}](#any-team-foundation-version-control-tfvc-repository-to-githubcom)
* [Any Perforce repository to {% data variables.product.prodname_dotcom_the_website %}](#any-perforce-repository-to-githubcom)
* [Any other repository to {% data variables.product.prodname_dotcom_the_website %}](#any-other-repository-to-githubcom)
+* [{% data variables.enterprise.data_residency_site %} to {% data variables.product.prodname_dotcom_the_website %}](#ghecom-to-githubcom)
### {% data variables.product.prodname_ghe_server %} 3.4.1 or newer to {% data variables.product.prodname_dotcom_the_website %}
@@ -155,6 +156,146 @@ Migrations from {% data variables.product.prodname_dotcom_the_website %} include
* **Tooling**: {% data variables.product.prodname_cli %} or Git CLI
* **More information**: "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github)"
+### {% data variables.enterprise.data_residency_site %} to {% data variables.product.prodname_dotcom_the_website %}
+
+This path is not currently supported with our official tools. Please contact {% data variables.product.prodname_expert_services %}.
+
+## Migrations to {% data variables.enterprise.data_residency_site %}
+
+If you're migrating to {% data variables.enterprise.data_residency %}, your migration destination is {% data variables.enterprise.data_residency_site %}.
+
+Migrations to {% data variables.enterprise.data_residency_site %} use similar tools as migrations to {% data variables.product.prodname_dotcom_the_website %}. However, the {% data variables.product.prodname_importer %} and Enterprise Cloud Importer are not available.
+
+Follow a link below to review the scope and tooling for your migration to {% data variables.enterprise.data_residency_site %}, plus any additional information or caveats.
+
+* [{% data variables.product.prodname_ghe_server %} 3.4.1 or newer to {% data variables.enterprise.data_residency_site %}](#github-enterprise-server-341-or-newer-to-ghecom)
+* [{% data variables.product.prodname_ghe_server %} 3.4.0 or older to {% data variables.enterprise.data_residency_site %}](#github-enterprise-server-340-or-older-to-ghecom)
+* [{% data variables.product.prodname_dotcom_the_website %} to {% data variables.enterprise.data_residency_site %}](#githubcom-to-ghecom)
+* [Azure DevOps Services (Azure DevOps Cloud) to {% data variables.enterprise.data_residency_site %}](#azure-devops-services-azure-devops-cloud-to-ghecom)
+* [Azure DevOps Server to {% data variables.enterprise.data_residency_site %}](#azure-devops-server-to-ghecom)
+* [Bitbucket Cloud (Bitbucket.org) to {% data variables.enterprise.data_residency_site %}](#bitbucket-cloud-bitbucketorg-to-ghecom)
+* [Bitbucket Server or Bitbucket Data Center to {% data variables.enterprise.data_residency_site %}](#bitbucket-server-or-bitbucket-data-center-to-ghecom)
+* [GitLab to {% data variables.enterprise.data_residency_site %}](#gitlab-to-ghecom)
+* [Any Git repository to {% data variables.enterprise.data_residency_site %}](#any-git-repository-to-githubcom)
+* [Any Mercurial repository to {% data variables.enterprise.data_residency_site %}](#any-mercurial-repository-to-ghecom)
+* [Any Subversion (SVN) repository to {% data variables.enterprise.data_residency_site %}](#any-subversion-svn-repository-to-ghecom)
+* [Any Team Foundation Version Control (TFVC) repository to {% data variables.enterprise.data_residency_site %}](#any-team-foundation-version-control-tfvc-repository-to-ghecom)
+* [Any Perforce repository to {% data variables.enterprise.data_residency_site %}](#any-perforce-repository-to-ghecom)
+* [Any other repository to {% data variables.enterprise.data_residency_site %}](#any-other-repository-to-ghecom)
+
+### {% data variables.product.prodname_ghe_server %} 3.4.1 or newer to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source, history, and metadata
+* **Tooling**: {% data variables.product.prodname_importer_proper_name %}
+* **More information**:
+ * "[AUTOTITLE](/migrations/using-github-enterprise-importer)"
+ * [{% data variables.product.prodname_expert_services %}](https://github.com/services/) website
+* **Caveats**:
+ * {% data reusables.migrations.large-repositories-require-expert-services-ghecom %}
+ * {% data reusables.migrations.migration-instructions-for-any-git-repository-to-ghecom %}
+
+### {% data variables.product.prodname_ghe_server %} 3.4.0 or older to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source, history, and metadata
+* **Tooling**: {% data variables.product.prodname_importer_proper_name %}
+* **More information**:
+ * "[AUTOTITLE](/migrations/using-github-enterprise-importer)"
+ * [{% data variables.product.prodname_expert_services %}](https://github.com/services/) website
+* **Caveats**:
+ * {% data reusables.migrations.large-repositories-require-expert-services-ghecom %}
+ * {% data reusables.migrations.migration-instructions-for-any-git-repository-to-ghecom %}
+
+### {% data variables.product.prodname_dotcom_the_website %} to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source, history, and metadata
+* **Tooling**: {% data variables.product.prodname_importer_proper_name %} or {% data variables.product.prodname_expert_services %}
+* **More information**:
+ * "[AUTOTITLE](/migrations/using-github-enterprise-importer)"
+ * [{% data variables.product.prodname_expert_services %}](https://github.com/services/) website
+* **Caveats**:
+ * {% data reusables.migrations.large-repositories-require-expert-services-ghecom %}
+ * {% data reusables.migrations.migration-instructions-for-any-git-repository-to-ghecom %}
+
+### Azure DevOps Services (Azure DevOps Cloud) to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source, history, and metadata
+* **Tooling**: {% data variables.product.prodname_importer_proper_name %}
+* **More information**: "[AUTOTITLE](/migrations/using-github-enterprise-importer)"
+
+### Azure DevOps Server to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source, history, and metadata
+* **Tooling**: Migration to Azure DevOps Services, then {% data variables.product.prodname_importer_proper_name %}
+* **More information**:
+ * [Migrate data from Azure DevOps Server to Azure DevOps Services](https://learn.microsoft.com/en-us/azure/devops/migrate/migration-overview?view=azure-devops) in the Microsoft Docs
+ * "[AUTOTITLE](/migrations/using-github-enterprise-importer)"
+* **Caveats**: If you can't migrate to Azure DevOps Services first, you must perform a "source and history" migration instead. For more information, see "[Migrations from any Git repository to {% data variables.enterprise.data_residency_site %}](#any-git-repository-to-githubcom)."
+
+### Bitbucket Cloud (Bitbucket.org) to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source and history
+* **Tooling**: Git CLI
+* **More information**:
+ * "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line)"
+
+### Bitbucket Server or Bitbucket Data Center to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source, history, and metadata
+* **Tooling**: {% data variables.product.prodname_importer_proper_name %}
+* **More information**:
+ * "[AUTOTITLE](/migrations/using-github-enterprise-importer)"
+ * [{% data variables.product.prodname_expert_services %}](https://github.com/services/) website
+* **Caveats**:
+ * {% data reusables.migrations.large-repositories-require-expert-services-ghecom %}
+ * {% data reusables.migrations.migration-instructions-for-any-git-repository-to-ghecom %}
+
+### GitLab to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source, history, and metadata
+* **Tooling**: Contact {% data variables.product.prodname_expert_services %}
+* **More information**: [{% data variables.product.prodname_expert_services %}](https://github.com/services/) website
+* **Caveats**:
+ * {% data reusables.migrations.migration-instructions-for-any-git-repository-to-ghecom %}
+
+### Any Git repository to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source and history
+* **Tooling**: Git CLI
+* **More information**:
+ * "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line)"
+
+### Any Mercurial repository to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source and history
+* **Tooling**: Mercurial, Git CLI, and Python
+* **More information**: "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-mercurial-repository)"
+
+### Any Subversion (SVN) repository to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source and history
+* **Tooling**: Subversion and Git CLI
+* **More information**: "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-subversion-repository)"
+
+### Any Team Foundation Version Control (TFVC) repository to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source and history
+* **Tooling**: Azure Repos, then Git CLI
+* **More information**: "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-team-foundation-version-control-repository)"
+
+### Any Perforce repository to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source and history
+* **Tooling**: `git-p4`, then Git CLI
+* **More information**:
+ * [git-p4](https://git-scm.com/docs/git-p4) in the Git documentation
+ * "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github#importing-a-git-repository-with-the-command-line)"
+
+### Any other repository to {% data variables.enterprise.data_residency_site %}
+
+* **Scope**: Source snapshot
+* **Tooling**: {% data variables.product.prodname_cli %} or Git CLI
+* **More information**: "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github)"
+
## Migrations to {% data variables.product.prodname_ghe_server %}
You can review the scope and tooling for your migration to {% data variables.product.prodname_ghe_server %}, including any additional information or caveats.
@@ -171,6 +312,7 @@ You can review the scope and tooling for your migration to {% data variables.pro
* [Any Team Foundation Version Control (TFVC) repository to {% data variables.product.prodname_ghe_server %}](#any-team-foundation-version-control-tfvc-repository-to-github-enterprise-server)
* [Any Perforce repository to {% data variables.product.prodname_ghe_server %}](#any-perforce-repository-to-github-enterprise-server)
* [Any other repository to {% data variables.product.prodname_ghe_server %}](#any-other-repository-to-github-enterprise-server)
+* [{% data variables.enterprise.data_residency_site %} to {% data variables.product.prodname_ghe_server %}](#ghecom-to-github-enterprise-server)
### {% data variables.product.prodname_dotcom_the_website %} to {% data variables.product.prodname_ghe_server %}
@@ -257,3 +399,7 @@ Migrations from {% data variables.product.prodname_dotcom_the_website %} include
* **Scope**: Source snapshot
* **Tooling**: {% data variables.product.prodname_cli %} or Git CLI
* **More information**: "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github)"
+
+### {% data variables.enterprise.data_residency_site %} to {% data variables.product.prodname_ghe_server %}
+
+This path is not currently supported with our official tools. Please contact {% data variables.product.prodname_expert_services %}.
diff --git a/content/migrations/overview/planning-your-migration-to-github.md b/content/migrations/overview/planning-your-migration-to-github.md
index 575758f9a538..cdd17123ae37 100644
--- a/content/migrations/overview/planning-your-migration-to-github.md
+++ b/content/migrations/overview/planning-your-migration-to-github.md
@@ -40,7 +40,7 @@ If you’re not using a code hosting platform at all, you might be storing your
Wherever your code lives, that's your "migration origin."
-You’ll also need to know which {% data variables.product.prodname_dotcom %} product you’re migrating to, or your "migration destination." This could be {% data variables.product.prodname_dotcom_the_website %}, which includes {% data variables.product.prodname_ghe_cloud %}, or {% data variables.product.prodname_ghe_server %}.
+You’ll also need to know which {% data variables.product.prodname_dotcom %} product you’re migrating to, or your "migration destination." This could be {% data variables.product.prodname_dotcom_the_website %}, {% data variables.enterprise.data_residency_site %}, or {% data variables.product.prodname_ghe_server %}.
### Building a basic inventory of the repositories you want to migrate
@@ -121,6 +121,8 @@ You may choose to complete a "self-serve migration," where you plan and run your
Alternatively, you may prefer to work with {% data variables.product.company_short %}'s Expert Services team or a {% data variables.product.company_short %} Partner, which we call an "expert-led migration." With an expert-led migration, you benefit from the knowledge and experience of an expert who has previously run tens or even hundreds of migrations, and you get access to additional migration tools that aren’t available for self-serve.
+If you're migrating a large amount of data, you're likely to benefit from an expert-led migration. For example, if you're migrating thousands of repositories, or you have complex repositories greater than around 5 GB in size, we recommend connecting with Expert Services.
+
{% rowheaders %}
| | Self-serve | Expert-led |
diff --git a/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/accessing-your-migration-logs-for-github-enterprise-importer.md b/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/accessing-your-migration-logs-for-github-enterprise-importer.md
index 7539c5f067fa..48a7c192af70 100644
--- a/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/accessing-your-migration-logs-for-github-enterprise-importer.md
+++ b/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/accessing-your-migration-logs-for-github-enterprise-importer.md
@@ -59,7 +59,8 @@ If your migration source is Azure DevOps, you can download the latest migration
gh ado2gh download-logs --github-target-org DESTINATION --target-repo REPOSITORY --migration-log-file FILENAME
```
-{% data reusables.enterprise-migration-tool.add-pat-to-download-logs %} For {% data variables.product.pat_generic %} requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/managing-access-for-a-migration-from-azure-devops#required-scopes-for-personal-access-tokens)."
+* {% data reusables.enterprise-migration-tool.add-pat-to-download-logs %} For {% data variables.product.pat_generic %} requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/managing-access-for-a-migration-from-azure-devops#required-scopes-for-personal-access-tokens)."
+* {% data reusables.enterprise-migration-tool.add-target-api-url %}
### Downloading a repository migration log with the {% data variables.product.prodname_bbs2gh_cli_short %}
@@ -69,7 +70,8 @@ If your migration source is Bitbucket Server, you can download the latest migrat
gh bbs2gh download-logs --github-target-org DESTINATION --target-repo REPOSITORY --migration-log-file FILENAME
```
-{% data reusables.enterprise-migration-tool.add-pat-to-download-logs %} For {% data variables.product.pat_generic %} requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/managing-access-for-a-migration-from-bitbucket-server#required-scopes-for-personal-access-tokens)."
+* {% data reusables.enterprise-migration-tool.add-pat-to-download-logs %} For {% data variables.product.pat_generic %} requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/managing-access-for-a-migration-from-bitbucket-server#required-scopes-for-personal-access-tokens)."
+* {% data reusables.enterprise-migration-tool.add-target-api-url %}
### Downloading a repository migration log with the {% data variables.product.prodname_gei_cli_short %}
@@ -79,7 +81,8 @@ If your migration source is a {% data variables.product.prodname_dotcom %} produ
gh gei download-logs --github-target-org DESTINATION --target-repo REPOSITORY --migration-log-file FILENAME
```
-{% data reusables.enterprise-migration-tool.add-pat-to-download-logs %} For {% data variables.product.pat_generic %} requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products#required-scopes-for-personal-access-tokens)."
+* {% data reusables.enterprise-migration-tool.add-pat-to-download-logs %} For {% data variables.product.pat_generic %} requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products#required-scopes-for-personal-access-tokens)."
+* {% data reusables.enterprise-migration-tool.add-target-api-url %}
### Downloading all the repository migration logs for a migration script
diff --git a/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/reclaiming-mannequins-for-github-enterprise-importer.md b/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/reclaiming-mannequins-for-github-enterprise-importer.md
index 584b71dd52a9..4c147de9a6b0 100644
--- a/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/reclaiming-mannequins-for-github-enterprise-importer.md
+++ b/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/reclaiming-mannequins-for-github-enterprise-importer.md
@@ -62,7 +62,8 @@ The exact command you need to use depends on which extension of the {% data vari
If your migration source is a {% data variables.product.prodname_dotcom %} product, you can reclaim mannequins with the {% data variables.product.prodname_gei_cli %}.
-{% data reusables.enterprise-migration-tool.add-pat-to-reclaim-mannequins %} For {% data variables.product.pat_generic %} requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products#required-scopes-for-personal-access-tokens)."
+* {% data reusables.enterprise-migration-tool.add-pat-to-reclaim-mannequins %} For {% data variables.product.pat_generic %} requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products#required-scopes-for-personal-access-tokens)."
+* {% data reusables.enterprise-migration-tool.add-target-api-url %}
{% data reusables.enterprise-migration-tool.create-csv-mannequins %}
@@ -95,7 +96,8 @@ If your migration source is a {% data variables.product.prodname_dotcom %} produ
If your migration source is Azure DevOps, you can reclaim mannequins with the {% data variables.product.prodname_ado2gh_cli %}.
-{% data reusables.enterprise-migration-tool.add-pat-to-reclaim-mannequins %} For {% data variables.product.pat_generic %} requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/managing-access-for-a-migration-from-azure-devops#required-scopes-for-personal-access-tokens)."
+* {% data reusables.enterprise-migration-tool.add-pat-to-reclaim-mannequins %} For {% data variables.product.pat_generic %} requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/managing-access-for-a-migration-from-azure-devops#required-scopes-for-personal-access-tokens)."
+* {% data reusables.enterprise-migration-tool.add-target-api-url %}
{% data reusables.enterprise-migration-tool.create-csv-mannequins %}
diff --git a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/about-migrations-between-github-products.md b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/about-migrations-between-github-products.md
index 250e78e039c6..1325d1f3adc0 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/about-migrations-between-github-products.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/about-migrations-between-github-products.md
@@ -10,9 +10,15 @@ versions:
## About migrations between {% data variables.product.company_short %} products
-With {% data variables.product.prodname_importer_proper_name %}, you can migrate data from {% data variables.product.prodname_ghe_server %} to {% data variables.product.prodname_ghe_cloud %}, or migrate data between accounts on {% data variables.product.prodname_ghe_cloud %}. For more information, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer)."
+With {% data variables.product.prodname_importer_proper_name %}, you can migrate data from {% data variables.product.prodname_ghe_server %} to {% data variables.product.prodname_ghe_cloud %}, or migrate data from {% data variables.product.prodname_dotcom_the_website %} to another account on {% data variables.product.prodname_ghe_cloud %}.
-If your migration source is another account on {% data variables.product.prodname_dotcom_the_website %}, you can migrate individual repositories between organizations, or migrate entire organizations between enterprises. If your migration source is {% data variables.product.prodname_ghe_server %}, you can migrate repositories.
+For example, {% data variables.product.prodname_importer_proper_name %} can help your company to:
+
+* Adopt {% data variables.enterprise.data_residency %} by migrating your enterprise to {% data variables.enterprise.data_residency_site %}
+* Adopt certain features on {% data variables.product.prodname_dotcom_the_website %}, such as {% data variables.product.prodname_emus %} or new billing models, by migrating between enterprises on {% data variables.product.prodname_dotcom_the_website %}
+* Benefit from simplified administration and new features by migrating from {% data variables.product.prodname_ghe_server %} to {% data variables.product.prodname_ghe_cloud %}
+
+If your migration source is an account on {% data variables.product.prodname_dotcom_the_website %}, you can migrate individual repositories between organizations, or migrate entire organizations between enterprises. If your migration source is {% data variables.product.prodname_ghe_server %}, you can migrate individual repositories.
The data that {% data variables.product.prodname_importer_proper_name %} migrates depends on the source of the migration and whether you are migrating a repository or organization.
@@ -20,6 +26,17 @@ The data that {% data variables.product.prodname_importer_proper_name %} migrate
{% data reusables.enterprise-migration-tool.deploy-key-bypass %}
{% endif %}
+## Considerations for migrations to {% data variables.product.prodname_ghe_cloud %}
+
+Before you use {% data variables.product.prodname_importer_proper_name %}, understand the following considerations:
+
+* If you **already use {% data variables.product.prodname_ghe_cloud %}**: A {% data variables.product.prodname_enterprise %} plan entitles you to one deployment of {% data variables.product.prodname_ghe_cloud %}.
+
+ For example, if you already use {% data variables.product.prodname_dotcom_the_website %}, and you also want to migrate from {% data variables.product.prodname_ghe_server %} to {% data variables.enterprise.data_residency_site %}, your usage for both won't be covered under a single plan.
+* If you're **migrating to {% data variables.product.prodname_emus %}**: You will need to integrate with an identity provider to manage user accounts. Check the level of support for your identity provider before you start. See "[AUTOTITLE](/enterprise-cloud@latest/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users#identity-management-systems)."
+* If you're **migrating from {% data variables.product.prodname_ghe_server %}**: Be aware that {% data variables.product.company_short %} applies rate limits to certain actions, which are disabled by default on {% data variables.product.prodname_ghe_server %}. See "[AUTOTITLE](/enterprise-cloud@latest/rest/using-the-rest-api/rate-limits-for-the-rest-api)."
+* If you're **migrating to {% data variables.enterprise.data_residency %}**: Be aware that certain features are unavailable, and some features require different or additional configuration. See "[AUTOTITLE](/enterprise-cloud@latest/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency)."
+
## Data that is migrated from {% data variables.product.prodname_ghe_server %}
> [!WARNING]
@@ -71,9 +88,9 @@ Currently, the following data is **not** migrated.
{% data reusables.enterprise-migration-tool.branch-protection-migration %}
-## Data that is migrated from other accounts on {% data variables.product.prodname_dotcom_the_website %}
+## Data that is migrated from {% data variables.product.prodname_dotcom_the_website %}
-If your migration source is another account on {% data variables.product.prodname_dotcom_the_website %}, you can migrate individual repositories between organizations, or migrate entire organizations between enterprises.
+If your migration source is an account on {% data variables.product.prodname_dotcom_the_website %}, you can migrate individual repositories between organizations, or migrate entire organizations between enterprises.
### Migrated data for an organization
diff --git a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products.md b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products.md
index 3b691bc3e1a7..19ca1f68cd37 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products.md
@@ -18,9 +18,20 @@ redirect_from:
{% data reusables.enterprise-migration-tool.required-access-intro %}
-To run a migration, you need sufficient access to both the source and the destination for your migration. The source is the organization on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.product.prodname_ghe_server %} from which you want to migrate data. The destination is either an organization account on {% data variables.product.prodname_dotcom_the_website %}, if you're migrating repositories, or an enterprise account on {% data variables.product.prodname_dotcom_the_website %}, if you're migrating an entire organization.
+To run a migration, you need sufficient access to both the source and the destination for your migration.
-To have sufficient access for the migration, for both the source and the destination, you need the following things.
+### What are my source and destination?
+
+The source is the organization on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.product.prodname_ghe_server %} from which you want to migrate data.
+
+The destination can be:
+
+* An **organization** account on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}, if you're migrating repositories
+* An **enterprise** account on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}, if you're migrating an entire organization
+
+### What access do I need?
+
+To have sufficient access for the migration, for **both the source and the destination**, you need the following things.
* A required role in the organization or enterprise account
* A {% data variables.product.pat_generic %} that can access the organization or enterprise account
* The {% data variables.product.pat_generic %} must have all the required scopes, which depend on your role and the task you want to complete.
@@ -113,6 +124,8 @@ To grant the migrator role using the CLI, you must have installed the {% data va
gh gei grant-migrator-role --github-org ORGANIZATION --actor ACTOR --actor-type TYPE
```
+ {% data reusables.enterprise-migration-tool.grant-migrator-role-ghecom %}
+
### Granting the migrator role with the GraphQL API
{% data reusables.enterprise-migration-tool.grant-migrator-role-graphql %}
@@ -127,10 +140,18 @@ To grant the migrator role using the CLI, you must have installed the {% data va
If the source of your migration is {% data variables.product.prodname_ghe_server %}, you do not need to add any {% data variables.product.prodname_dotcom %} IP ranges to your firewall configuration or the IP allow list on {% data variables.location.product_location_enterprise %}. However, depending on the setup of your blob storage provider, you may need to update your blob storage provider's configuration to allow access to the {% data variables.product.prodname_dotcom %} IP ranges below.
-### Identifying {% data variables.product.prodname_dotcom %}'s IP ranges
+### IP ranges for {% data variables.product.prodname_dotcom_the_website %}
{% data reusables.enterprise-migration-tool.identifying-githubs-ip-ranges %}
+### IP ranges for {% data variables.enterprise.data_residency_site %}
+
+{% data reusables.enterprise-migration-tool.ip-ranges-ghecom %}
+
+In addition, if you are migrating from {% data variables.product.prodname_ghe_server %} and using a blob storage account with firewall rules:
+
+{% data reusables.enterprise-migration-tool.extra-requirements-storage %}
+
## Further reading
* "[AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)"
diff --git a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-organizations-from-githubcom-to-github-enterprise-cloud.md b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-organizations-from-githubcom-to-github-enterprise-cloud.md
index 324502894cce..6a7999e92f90 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-organizations-from-githubcom-to-github-enterprise-cloud.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-organizations-from-githubcom-to-github-enterprise-cloud.md
@@ -1,6 +1,6 @@
---
title: Migrating organizations from GitHub.com to GitHub Enterprise Cloud
-shortTitle: Migrate organizations on GitHub.com
+shortTitle: Migrate organizations from GitHub.com
intro: 'You can migrate organizations from {% data variables.product.prodname_dotcom_the_website %} to {% data variables.product.prodname_ghe_cloud %}, using the {% data variables.product.prodname_cli %} or the GraphQL API.'
versions:
fpt: '*'
@@ -15,6 +15,8 @@ redirect_from:
## About organization migrations with {% data variables.product.prodname_importer_proper_name %}
+Migrations to {% data variables.product.prodname_ghe_cloud %} include migrations between accounts on {% data variables.product.prodname_dotcom_the_website %} and, if you're adopting {% data variables.enterprise.data_residency_short %}, migrations to your enterprise's subdomain of {% data variables.enterprise.data_residency_site %}.
+
{% data reusables.enterprise-migration-tool.tool-options %}
{% cli %}
@@ -85,7 +87,7 @@ mutation startOrganizationMigration (
| Query variable | Description |
|----|----|
`sourceOrgUrl` | The URL of the source organization, such as `https://github.com/octo-org`.
-`targetOrgName` | The name you want the new organization to have. Must be unique on {% data variables.product.prodname_dotcom_the_website %}.
+`targetOrgName` | The name you want the new organization to have. Cannot be shared by another organization on your destination platform.
`targetEnterpriseId` | The ID of the enterprise that you want to create the new organization in, returned by step 2.
`sourceAccessToken` | Your {% data variables.product.pat_v1 %} for the source organization. For requirements, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products#required-scopes-for-personal-access-tokens)."
`targetAccessToken` | Your {% data variables.product.pat_v1 %} for the destination enterprise.
@@ -159,6 +161,8 @@ Before you can use the {% data variables.product.prodname_gei_cli_short %} to mi
$env:GH_SOURCE_PAT="TOKEN"
```
+{% data reusables.enterprise-migration-tool.set-target-api-url %}
+
## Step 4: Migrate your organization
To migrate an organization, use the `gh gei migrate-org` command.
@@ -167,10 +171,12 @@ To migrate an organization, use the `gh gei migrate-org` command.
gh gei migrate-org --github-source-org SOURCE --github-target-org DESTINATION --github-target-enterprise ENTERPRISE
```
+> [!NOTE] {% data reusables.enterprise-migration-tool.add-target-api-url %}
+
{% data reusables.enterprise-migration-tool.placeholder-table %}
{% data reusables.enterprise-migration-tool.source-placeholder %}
-DESTINATION | The name you want the new organization to have. Must be unique on {% data variables.product.prodname_dotcom_the_website %}.
-ENTERPRISE | The slug for your destination enterprise, which you can identify by looking at the URL for your enterprise account, `https://github.com/enterprises/SLUG`.
+DESTINATION | The name you want the new organization to have. Cannot be shared by another organization on your destination platform.
+ENTERPRISE | The slug for your destination enterprise, which you can identify by looking at the URL for your enterprise account, `https://github.com/enterprises/SLUG` or `https://SLUG.ghe.com`.
## Step 5: Validate your migration and check the error log
diff --git a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-repositories-from-github-enterprise-server-to-github-enterprise-cloud.md b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-repositories-from-github-enterprise-server-to-github-enterprise-cloud.md
index 4d6f01e7c22e..0bb29a920843 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-repositories-from-github-enterprise-server-to-github-enterprise-cloud.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-repositories-from-github-enterprise-server-to-github-enterprise-cloud.md
@@ -29,7 +29,7 @@ To migrate your repositories from {% data variables.product.prodname_ghe_server
1. For each repository you want to migrate, repeat these steps.
* Use the REST API on {% data variables.location.product_location_enterprise %} to generate migration archives for your repository
* Upload your migration archives to a location where they can be accessed by {% data variables.product.prodname_dotcom %}
- * Start your migration using the GraphQL API for {% data variables.product.prodname_dotcom %}, passing in your archive URLs
+ * Start your migration using the GraphQL API for your migration destination, passing in your archive URLs
* Check the status of your migration via the GraphQL API
* Validate your migration and check the error log
@@ -97,6 +97,10 @@ Blob storage is required to migrate repositories with large Git source or metada
{% data reusables.enterprise-migration-tool.blob-storage-management-console %}
+### Allowing network access
+
+If you have configured firewall rules on your storage account, ensure you have allowed access to the IP ranges for your migration destination. See "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products#configuring-ip-allow-lists-for-migrations)."
+
## Step 4: Set up a migration source in {% data variables.product.prodname_ghe_cloud %}
{% data reusables.enterprise-migration-tool.identify-migration-source-intro %}
@@ -383,6 +387,10 @@ If you configure your blob storage credentials in the {% data variables.product.
{% data reusables.enterprise-migration-tool.azure-credentials-cli %}
+### Allowing network access
+
+If you have configured firewall rules on your storage account, ensure you have allowed access to the IP ranges for your migration destination. See "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products#configuring-ip-allow-lists-for-migrations)."
+
## Step 5: Generate a migration script
{% data reusables.enterprise-migration-tool.generate-migration-script %}
@@ -414,14 +422,20 @@ gh gei generate-script --github-source-org SOURCE \
--aws-bucket-name AWS-BUCKET-NAME
```
-{% data reusables.enterprise-migration-tool.ssl-flag %}
-
-{% data reusables.enterprise-migration-tool.download-migration-logs-flag %}
+#### Placeholders
{% data reusables.enterprise-migration-tool.generate-script-table %}
{% data reusables.enterprise-migration-tool.ghes-api-url-placeholder %}
{% data reusables.enterprise-migration-tool.aws-bucket-name-placeholder %}
+#### Additional arguments
+
+| Argument | Description |
+| -------- | ----------- |
+| `--target-api-url TARGET-API-URL` | {% data reusables.enterprise-migration-tool.add-target-api-url %} |
+| `--no-ssl-verify` | {% data reusables.enterprise-migration-tool.ssl-flag %} |
+| `--download-migration-logs` | Download the migration log for each migrated repository. For more information about migration logs, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/accessing-your-migration-logs-for-github-enterprise-importer#downloading-all-migration-logs-for-an-organization)." |
+
### Reviewing the migration script
{% data reusables.enterprise-migration-tool.review-migration-script %}
@@ -482,17 +496,24 @@ gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --gith
--ghes-api-url GHES-API-URL --aws-bucket-name "AWS-BUCKET-NAME"
```
-{% data reusables.enterprise-migration-tool.ssl-flag %}
-
-{% data reusables.enterprise-migration-tool.skip-releases %}
-
-{% data reusables.enterprise-migration-tool.set-repository-visibility %}
+#### Placeholders
{% data reusables.enterprise-migration-tool.migrate-repo-table-ec %}
{% data reusables.enterprise-migration-tool.ghes-api-url-placeholder %}
{% data reusables.enterprise-migration-tool.azure-storage-connection-string-placeholder %}
{% data reusables.enterprise-migration-tool.aws-bucket-name-placeholder %}
+#### Additional arguments
+
+| Argument | Description |
+| -------- | ----------- |
+| `--target-api-url TARGET-API-URL` | {% data reusables.enterprise-migration-tool.add-target-api-url %} |
+| `--no-ssl-verify` | {% data reusables.enterprise-migration-tool.ssl-flag %} |
+| `--skip-releases` | {% data reusables.enterprise-migration-tool.skip-releases %} |
+| `--target-repo-visibility TARGET-VISIBILITY` | {% data reusables.enterprise-migration-tool.set-repository-visibility %} |
+
+#### Aborting the migration
+
{% data reusables.enterprise-migration-tool.abort-migration %}
```shell copy
diff --git a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-repositories-from-githubcom-to-github-enterprise-cloud.md b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-repositories-from-githubcom-to-github-enterprise-cloud.md
index b226951d6084..c882ac17c901 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-repositories-from-githubcom-to-github-enterprise-cloud.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/migrating-repositories-from-githubcom-to-github-enterprise-cloud.md
@@ -1,6 +1,6 @@
---
title: Migrating repositories from GitHub.com to GitHub Enterprise Cloud
-shortTitle: Migrate repositories on GitHub.com
+shortTitle: Migrate repositories from GitHub.com
intro: 'You can migrate repositories from {% data variables.product.prodname_dotcom_the_website %} to {% data variables.product.prodname_ghe_cloud %}, using the {% data variables.product.prodname_cli %} or the GraphQL API.'
versions:
fpt: '*'
@@ -15,6 +15,8 @@ redirect_from:
## About repository migrations with {% data variables.product.prodname_importer_proper_name %}
+Migrations to {% data variables.product.prodname_ghe_cloud %} include migrations between accounts on {% data variables.product.prodname_dotcom_the_website %} and, if you're adopting {% data variables.enterprise.data_residency_short %}, migrations to your enterprise's subdomain of {% data variables.enterprise.data_residency_site %}.
+
{% data reusables.enterprise-migration-tool.tool-options %}
{% cli %}
@@ -186,11 +188,18 @@ If you want to migrate a single repository, skip to the next step.
gh gei generate-script --github-source-org SOURCE --github-target-org DESTINATION --output FILENAME
```
-{% data reusables.enterprise-migration-tool.download-migration-logs-flag %}
+{% data reusables.enterprise-migration-tool.gei-binary-generate-script %}
+
+#### Placeholders
{% data reusables.enterprise-migration-tool.generate-script-table %}
-{% data reusables.enterprise-migration-tool.gei-binary-generate-script %}
+#### Additional arguments
+
+| Argument | Description |
+| -------- | ----------- |
+| `--target-api-url TARGET-API-URL` | {% data reusables.enterprise-migration-tool.add-target-api-url %} |
+| `--download-migration-logs` | Download the migration log for each migrated repository. For more information about migration logs, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/accessing-your-migration-logs-for-github-enterprise-importer#downloading-all-migration-logs-for-an-organization)." |
### Reviewing the migration script
@@ -216,10 +225,20 @@ gh gei generate-script --github-source-org SOURCE --github-target-org DESTINATIO
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME
```
-{% data reusables.enterprise-migration-tool.skip-releases %}
+#### Placeholders
{% data reusables.enterprise-migration-tool.migrate-repo-table-ec %}
+#### Additional arguments
+
+| Argument | Description |
+| -------- | ----------- |
+| `--target-api-url TARGET-API-URL` | {% data reusables.enterprise-migration-tool.add-target-api-url %} |
+| `--skip-releases` | {% data reusables.enterprise-migration-tool.skip-releases %} |
+| `--target-repo-visibility TARGET-VISIBILITY` | {% data reusables.enterprise-migration-tool.set-repository-visibility %} |
+
+#### Aborting the migration
+
{% data reusables.enterprise-migration-tool.abort-migration %}
```shell copy
diff --git a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/overview-of-a-migration-between-github-products.md b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/overview-of-a-migration-between-github-products.md
index 2598607b698c..3a60489640b1 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/overview-of-a-migration-between-github-products.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/overview-of-a-migration-between-github-products.md
@@ -30,7 +30,7 @@ If you're migrating between {% data variables.product.company_short %} products,
### Do we want to migrate by organization or by repository?
-First, if your migration source and destination are both {% data variables.product.prodname_dotcom_the_website %}, decide whether you want to migrate on an organization-by-organization basis or on a repository-by-repository basis.
+First, if your migration source is {% data variables.product.prodname_dotcom_the_website %}, decide whether you want to migrate on an organization-by-organization basis or on a repository-by-repository basis.
{% note %}
@@ -223,6 +223,10 @@ When {% data variables.product.prodname_dependabot_alerts %} and the dependency
You'll need to re-add any encrypted secrets for {% data variables.product.prodname_dependabot %}. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot)."
+### Reconfiguring features for {% data variables.enterprise.data_residency_short %}
+
+If you have migrated from {% data variables.product.prodname_dotcom_the_website %} to {% data variables.enterprise.data_residency %}, some features work differently, and some features will require different or additional configuration. See "[AUTOTITLE](/enterprise-cloud@latest/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency)."
+
### Enabling webhooks
All active webhooks in the source repository are migrated. However, the migrated webhooks will be disabled by default. You can re-enable these webhooks in the repository settings.
diff --git a/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/about-migrations-from-azure-devops-to-github-enterprise-cloud.md b/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/about-migrations-from-azure-devops-to-github-enterprise-cloud.md
index 91fb15e19de7..2193ef93ab53 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/about-migrations-from-azure-devops-to-github-enterprise-cloud.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/about-migrations-from-azure-devops-to-github-enterprise-cloud.md
@@ -10,7 +10,7 @@ versions:
## About migrations from Azure DevOps
-You can use {% data variables.product.prodname_importer_proper_name %} to migrate repositories from Azure DevOps to {% data variables.product.prodname_ghe_cloud %}.
+You can use {% data variables.product.prodname_importer_proper_name %} to migrate repositories from Azure DevOps to {% data variables.product.prodname_ghe_cloud %} ({% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}).
You can only use {% data variables.product.prodname_importer_proper_name %} to migrate from Azure DevOps Cloud, not from Azure DevOps Server. If you currently use Azure DevOps Server and want to migrate to {% data variables.product.prodname_dotcom %}, you can migrate to Azure DevOps Cloud first. For more information, see [Migrate to Azure DevOps](https://azure.microsoft.com/en-us/services/devops/migrate/) on the Azure site.
diff --git a/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/managing-access-for-a-migration-from-azure-devops.md b/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/managing-access-for-a-migration-from-azure-devops.md
index 4d689e081211..77a0bdaa0e7b 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/managing-access-for-a-migration-from-azure-devops.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/managing-access-for-a-migration-from-azure-devops.md
@@ -72,6 +72,8 @@ To grant the migrator role using the CLI, you must have installed the {% data va
gh ado2gh grant-migrator-role --github-org ORGANIZATION --actor ACTOR --actor-type TYPE
```
+ {% data reusables.enterprise-migration-tool.grant-migrator-role-ghecom %}
+
### Granting the migrator role with the GraphQL API
{% data reusables.enterprise-migration-tool.grant-migrator-role-graphql %}
@@ -84,10 +86,14 @@ To grant the migrator role using the CLI, you must have installed the {% data va
{% data reusables.enterprise-migration-tool.configuring-ip-allow-lists %}
-### Identifying {% data variables.product.prodname_dotcom %}'s IP ranges
+### IP ranges for {% data variables.product.prodname_dotcom_the_website %}
{% data reusables.enterprise-migration-tool.identifying-githubs-ip-ranges %}
+### IP ranges for {% data variables.enterprise.data_residency_site %}
+
+{% data reusables.enterprise-migration-tool.ip-ranges-ghecom %}
+
## Further reading
* "[AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)"
diff --git a/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/migrating-repositories-from-azure-devops-to-github-enterprise-cloud.md b/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/migrating-repositories-from-azure-devops-to-github-enterprise-cloud.md
index c07aa3d81d07..4513b502f5ec 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/migrating-repositories-from-azure-devops-to-github-enterprise-cloud.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-from-azure-devops-to-github-enterprise-cloud/migrating-repositories-from-azure-devops-to-github-enterprise-cloud.md
@@ -185,16 +185,18 @@ Before you can use the {% data variables.product.prodname_ado2gh_cli_short %} to
```shell copy
export GH_PAT="TOKEN"
- export ADO_PAT="TOKEN"
+ export ADO_PAT="TOKEN"
```
* If you're using PowerShell, use the `$env` command.
```shell copy
$env:GH_PAT="TOKEN"
- $env:ADO_PAT="TOKEN"
+ $env:ADO_PAT="TOKEN"
```
+{% data reusables.enterprise-migration-tool.set-target-api-url %}
+
## Step 4: Generate a migration script
{% data reusables.enterprise-migration-tool.generate-migration-script %}
@@ -209,15 +211,21 @@ To generate a migration script, run the `gh ado2gh generate-script` command.
gh ado2gh generate-script --ado-org SOURCE --github-org DESTINATION --output FILENAME
```
-To add additional functionality to the script, such as rewiring pipelines, creating teams, and configuring Azure Boards integrations, you can add the `--all` flag.
-
-{% data reusables.enterprise-migration-tool.download-migration-logs-flag %}
+#### Placeholders
{% data reusables.enterprise-migration-tool.placeholder-table %}
{% data reusables.enterprise-migration-tool.source-placeholder %}
{% data reusables.enterprise-migration-tool.destination-placeholder %}
{% data reusables.enterprise-migration-tool.filename-placeholder %}
+#### Additional arguments
+
+| Argument | Description |
+| -------- | ----------- |
+| `--target-api-url TARGET-API-URL` | {% data reusables.enterprise-migration-tool.add-target-api-url %} |
+| `--all` | Add additional functionality to the script, such as rewiring pipelines, creating teams, and configuring Azure Boards integrations. |
+| `--download-migration-logs` | Download the migration log for each migrated repository. For more information about migration logs, see "[AUTOTITLE](/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/accessing-your-migration-logs-for-github-enterprise-importer#downloading-all-migration-logs-for-an-organization)." |
+
### Reviewing the migration script
{% data reusables.enterprise-migration-tool.review-migration-script %}
@@ -240,6 +248,8 @@ To migrate a single repository, use the `gh ado2gh migrate-repo` command.
gh ado2gh migrate-repo --ado-org SOURCE --ado-team-project TEAM-PROJECT --ado-repo CURRENT-NAME --github-org DESTINATION --github-repo NEW-NAME
```
+> [!NOTE] {% data reusables.enterprise-migration-tool.add-target-api-url %}
+
{% data reusables.enterprise-migration-tool.migrate-repo-table-ec %}
TEAM-PROJECT | Name of the team project of the repository you want to migrate
diff --git a/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/about-migrations-from-bitbucket-server-to-github-enterprise-cloud.md b/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/about-migrations-from-bitbucket-server-to-github-enterprise-cloud.md
index 89f3da85e3b1..4eebe7e2c365 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/about-migrations-from-bitbucket-server-to-github-enterprise-cloud.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/about-migrations-from-bitbucket-server-to-github-enterprise-cloud.md
@@ -10,7 +10,7 @@ versions:
## About migrations from Bitbucket Server
-You can use {% data variables.product.prodname_importer_proper_name %} to migrate repositories from Bitbucket Server to {% data variables.product.prodname_ghe_cloud %}. Migrations from Bitbucket Server are only supported for Bitbucket Server or Bitbucket Data Center version 5.14+ or higher.
+You can use {% data variables.product.prodname_importer_proper_name %} to migrate repositories from Bitbucket Server to {% data variables.product.prodname_ghe_cloud %} ({% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}). Migrations from Bitbucket Server are only supported for Bitbucket Server or Bitbucket Data Center version 5.14+ or higher.
## Data that is migrated
diff --git a/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/managing-access-for-a-migration-from-bitbucket-server.md b/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/managing-access-for-a-migration-from-bitbucket-server.md
index 929c3897fbfb..7bd0bb7a90a6 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/managing-access-for-a-migration-from-bitbucket-server.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/managing-access-for-a-migration-from-bitbucket-server.md
@@ -93,6 +93,8 @@ To grant the migrator role using the CLI, you must have installed the {% data va
gh bbs2gh grant-migrator-role --github-org ORGANIZATION --actor ACTOR --actor-type TYPE
```
+ {% data reusables.enterprise-migration-tool.grant-migrator-role-ghecom %}
+
### Granting the migrator role with the GraphQL API
{% data reusables.enterprise-migration-tool.grant-migrator-role-graphql %}
@@ -110,10 +112,18 @@ If the destination of your migration uses an IP allow list (either {% data varia
For more information, see "[AUTOTITLE](/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization)" and "[AUTOTITLE](/enterprise-cloud@latest/admin/configuration/configuring-your-enterprise/restricting-network-traffic-to-your-enterprise-with-an-ip-allow-list)."
-### Identifying {% data variables.product.prodname_dotcom %}'s IP ranges
+### IP ranges for {% data variables.product.prodname_dotcom_the_website %}
{% data reusables.enterprise-migration-tool.identifying-githubs-ip-ranges %}
+### IP ranges for {% data variables.enterprise.data_residency_site %}
+
+{% data reusables.enterprise-migration-tool.ip-ranges-ghecom %}
+
+In addition, if you are using a blob storage account with firewall rules:
+
+{% data reusables.enterprise-migration-tool.extra-requirements-storage %}
+
## Further reading
* "[AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)"
diff --git a/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/migrating-repositories-from-bitbucket-server-to-github-enterprise-cloud.md b/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/migrating-repositories-from-bitbucket-server-to-github-enterprise-cloud.md
index 52acf50aa145..636180171020 100644
--- a/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/migrating-repositories-from-bitbucket-server-to-github-enterprise-cloud.md
+++ b/content/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/migrating-repositories-from-bitbucket-server-to-github-enterprise-cloud.md
@@ -82,6 +82,8 @@ You'll also need to set environment variables for your Bitbucket Server username
$env:SMB_PASSWORD="PASSWORD"
```
+{% data reusables.enterprise-migration-tool.set-target-api-url %}
+
## Step 4: Set up blob storage
Because many Bitbucket Server instances sit behind firewalls, the {% data variables.product.prodname_cli %} uses blob storage as an intermediate location to store your data that is reachable from the internet.
@@ -104,6 +106,10 @@ Before you can run a migration, you need to set up a storage container with your
{% data reusables.enterprise-migration-tool.azure-credentials-cli %}
+### Allowing network access
+
+If you have configured firewall rules on your storage account, ensure you have allowed access to the IP ranges for your migration destination. See "[AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/managing-access-for-a-migration-from-bitbucket-server#ip-ranges-for-ghecom)."
+
## Step 5: Migrate a repository
You can migrate repositories with the `gh bbs2gh migrate-repo` command.
@@ -131,13 +137,15 @@ To migrate a single repository, use the `gh bbs2gh migrate-repo` command.
gh bbs2gh migrate-repo --bbs-server-url BBS-SERVER-URL \
--bbs-project PROJECT --bbs-repo CURRENT-NAME \
--github-org DESTINATION --github-repo NEW-NAME \
- # Use the following options if your Bitbucket Server instance runs on Linux
+ # If you are migrating to {% data variables.enterprise.data_residency_site %}:
+ --target-api-url TARGET-API-URL
+ # If your Bitbucket Server instance runs on Linux:
--ssh-user SSH-USER --ssh-private-key PATH-TO-KEY
- # Use the following options if your Bitbucket Server instance runs on Windows
+ # If your Bitbucket Server instance runs on Windows:
--smb-user SMB-USER
- # Use the following option if you're using AWS S3 as your blob storage provider
+ # If you're using AWS S3 as your blob storage provider:
--aws-bucket-name AWS-BUCKET-NAME
- # Use the following option if you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer
+ # If you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer:
--archive-download-host ARCHIVE-DOWNLOAD-HOST
```
@@ -147,6 +155,7 @@ gh bbs2gh migrate-repo --bbs-server-url BBS-SERVER-URL \
{% data reusables.enterprise-migration-tool.current-name-placeholder %}
{% data reusables.enterprise-migration-tool.destination-placeholder %}
{% data reusables.enterprise-migration-tool.new-name-placeholder %}
+{% data reusables.enterprise-migration-tool.target-api-url-placeholder %}
{% data reusables.enterprise-migration-tool.ssh-user-placeholder %}
{% data reusables.enterprise-migration-tool.path-to-key-placeholder %}
{% data reusables.enterprise-migration-tool.smb-user-placeholder %}
@@ -202,8 +211,10 @@ gh bbs2gh migrate-repo --archive-path ARCHIVE-PATH \
--bbs-server-url BBS-SERVER-URL \
--bbs-project PROJECT \
--bbs-repo CURRENT-NAME \
- # Use the following option if you're using AWS S3 as your blob storage provider
+ # If you're using AWS S3 as your blob storage provider:
--aws-bucket-name AWS-BUCKET-NAME
+ # If you are migrating to {% data variables.enterprise.data_residency_site %}:
+ --target-api-url TARGET-API-URL
```
{% data reusables.enterprise-migration-tool.placeholder-table %}
@@ -214,6 +225,7 @@ gh bbs2gh migrate-repo --archive-path ARCHIVE-PATH \
{% data reusables.enterprise-migration-tool.project-placeholder %}
{% data reusables.enterprise-migration-tool.current-name-placeholder %}
{% data reusables.enterprise-migration-tool.aws-bucket-name-placeholder %}
+{% data reusables.enterprise-migration-tool.target-api-url-placeholder %}
### Cancelling a migration
@@ -241,11 +253,13 @@ To generate a migration script, run the `gh bbs2gh generate-script` command.
gh bbs2gh generate-script --bbs-server-url BBS-SERVER-URL \
--github-org DESTINATION \
--output FILENAME \
- # Use the following options if your Bitbucket Server instance runs on Linux
+ # If you are migrating to {% data variables.enterprise.data_residency_site %}:
+ --target-api-url TARGET-API-URL
+ # If your Bitbucket Server instance runs on Linux:
--ssh-user SSH-USER --ssh-private-key PATH-TO-KEY
- # Use the following options if your Bitbucket Server instance runs on Windows
+ # If your Bitbucket Server instance runs on Windows:
--smb-user SMB-USER
- # Use the following option if you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer
+ # If you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer:
--archive-download-host ARCHIVE-DOWNLOAD-HOST
```
@@ -255,6 +269,7 @@ gh bbs2gh generate-script --bbs-server-url BBS-SERVER-URL \
{% data reusables.enterprise-migration-tool.bbs-server-url-placeholder %}
{% data reusables.enterprise-migration-tool.destination-placeholder %}
{% data reusables.enterprise-migration-tool.filename-placeholder %}
+{% data reusables.enterprise-migration-tool.target-api-url-placeholder %}
{% data reusables.enterprise-migration-tool.ssh-user-placeholder %}
{% data reusables.enterprise-migration-tool.path-to-key-placeholder %}
{% data reusables.enterprise-migration-tool.smb-user-placeholder %}
diff --git a/content/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer.md b/content/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer.md
index c7338f519d2d..3c5713e23589 100644
--- a/content/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer.md
+++ b/content/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer.md
@@ -24,7 +24,7 @@ redirect_from:
{% data variables.product.prodname_importer_proper_name %} is a highly customizable migration tool designed to help you move your enterprise to {% data variables.product.prodname_ghe_cloud %}.
-You can migrate on a repository-by-repository basis or, if your migration source and destination are both {% data variables.product.prodname_dotcom_the_website %}, on an organization-by-organization basis.
+You can migrate on a repository-by-repository basis or, if your migration source is {% data variables.product.prodname_dotcom_the_website %}, on an organization-by-organization basis.
{% data variables.product.prodname_importer_proper_name %} allows you to customize your migration to meet your enterprise's unique needs with:
* **A distinct migration permissions role** for repository migrations, which allows you to designate teams and/or individual users to run a migration and removes the need for organization owners to complete the migration.
diff --git a/content/organizations/collaborating-with-groups-in-organizations/about-your-organizations-news-feed.md b/content/organizations/collaborating-with-groups-in-organizations/about-your-organizations-news-feed.md
index 7b684f552ef2..c340e0949a88 100644
--- a/content/organizations/collaborating-with-groups-in-organizations/about-your-organizations-news-feed.md
+++ b/content/organizations/collaborating-with-groups-in-organizations/about-your-organizations-news-feed.md
@@ -18,11 +18,8 @@ shortTitle: Organization news feed
{% ifversion fpt or ghec %}
-{% note %}
+>[!NOTE] The organization news feed is not available with {% data variables.product.prodname_emus %}.
-**Note:** The organization news feed is not available with {% data variables.product.prodname_emus %}.
-
-{% endnote %}
{% endif %}
An organization's news feed shows other people's activity on repositories owned by that organization. You can use your organization's news feed to see when someone opens, closes, or merges an issue or pull request, creates or deletes a branch, creates a tag or release, comments on an issue, pull request, or commit, or pushes new commits to {% data variables.product.product_name %}.
diff --git a/content/organizations/collaborating-with-groups-in-organizations/index.md b/content/organizations/collaborating-with-groups-in-organizations/index.md
index a19530e6d402..1d65afabe027 100644
--- a/content/organizations/collaborating-with-groups-in-organizations/index.md
+++ b/content/organizations/collaborating-with-groups-in-organizations/index.md
@@ -21,7 +21,7 @@ children:
- /customizing-your-organizations-profile
- /about-your-organizations-news-feed
- /viewing-insights-for-dependencies-in-your-organization
- - /viewing-usage-metrics-for-github-actions
+ - /viewing-github-actions-metrics-for-your-organization
shortTitle: Collaborate with groups
---
diff --git a/content/organizations/collaborating-with-groups-in-organizations/viewing-github-actions-metrics-for-your-organization.md b/content/organizations/collaborating-with-groups-in-organizations/viewing-github-actions-metrics-for-your-organization.md
new file mode 100644
index 000000000000..4a3c6d41d3eb
--- /dev/null
+++ b/content/organizations/collaborating-with-groups-in-organizations/viewing-github-actions-metrics-for-your-organization.md
@@ -0,0 +1,38 @@
+---
+title: Viewing GitHub Actions metrics for your organization
+shortTitle: GitHub Actions metrics
+intro: GitHub Actions metrics provide insights into how and where your organization is using resources for its CI/CD pipelines.
+permissions: Organization owners and users with the "View organization Actions metrics" permission.
+versions:
+ feature: actions-metrics
+redirect_from:
+ - /organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions
+ - /organizations/collaborating-with-groups-in-organizations/viewing-metrics-for-github-actions
+---
+
+{% data reusables.actions.about-actions-metrics %}
+
+{% data reusables.actions.enabling-actions-metrics %}
+
+## About {% data variables.product.prodname_actions %} usage metrics
+
+{% data reusables.actions.about-actions-usage-metrics %}
+
+{% data reusables.actions.actions-usage-metrics-not-billing-metrics %}
+
+## About {% data variables.product.prodname_actions %} performance metrics
+
+{% data reusables.actions.about-actions-performance-metrics %}
+
+## Understanding {% data variables.product.prodname_actions %} metrics aggregation
+
+{% data reusables.actions.about-actions-usage-metrics-aggregation %}
+
+## Viewing {% data variables.product.prodname_actions %} metrics for your organization
+
+{% data reusables.actions.actions-metrics-discrepancy-note %}
+
+{% data reusables.profile.access_org %}
+{% data reusables.user-settings.access_org %}
+{% data reusables.organizations.insights %}
+{% data reusables.actions.viewing-actions-metrics %}
diff --git a/content/organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions.md b/content/organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions.md
deleted file mode 100644
index fe90f3cf87bb..000000000000
--- a/content/organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Viewing usage metrics for GitHub Actions
-shortTitle: GitHub Actions usage metrics
-intro: 'GitHub Actions usage metrics provide insights into how and where your organization is using resources for its CI/CD pipelines.'
-permissions: 'Organization owners and users with the "View organization Actions usage metrics" permission.'
-product: 'Your organization must be on a {% data variables.product.prodname_ghe_cloud %} plan.'
-versions:
- feature: actions-usage-metrics
----
-
-## About {% data variables.product.prodname_actions %} usage metrics
-
-{% data reusables.actions.about-actions-usage-metrics %}
-
-{% data reusables.actions.actions-usage-metrics-not-billing-metrics %}
-
-## Enabling access to {% data variables.product.prodname_actions %} usage metrics
-
-Organization owners can create custom organization roles to allow people to view {% data variables.product.prodname_actions %} usage metrics for their organization. To provide users with access, select the "View organization Actions usage metrics" role when creating a custom organization role. For more information, see "[AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles)."
-
-## Understanding {% data variables.product.prodname_actions %} usage metrics aggregation
-
-{% data reusables.actions.about-actions-usage-metrics-aggregation %}
-
-## Viewing {% data variables.product.prodname_actions %} usage metrics
-
-> [!NOTE]
-There may be a discrepancy between the **Workflows** tab's job count and the **Jobs** tab's count due to differences in how unique jobs are identified. This does not affect the total minutes calculated.
-
-{% data reusables.profile.access_org %}
-{% data reusables.user-settings.access_org %}
-{% data reusables.organizations.insights %}
-1. In the "Insights" navigation menu, click **Actions Usage Metrics**.
-1. Optionally, to select a time period to view usage metrics for, choose an option from the **Period** drop down menu at the top right of the page. For more information, see "[Understanding {% data variables.product.prodname_actions %} usage metrics aggregation](#understanding-github-actions-usage-metrics-aggregation)."
-1. Click on the tab that contains the usage metrics you would like to view. For more information, see "[About {% data variables.product.prodname_actions %} usage metrics](#about-github-actions-usage-metrics)."
-1. Optionally, to filter the data displayed in a tab, create a filter.
- 1. Click on the **{% octicon "filter" aria-hidden="true" %} Filter** button.
- 1. Click **{% octicon "plus" aria-hidden="true" %} Add a filter**.
- 1. Choose a metric you would like to filter results by.
- 1. Depending on the metric you chose, fill out information in the "Qualifier," "Operator," and "Value" columns.
- 1. Optionally, click **{% octicon "plus" aria-hidden="true" %} Add a filter** to add another filter.
- 1. Click **Apply**.
-1. Optionally, to download usage metrics to a CSV file, click {% octicon "download" aria-label="Download report" %}.
diff --git a/content/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles.md b/content/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles.md
index f3bda072cd2e..c5907d60feb5 100644
--- a/content/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles.md
+++ b/content/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles.md
@@ -56,8 +56,8 @@ Manage organization OAuth application policies | Access to the "OAuth applicatio
| Manage organization runners and runner groups | Access to create and manage GitHub-hosted runners, self-hosted runners, and runner groups, and control where self-hosted runners can be created. | "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#overview-of-github-hosted-runners)"
"[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)" |
| Manage organization Actions secrets | Access to create and manage Actions organization secrets. | "[AUTOTITLE](/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-an-organization)" |
| Manage organization Actions variables | Access to create and manage Actions organization variables. | "[AUTOTITLE](/actions/learn-github-actions/variables#creating-configuration-variables-for-an-organization)" |
-| {% ifversion actions-usage-metrics %} |
-| View organization Actions metrics | View {% data variables.product.prodname_actions %} usage metrics for your organization. | "[AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions)" |
+| {% ifversion actions-metrics %} |
+| View organization Actions metrics | View {% data variables.product.prodname_actions %} metrics for your organization. | "[AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions)" |
| {% endif %} |
| {% ifversion push-protection-bypass-fine-grained-permissions %} |
| Review and manage {% data variables.product.prodname_secret_scanning %} bypass requests | Review and manage {% data variables.product.prodname_secret_scanning %} bypass requests for your organization. | "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/delegated-bypass-for-push-protection)" |
diff --git a/content/organizations/managing-programmatic-access-to-your-organization/index.md b/content/organizations/managing-programmatic-access-to-your-organization/index.md
index ccfd94ccbe8c..305ee87228de 100644
--- a/content/organizations/managing-programmatic-access-to-your-organization/index.md
+++ b/content/organizations/managing-programmatic-access-to-your-organization/index.md
@@ -21,5 +21,6 @@ children:
- /managing-requests-for-personal-access-tokens-in-your-organization
- /reviewing-and-revoking-personal-access-tokens-in-your-organization
- /limiting-oauth-app-and-github-app-access-requests
+ - /viewing-api-insights-in-your-organization
shortTitle: Manage programmatic access
---
diff --git a/content/organizations/managing-programmatic-access-to-your-organization/viewing-api-insights-in-your-organization.md b/content/organizations/managing-programmatic-access-to-your-organization/viewing-api-insights-in-your-organization.md
new file mode 100644
index 000000000000..d4d8db8759e8
--- /dev/null
+++ b/content/organizations/managing-programmatic-access-to-your-organization/viewing-api-insights-in-your-organization.md
@@ -0,0 +1,75 @@
+---
+title: Viewing API insights in your organization
+shortTitle: Viewing API insights
+intro: "You can view REST API activity for your entire organization or specific apps and users."
+permissions: 'Organization owners and users with the "View organization API insights" permission.'
+product: 'Your organization must be on a {% data variables.product.prodname_ghe_cloud %} plan.'
+versions:
+ feature: 'api-insights'
+topics:
+ - API
+ - Organizations
+ - REST
+---
+
+> [!NOTE] This feature is currently in {% data variables.release-phases.public_preview %} and is subject to change. We welcome your feedback in [this {% data variables.product.prodname_github_community %} discussion](https://github.co/api-insights-discussion).
+
+## About API insights
+
+As a {% data variables.product.prodname_ghe_cloud %} organization owner, you and your designated users can view REST API activity for your entire organization or specific apps and users. This helps you understand the sources of your REST API activity and manage against your primary rate limits, giving you visibility into the timeframe, apps, and API endpoints involved. To learn more about primary rate limits, see "[AUTOTITLE](/rest/using-the-rest-api/rate-limits-for-the-rest-api#about-primary-rate-limits)."
+
+> [!NOTE] Currently, this feature supports only the `core` category of REST API endpoints (non-search-related), and primary rate limits but not secondary rate limits. For information about API categories, see "[AUTOTITLE](/rest/rate-limit/rate-limit)." To learn more about primary and secondary rate limits, see "[AUTOTITLE](/rest/using-the-rest-api/rate-limits-for-the-rest-api)."
+
+## Enabling access to API insights
+
+Organization owners can create custom organization roles to allow people to view API insights for their organization. To provide users with access, select the **View organization API insights** permission when creating a custom organization role. Then assign the custom role to an organization member or team. For more information, see "[AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles)."
+
+>[!WARNING] Granting access to organization non-owners will allow them to view API insights for all users and apps in the organization, so privacy should be considered.
+
+## Understanding API insights aggregation
+
+The time period selection feature allows you to view API insights over predefined periods or a custom period, as detailed in the following table. By default, data is presented in Coordinated Universal Time (UTC). You can change the data displayed from UTC to your browser's time zone in the "Period" drop down menu at the top-right of the page.
+
+{% rowheaders %}
+
+| Period | Description |
+|-----------------|------------------------------------------------------------------------------------------------------------|
+| Last 30 minutes | Data from the last 30 minutes to when the page is viewed. |
+| Last 1 hour | Data from the last 1 hour to when the page is viewed. |
+| Last 3 hours | Data from the last 3 hours to when the page is viewed. |
+| Last 12 hours | Data from the last 12 hours to when the page is viewed. |
+| Last 24 hours | (Default) Data from the last 24 hours to when the page is viewed. |
+| Last 7 days | Data from the last 7 days to when the page is viewed. |
+| Last 31 days | Data from the last 31 days to when the page is viewed. |
+| Custom | Data from a custom date and time range that you provide. Custom ranges must begin within the last 31 days. |
+
+{% endrowheaders %}
+
+## Viewing API insights for an organization
+
+{% data reusables.profile.access_org %}
+{% data reusables.user-settings.access_org %}
+{% data reusables.organizations.insights %}
+1. In the "Insights" navigation menu, click **REST API**.
+1. Optionally, to select a time period to view API insights for, choose an option from the **Period** drop down menu at the top-right of the page. For more information, see "[Understanding API insights aggregation](#understanding-api-insights-aggregation)."
+1. Optionally, to switch between displaying dates and times in Coordinated Universal Time (UTC) or the local time zone used by your browser, select "UTC" or "Local" from the **Period** drop down menu at the top-right of the page.
+1. Optionally, to select how granularly to display REST API requests on the chart, choose an option from the **Interval** drop down menu at the top-right of the page. Large intervals show summaries of the API activity on the chart while smaller intervals show greater detail for the selected time period. The chart does not automatically update to show new activity.
+
+The selected period and interval automatically become part of the page URL so that if you share the URL with someone, they will see the same view.
+
+## Viewing API insights for an organization's apps and users
+
+The "Actors" table displays {% data variables.product.prodname_github_apps %} and users that made REST API requests in the current organization within the selected time period. The table does not automatically update to show new activity.
+
+1. First, view API insights for an organization using the steps above in "[Viewing API insights for an organization](#viewing-api-insights-for-an-organization)."
+1. Filter the apps and users displayed in the "Actors" table.
+ 1. To filter by name, enter the first few letters of the name in the search field above the "Actors" table. Then press enter.
+ 1. To filter by type of actor (app or user), choose an option from the **Type** drop down menu above the top-right of the "Actors" table.
+ 1. To filter by type of request (all or primary-rate-limited), choose an option from the **Requests** drop down menu above the top-right of the "Actors" table.
+
+## Viewing API insights for a specific app or user in an organization
+
+1. First, view API insights for an organization using the steps above in "[Viewing API insights for an organization](#viewing-api-insights-for-an-organization)."
+1. Optionally, select an app in the "Actors" table to display its REST API activity and any primary-rate-limiting. The resulting view will be specific to the selected app and will display the API endpoints it accessed.
+1. Optionally, select a user in the "Actors" table to display their personal REST API activity. The resulting view will be specific to the selected user and will display API activity of their {% data variables.product.pat_generic_plural %} and requests made by {% data variables.product.prodname_oauth_apps %} on their behalf. Both contribute to a user’s personal primary rate limit. For information about primary rate limits for users, and {% data variables.product.prodname_oauth_apps %} that act on their behalf, see "[AUTOTITLE](/rest/using-the-rest-api/rate-limits-for-the-rest-api#primary-rate-limit-for-authenticated-users)."
+ 1. Optionally, in the user-specific view, click on a {% data variables.product.pat_generic %} or {% data variables.product.prodname_oauth_app %} to view its REST API activity made on behalf of the user.
diff --git a/content/packages/learn-github-packages/about-permissions-for-github-packages.md b/content/packages/learn-github-packages/about-permissions-for-github-packages.md
index 1f49422740bc..f2ddd9d99ab5 100644
--- a/content/packages/learn-github-packages/about-permissions-for-github-packages.md
+++ b/content/packages/learn-github-packages/about-permissions-for-github-packages.md
@@ -18,9 +18,15 @@ Packages with granular permissions are scoped to a personal account or organizat
The following {% data variables.product.prodname_registry %} registries support granular permissions.
* {% data variables.product.prodname_container_registry %}
-{% ifversion packages-npm-v2 %}- npm registry{% endif %}
-{% ifversion packages-nuget-v2 %}- NuGet registry{% endif %}
-{% ifversion packages-rubygems-v2 %}- RubyGems registry{% endif %}
+{%- ifversion packages-npm-v2 %}
+* npm registry
+{%- endif %}
+{%- ifversion packages-nuget-v2 %}
+* NuGet registry
+{%- endif %}
+{%- ifversion packages-rubygems-v2 %}
+* RubyGems registry
+{%- endif %}
## Permissions for repository-scoped packages
@@ -28,12 +34,20 @@ A repository-scoped package inherits the permissions and visibility of the repos
The following {% data variables.product.prodname_registry %} registries **only** support repository-scoped permissions.
-{% ifversion not fpt or ghec %}- Docker registry (`docker.pkg.github.com`){% endif %}
-{% ifversion packages-npm-v2 %}{% else %}- npm registry{% endif %}
+{%- ifversion not fpt or ghec %}
+* Docker registry (`docker.pkg.github.com`)
+{%- endif %}
+{%- ifversion packages-npm-v2 %}{% else %}
+* npm registry
+{%- endif %}
* Apache Maven registry
* Gradle registry
-{% ifversion packages-nuget-v2 %}{% else %}- NuGet registry{% endif %}
-{% ifversion packages-rubygems-v2 %}{% else %}- RubyGems registry{% endif %}
+{%- ifversion packages-nuget-v2 %}{% else %}
+* NuGet registry
+{%- endif %}
+{%- ifversion packages-rubygems-v2 %}{% else %}
+* RubyGems registry
+{%- endif %}
For {% ifversion ghes %}the {% data variables.product.prodname_container_registry %}{% else %}other registries{% endif %}, you can choose to allow packages to be scoped to a user or an organization, or linked to a repository. {% ifversion docker-ghcr-enterprise-migration %}For information about migration to the {% data variables.product.prodname_container_registry %}, see "[AUTOTITLE](/packages/working-with-a-github-packages-registry/migrating-to-the-container-registry-from-the-docker-registry)."{% endif %}
diff --git a/content/packages/learn-github-packages/introduction-to-github-packages.md b/content/packages/learn-github-packages/introduction-to-github-packages.md
index 235a1f4c5841..e5bc5a65e19d 100644
--- a/content/packages/learn-github-packages/introduction-to-github-packages.md
+++ b/content/packages/learn-github-packages/introduction-to-github-packages.md
@@ -76,6 +76,12 @@ The permissions for a package are either inherited from the repository where the
{% endif %}
+{% ifversion ghec %}
+
+> [!NOTE] The Apache Maven and Gradle registries are not available for {% data variables.enterprise.data_residency %}.
+
+{% endif %}
+
For more information about configuring your package client for use with {% data variables.product.prodname_registry %}, see "[AUTOTITLE](/packages/working-with-a-github-packages-registry)."
{% ifversion fpt or ghec %}
diff --git a/content/packages/quickstart.md b/content/packages/quickstart.md
index cf11f91b4d8f..f83de79c8e17 100644
--- a/content/packages/quickstart.md
+++ b/content/packages/quickstart.md
@@ -15,6 +15,12 @@ shortTitle: Quickstart
In this guide, you'll create a {% data variables.product.prodname_actions %} workflow to test your code and then publish it to {% data variables.product.prodname_registry %}.
+{% ifversion ghec %}
+
+If you use a {% data variables.enterprise.prodname_managed_user %}, you cannot publish a package to a repository owned by your account. To follow this guide, use a personal account on {% data variables.product.prodname_dotcom_the_website %} instead.
+
+{% endif %}
+
## Publishing your package
1. Create a new repository on {% data variables.product.prodname_dotcom %}, adding the `.gitignore` for Node. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-new-repository)."
diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry.md
index bef6cc729479..72e9e9c07729 100644
--- a/content/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry.md
+++ b/content/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry.md
@@ -15,6 +15,12 @@ versions:
shortTitle: Apache Maven registry
---
+{% ifversion ghec %}
+
+> [!NOTE] The Apache Maven registry is not available for {% data variables.enterprise.data_residency %}.
+
+{% endif %}
+
{% data reusables.package_registry.packages-ghes-release-stage %}
{% data reusables.package_registry.admins-can-configure-package-types %}
diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-container-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-container-registry.md
index acc0e2d2d84e..88c4c56d76b0 100644
--- a/content/packages/working-with-a-github-packages-registry/working-with-the-container-registry.md
+++ b/content/packages/working-with-a-github-packages-registry/working-with-the-container-registry.md
@@ -1,6 +1,6 @@
---
title: Working with the Container registry
-intro: 'You can store and manage Docker and OCI images in the {% data variables.product.prodname_container_registry %}, which uses the package namespace `https://{% data reusables.package_registry.container-registry-hostname %}`.'
+intro: 'You can store and manage Docker and OCI images in the {% data variables.product.prodname_container_registry %}.'
product: '{% data reusables.gated-features.packages %}'
redirect_from:
- /packages/managing-container-images-with-github-container-registry/pushing-and-pulling-docker-images
@@ -31,6 +31,16 @@ To use the {% data variables.product.prodname_container_registry %} on {% data v
{% endif %}
+{% ifversion ghec %}
+
+## URL for the {% data variables.product.prodname_container_registry %}
+
+If you access {% data variables.product.github %} at {% data variables.product.prodname_dotcom_the_website %}, you will publish packages to {% data reusables.package_registry.container-registry-hostname %}. Examples in this article use this URL.
+
+If you access {% data variables.product.github %} at another domain, such as `octocorp.ghe.com`, replace "{% data reusables.package_registry.container-registry-hostname %}" with `https://containers.SUBDOMAIN.ghe.com`, where `SUBDOMAIN` is your enterprise's unique subdomain.
+
+{% endif %}
+
## About {% data variables.product.prodname_container_registry %} support
The {% data variables.product.prodname_container_registry %} currently supports the following container image formats:
diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry.md
index d84066053e63..cfc5484ec7cb 100644
--- a/content/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry.md
+++ b/content/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry.md
@@ -15,6 +15,12 @@ versions:
shortTitle: Gradle registry
---
+{% ifversion ghec %}
+
+> [!NOTE] The Gradle registry is not available for {% data variables.enterprise.data_residency %}.
+
+{% endif %}
+
{% data reusables.package_registry.packages-ghes-release-stage %}
{% data reusables.package_registry.admins-can-configure-package-types %}
diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md
index 043727b2b9c3..d21f181d2367 100644
--- a/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md
+++ b/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md
@@ -19,6 +19,16 @@ shortTitle: npm registry
{% data reusables.package_registry.admins-can-configure-package-types %}
+{% ifversion ghec %}
+
+## URL for the {% data variables.product.prodname_npm_registry %}
+
+If you access {% data variables.product.github %} at {% data variables.product.prodname_dotcom_the_website %}, you will publish packages to https://npm.pkg.github.com. Examples in this article use this URL.
+
+If you access {% data variables.product.github %} at another domain, such as `octocorp.ghe.com`, replace "https://npm.pkg.github.com" with `https://npm.SUBDOMAIN.ghe.com`, where `SUBDOMAIN` is your enterprise's unique subdomain.
+
+{% endif %}
+
{% ifversion packages-npm-v2 %}
{% else %}
diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md
index 5638d136efc9..2887ef6f5aa6 100644
--- a/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md
+++ b/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md
@@ -20,6 +20,16 @@ shortTitle: NuGet registry
{% data reusables.package_registry.admins-can-configure-package-types %}
+{% ifversion ghec %}
+
+## URL for the NuGet registry
+
+If you access {% data variables.product.github %} at {% data variables.product.prodname_dotcom_the_website %}, you will publish packages to https://nuget.pkg.github.com. Examples in this article use this URL.
+
+If you access {% data variables.product.github %} at another domain, such as `octocorp.ghe.com`, replace "https://nuget.pkg.github.com" with `https://nuget.SUBDOMAIN.ghe.com`, where `SUBDOMAIN` is your enterprise's unique subdomain.
+
+{% endif %}
+
## Authenticating to {% data variables.product.prodname_registry %}
{% data reusables.package_registry.authenticate-packages %}
diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry.md
index ec3fad745b0b..03af9c951ade 100644
--- a/content/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry.md
+++ b/content/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry.md
@@ -19,6 +19,16 @@ shortTitle: RubyGems registry
{% data reusables.package_registry.admins-can-configure-package-types %}
+{% ifversion ghec %}
+
+## URL for the RubyGems registry
+
+If you access {% data variables.product.github %} at {% data variables.product.prodname_dotcom_the_website %}, you will publish packages to https://rubygems.pkg.github.com. Examples in this article use this URL.
+
+If you access {% data variables.product.github %} at another domain, such as `octocorp.ghe.com`, replace "https://rubygems.pkg.github.com" with `https://rubygems.SUBDOMAIN.ghe.com`, where `SUBDOMAIN` is your enterprise's unique subdomain.
+
+{% endif %}
+
## Prerequisites
* You must have RubyGems 2.4.1 or higher. To find your RubyGems version:
diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md
index 269f4d90830d..7305a67a49f3 100644
--- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md
+++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md
@@ -172,6 +172,33 @@ For more information on creating pull requests in {% data variables.product.prod
{% endif %}
+## Making changes to files in your pull request
+
+After you have opened your pull request, you can continue making changes to the files by adding new commits to your head branch.
+
+{% webui %}
+
+You can also make changes to files on the {% data variables.product.github %} website.
+
+1. On {% data variables.product.github %}, navigate to a pull request in a repository.
+{% data reusables.repositories.changed-files %}
+1. Scroll down to the file you want to make changes to.
+ * If the pull request has a lot of files, you can use the filter to locate the file. See "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/filtering-files-in-a-pull-request)."
+1. Above the file you want to change, click {% octicon "kebab-horizontal" aria-label="Show options" %}.
+ ![Screenshot of the options above a file on the "File changed" tab. The "Show options" button is highlighted with an orange rectangle.](/assets/images/help/pull_requests/menu-on-pull-request-file.png)
+1. In the menu, click **Edit file**.
+1. Make your changes in the editor and when committing your change, choose to commit directly back to your head branch.
+
+{% ifversion copilot-hadron %}
+
+If you are part of the {% data variables.release-phases.public_preview %} of {% data variables.product.prodname_copilot_workspace %}, clicking **Edit** on a file on the "Files changed" tab will open the file in a {% data variables.product.prodname_copilot_workspace %} on {% data variables.product.prodname_dotcom %}. In a {% data variables.product.prodname_copilot_workspace %}, you can still make changes to the file but also make changes to other files in the repository, group your changes into a single commit, and take advantage of {% data variables.product.prodname_copilot_short %} code completion.
+
+You can access {% data variables.product.prodname_copilot_workspace %} by choosing to edit an individual file or by clicking **Open in {% data variables.product.prodname_copilot_workspace_short %}** in your pull request's right sidebar. For more information about {% data variables.product.prodname_copilot_workspace %} and joining the {% data variables.release-phases.public_preview %}, see "[AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request)."
+
+{% endif %}
+
+{% endwebui %}
+
## Further reading
* "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)"
diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md
index f785019ca323..b9ba962c8e8a 100644
--- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md
+++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md
@@ -28,6 +28,12 @@ Organization members with write access can also assign a pull request review to
{% endnote %}
+{% ifversion copilot-hadron %}
+
+## Requesting reviews from collaborators and organization members
+
+{% endif %}
+
You can request a review from either a suggested or specific person. Suggested reviewers are based on [git blame data](/repositories/working-with-files/using-files/viewing-a-file). If you request a review, other people with read access to the repository can still review your pull request. Once someone has reviewed your pull request and you've made the necessary changes, you can re-request review from the same reviewer. If the requested reviewer does not submit a review, and the pull request meets the repository's [mergeability requirements](/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests), you can still merge the pull request.
{% data reusables.repositories.sidebar-pr %}
@@ -44,6 +50,17 @@ You can request a review from either a suggested or specific person. Suggested r
![Screenshot of the "Reviewers" section of a pull request's sidebar. To the right of @octocat, a sync icon is outlined in dark orange.](/assets/images/help/pull_requests/request-re-review.png)
+{% ifversion copilot-hadron %}
+
+## Requesting a review from {% data variables.product.prodname_copilot %}
+
+>[!NOTE]
+>{% data variables.product.prodname_copilot_workspace %} is currently in {% data variables.release-phases.public_preview %}. For information about joining the {% data variables.release-phases.public_preview %}, see "[AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request)."
+
+You can also request that {% data variables.product.prodname_copilot_short %} reviews your code and provides feedback and suggested changes on your work. See "[AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review)."
+
+{% endif %}
+
## Further reading
* "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews)"
diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md
index 61a28b355b1c..907a8034270d 100644
--- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md
+++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md
@@ -20,6 +20,15 @@ Other people can suggest specific changes to your pull request. You can apply th
To quickly incorporate more than one suggested change into a single commit, you can also apply suggested changes as a batch. Applying one suggested change or a batch of suggested changes creates a single commit on the compare branch of the pull request.
+{% ifversion copilot-hadron %}
+
+>[!NOTE]
+>If you are part of the {% data variables.release-phases.public_preview %} of {% data variables.product.prodname_copilot_workspace %}, suggested changes from people on your team, {% data variables.product.prodname_copilot_short %}, or {% data variables.product.prodname_copilot_autofix %} can all be applied and edited in {% data variables.product.prodname_copilot_workspace %}. Click **Open in {% data variables.product.prodname_copilot_workspace_short %}** on a suggested change to get started.
+>
+>For more information about {% data variables.product.prodname_copilot_workspace %} and joining the {% data variables.release-phases.public_preview %}, see "[AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request)."
+
+{% endif %}
+
Each person who suggested a change included in the commit will be a co-author of the commit. The person who applies the suggested changes will be a co-author and the committer of the commit. For more information about the term committer in Git, see "[Git Basics - Viewing the Commit History](https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History)" from the _Pro Git_ book site.
{% data reusables.repositories.sidebar-pr %}
diff --git a/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics.md b/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics.md
index c0afe350e833..22fc566b2136 100644
--- a/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics.md
+++ b/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics.md
@@ -21,7 +21,7 @@ With topics, you can explore repositories in a particular subject area, find pro
![Screenshot of the github/docs repository. In the right sidebar, three topics are outlined in dark orange: "docs," "hacktoberfest," and "works-with-codespaces."](/assets/images/help/repository/os-repo-with-topics.png)
-To browse the most used topics, go to {% data variables.product.oauth_host_code %}/topics/.
+To browse the most used topics, go to {% data variables.product.product_url %}/topics/.
{% ifversion fpt or ghec %}You can contribute to {% data variables.product.product_name %}'s set of featured topics in the [github/explore](https://github.com/github/explore) repository. {% endif %}
diff --git a/content/rest/using-the-rest-api/best-practices-for-using-the-rest-api.md b/content/rest/using-the-rest-api/best-practices-for-using-the-rest-api.md
index d068c1c971e1..cedb396f28e2 100644
--- a/content/rest/using-the-rest-api/best-practices-for-using-the-rest-api.md
+++ b/content/rest/using-the-rest-api/best-practices-for-using-the-rest-api.md
@@ -51,6 +51,8 @@ If you receive a rate limit error, you should stop making requests temporarily a
Continuing to make requests while you are rate limited may result in the banning of your integration.
+{% data reusables.organizations.api-insights-learn-about %}
+
## Follow redirects
The {% data variables.product.product_name %} REST API uses HTTP redirection where appropriate. You should assume that any
diff --git a/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md b/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md
index 026ec4f3bf91..ebb41c30f551 100644
--- a/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md
+++ b/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md
@@ -22,6 +22,16 @@ redirect_from:
This article describes how to use the {% data variables.product.prodname_dotcom %} REST API with {% data variables.product.prodname_cli %}, `curl`, or JavaScript. For a quickstart guide, see "[AUTOTITLE](/rest/quickstart)."
+{% curl %}
+
+{% ifversion ghec %}
+
+Examples in this article send requests to `{% data variables.product.rest_url %}`. If you access {% data variables.product.github %} at a different domain, such as `{% data variables.enterprise.data_residency_example_domain %}`, the endpoint for API requests will reflect that domain. For example: `https://api.octocorp.ghe.com/`.
+
+{% endif %}
+
+{% endcurl %}
+
## About requests to the REST API
This section describes the elements that make up an API request:
@@ -198,25 +208,20 @@ Install {% data variables.product.prodname_cli %} on macOS, Windows, or Linux. F
### 2. Authenticate
-1. Authenticate with {% data variables.product.company_short %} by running this command from your terminal.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. For example, `octo-inc.ghe.com`.{% endif %}
+1. To authenticate to {% data variables.product.github %}, run the following command from your terminal.
- {%- ifversion ghes %}
-
- ```shell copy
- gh auth login --hostname HOSTNAME
- ```
-
- {%- else %}
-
- ```shell copy
+ ```shell
gh auth login
```
- {%- endif %}
-
You can use the `--scopes` option to specify what scopes you want. If you want to authenticate with a token that you created, you can use the `--with-token` option. For more information, see the [{% data variables.product.prodname_cli %} `auth login` documentation](https://cli.github.com/manual/gh_auth_login).
-1. Follow the on-screen prompts.
+1. Select where you want to authenticate to:
+
+ * If you access {% data variables.product.github %} at {% data variables.product.prodname_dotcom_the_website %}, select **{% data variables.product.prodname_dotcom_the_website %}**.
+ * If you access {% data variables.product.github %} at a different domain, select **Other**, then enter your hostname (for example: `octocorp.ghe.com`).
+
+1. Follow the rest of the on-screen prompts.
{% data variables.product.prodname_cli %} automatically stores your Git credentials for you when you choose HTTPS as your preferred protocol for Git operations and answer "yes" to the prompt asking if you would like to authenticate to Git with your {% data variables.product.prodname_dotcom %} credentials. This can be useful as it allows you to use Git commands like `git push` and `git pull` without needing to set up a separate credential manager or use SSH.
@@ -237,6 +242,9 @@ Use the {% data variables.product.prodname_cli %} `api` subcommand to make your
In your request, specify the following options and values:
+{%- ifversion not fpt %}
+* **--hostname**: If you are authenticated to multiple accounts across {% data variables.product.github %} platforms, specify where you are making the request. For example: `--hostname {% data variables.enterprise.data_residency_example_domain %}`.
+{%- endif %}
* **--method** followed by the HTTP method and the path of the endpoint. For more information, see "[HTTP method](#http-method)" and "[Path](#path)."
* **--header**:
* **`Accept`**: Pass the media type in an `Accept` header. To pass multiple media types in an `Accept` header, separate the media types with a comma: `Accept: application/vnd.github+json,application/vnd.github.diff`. For more information, see "[`Accept`](#accept)" and "[Media types](#media-types)."
@@ -246,6 +254,9 @@ In your request, specify the following options and values:
Some endpoints use query parameters that are arrays. To send an array in the query string, use the query parameter once per array item, and append `[]` after the query parameter name. For example, to provide an array of two repository IDs, use `-f repository_ids[]=REPOSITORY_A_ID -f repository_ids[]=REPOSITORY_B_ID`.
If you do not need to specify any body parameters or query parameters in your request, omit this option. For more information, see "[Body parameters](#body-parameters)" and "[Query parameters](#query-parameters)." For examples, see "[Example request using body parameters](#example-request-using-body-parameters)" and "[Example request using query parameters](#example-request-using-query-parameters)."
+{%- ifversion not fpt %}
+* **--hostname**: If you are authenticated to multiple accounts across {% data variables.product.github %} platforms, specify where you are making the request. For example: `--hostname {% data variables.enterprise.data_residency_example_domain %}`.
+{%- endif %}
#### Example request
@@ -313,7 +324,7 @@ Use the `curl` command to make your request. For more information, see [the curl
Specify the following options and values in your request:
* **`--request` or `-X`** followed by the HTTP method as the value. For more information, see "[HTTP method](#http-method)."
-* **`--url`** followed by the full path as the value. The full path is a URL that includes the base URL for the GitHub REST API (`https://api.github.com`) and the path of the endpoint, like this: `{% data variables.product.rest_url %}/PATH`.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} Replace `PATH` with the path of the endpoint. For more information, see "[Path](#path)."
+* **`--url`** followed by the full path as the value. The full path is a URL that includes the base URL for the GitHub REST API (`{% data variables.product.rest_url %}`{% ifversion ghec %} or `https://{% data variables.enterprise.data_residency_api %}`, depending on where you access {% data variables.product.github %}{% endif %}) and the path of the endpoint, like this: `{% data variables.product.rest_url %}/PATH`.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} Replace `PATH` with the path of the endpoint. For more information, see "[Path](#path)."
To use query parameters, add a `?` to the end of the path, then append your query parameter name and value in the form `parameter_name=value`. Separate multiple query parameters with `&`. If you need to send an array in the query string, use the query parameter once per array item, and append `[]` after the query parameter name. For example, to provide an array of two repository IDs, use `?repository_ids[]=REPOSITORY_A_ID&repository_ids[]=REPOSITORY_B_ID`. For more information, see "[Query parameters](#query-parameters)." For an example, see "[Example request using query parameters](#example-request-using-query-parameters-1)."
* **`--header` or `-H`**:
diff --git a/content/rest/using-the-rest-api/rate-limits-for-the-rest-api.md b/content/rest/using-the-rest-api/rate-limits-for-the-rest-api.md
index fd4c0d8034e7..ce031641a993 100644
--- a/content/rest/using-the-rest-api/rate-limits-for-the-rest-api.md
+++ b/content/rest/using-the-rest-api/rate-limits-for-the-rest-api.md
@@ -32,6 +32,8 @@ If you are developing an app for users or organizations outside of your instance
Some endpoints, like the search endpoints, have more restrictive limits. For more information about these endpoints, see "[AUTOTITLE](/rest/rate-limit/rate-limit)." The GraphQL API also has a separate primary rate limit. See "[AUTOTITLE](/graphql/overview/resource-limitations)."
+{% data reusables.organizations.api-insights-learn-about %}
+
In general, you can calculate your primary rate limit for the REST API based on your method of authentication, as described below.
### Primary rate limit for unauthenticated users
diff --git a/content/rest/using-the-rest-api/troubleshooting-the-rest-api.md b/content/rest/using-the-rest-api/troubleshooting-the-rest-api.md
index 1d97ba463b22..3c7e81695c39 100644
--- a/content/rest/using-the-rest-api/troubleshooting-the-rest-api.md
+++ b/content/rest/using-the-rest-api/troubleshooting-the-rest-api.md
@@ -28,6 +28,8 @@ If you receive a rate limit error, you should stop making requests temporarily a
Continuing to make requests while you are rate limited may result in the banning of your integration.
+{% data reusables.organizations.api-insights-learn-about %}
+
For more information about how to avoid exceeding the rate limits, see "[AUTOTITLE](/rest/guides/best-practices-for-using-the-rest-api)."
## `404 Not Found` for an existing resource
diff --git a/content/search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment.md b/content/search-github/getting-started-with-searching-on-github/enabling-repository-search-across-environments.md
similarity index 70%
rename from content/search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment.md
rename to content/search-github/getting-started-with-searching-on-github/enabling-repository-search-across-environments.md
index 9df908bf3fdf..86ca3d48e4bb 100644
--- a/content/search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment.md
+++ b/content/search-github/getting-started-with-searching-on-github/enabling-repository-search-across-environments.md
@@ -1,7 +1,7 @@
---
-title: Enabling GitHub.com repository search from your private enterprise environment
-shortTitle: Search GitHub.com from enterprise
-intro: 'You can connect your personal accounts on {% data variables.product.prodname_dotcom_the_website %} and your private {% data variables.product.prodname_enterprise %} environment to search for content in certain {% data variables.product.prodname_dotcom_the_website %} repositories{% ifversion fpt or ghec %} from your private environment{% else %} from {% data variables.product.product_name %}{% endif %}.'
+title: Enabling repository search across environments
+shortTitle: Search across environments
+intro: 'Unify search results in {% data variables.product.prodname_ghe_server %} by connecting your account on {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-github-connect %} or {% data variables.enterprise.data_residency_site %}{% endif %}.'
redirect_from:
- /articles/enabling-private-githubcom-repository-search-in-your-github-enterprise-account
- /articles/enabling-private-github-com-repository-search-in-your-github-enterprise-server-account
@@ -9,23 +9,22 @@ redirect_from:
- /articles/enabling-githubcom-repository-search-in-github-enterprise-server
- /github/searching-for-information-on-github/enabling-githubcom-repository-search-in-github-enterprise-server
- /github/searching-for-information-on-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-in-github-enterprise-server
+ - /search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment
versions:
ghes: '*'
topics:
- GitHub search
---
-## About search for {% data variables.product.prodname_dotcom_the_website %} repositories from {% data variables.product.product_name %}
-
You can search for designated private repositories on {% data variables.product.prodname_ghe_cloud %} from {% data variables.location.product_location %}. For more information about searching across environments, see "[AUTOTITLE](/search-github/getting-started-with-searching-on-github/about-searching-on-github#searching-repositories-on-githubcom-from-your-private-enterprise-environment)."
## Prerequisites
An enterprise owner for {% data variables.product.product_name %} must enable {% data variables.product.prodname_github_connect %} and {% data variables.enterprise.prodname_unified_search %} for private repositories. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-unified-search-for-your-enterprise)."
-## Enabling {% data variables.product.prodname_dotcom_the_website %} repository search from {% data variables.product.product_name %}
+## Enabling unified repository search from {% data variables.product.product_name %}
-1. Sign into {% data variables.product.product_name %} and {% data variables.product.prodname_dotcom_the_website %}.
+1. Sign in to both your user account on {% data variables.product.product_name %} **and** your user account on {% data variables.product.prodname_ghe_cloud %} ({% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-github-connect %} or {% data variables.enterprise.data_residency_site %}{% endif %}).
1. On {% data variables.product.product_name %}, in the upper-right corner of any page, click your profile photo, then click **Settings**.
{% ifversion global-nav-update %}
diff --git a/content/search-github/getting-started-with-searching-on-github/index.md b/content/search-github/getting-started-with-searching-on-github/index.md
index 0347fb674cc9..468592f57db1 100644
--- a/content/search-github/getting-started-with-searching-on-github/index.md
+++ b/content/search-github/getting-started-with-searching-on-github/index.md
@@ -15,7 +15,7 @@ children:
- /understanding-the-search-syntax
- /troubleshooting-search-queries
- /sorting-search-results
- - /enabling-githubcom-repository-search-from-your-private-enterprise-environment
+ - /enabling-repository-search-across-environments
shortTitle: Start with search on GitHub
---
diff --git a/content/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax.md b/content/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax.md
index 77e83525e01e..11cf98a11e13 100644
--- a/content/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax.md
+++ b/content/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax.md
@@ -98,11 +98,14 @@ If your search query contains whitespace, you will need to surround it with quot
## Queries with usernames
-If your search query contains a qualifier that requires a username, such as `user`, `actor`, or `assignee`, you can use any {% data variables.product.product_name %} username, to specify a specific person, or `@me`, to specify the current user.
+If your search query contains a qualifier that requires a username, such as `user`, `actor`, or `assignee`, you can use any {% data variables.product.product_name %} username to specify a specific person{% ifversion copilot %}, `@me` to specify the current user, or `@copilot` to specify {% data variables.product.prodname_copilot_short %}.{% else %} or `@me`, to specify the current user.{% endif %}
-Query | Example
-------------- | -------------
-`QUALIFIER:USERNAME` | [`author:nat`](https://github.com/search?q=author%3Anat&type=Commits) matches commits authored by @nat
-`QUALIFIER:@me` | [`is:issue assignee:@me`](https://github.com/search?q=is%3Aissue+assignee%3A%40me&type=Issues) matches issues assigned to the person viewing the results
+| Query | Example |
+| ------ | ------- |
+| `QUALIFIER:USERNAME` | [`author:nat`](https://github.com/search?q=author%3Anat&type=Commits) matches commits authored by @nat |
+| `QUALIFIER:@me` | [`is:issue assignee:@me`](https://github.com/search?q=is%3Aissue+assignee%3A%40me&type=Issues) matches issues assigned to the person viewing the results |
+| {% ifversion copilot %} |
+| `QUALIFIER:@copilot` | [`is:pr reviewed-by:@copilot`](https://github.com/search?q=is:pr+reviewed-by:@copilot&type=pullrequests) matches pull requests reviewed by {% data variables.product.prodname_copilot_short %}. For more information, see see "[AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review)." |
+| {% endif %} |
-You can only use `@me` with a qualifier and not as search term, such as `@me main.workflow`.
+You can only use `@me` {% ifversion copilot %} or `@copilot` {% endif %} with a qualifier, and not as a search term, such as `@me main.workflow`.
diff --git a/content/site-policy/github-terms/github-terms-for-additional-products-and-features.md b/content/site-policy/github-terms/github-terms-for-additional-products-and-features.md
index 4ffcdd920eb7..b81adc216383 100644
--- a/content/site-policy/github-terms/github-terms-for-additional-products-and-features.md
+++ b/content/site-policy/github-terms/github-terms-for-additional-products-and-features.md
@@ -104,7 +104,7 @@ With GitHub Connect, you can share certain features and data between your GitHub
For GitHub Copilot Business and Copilot Enterprise license holders, your use of GitHub Copilot is governed by the [GitHub Copilot Product Specific Terms](https://github.com/customer-terms/github-copilot-product-specific-terms).
For GitHub Copilot Individual license holders, your use of GitHub Copilot is governed by the following terms:
-To use GitHub Copilot in your code editor, you need to install the GitHub Copilot extension to that editor. To use GitHub Copilot in the CLI (Command Line Interface), you need to install the GitHub Copilot CLI extension. To use GitHub Copilot Chat on GitHub Mobile, you need to install the GitHub Mobile application. To use GitHub Copilot on GitHub.com, you must access GitHub.com. The code you write using GitHub Copilot (“**Your Code**”) is not “Content” under the Agreement until you upload it to GitHub.com.
+To use GitHub Copilot in your code editor, you need to install the GitHub Copilot extension to that editor. To use GitHub Copilot in the CLI (Command Line Interface), you need to install the GitHub Copilot CLI extension. To use GitHub Copilot Chat on GitHub Mobile, you need to install the GitHub Mobile application. To use GitHub Copilot on the website, you must access the website. The code you write using GitHub Copilot (“**Your Code**”) is not “Content” under the Agreement until you upload it to GitHub.com{% ifversion ghec %} or GHE.com{% endif %}.
If you customize GitHub Copilot by using a GitHub Copilot Extension (Extension), your use may be subject to the Extension's terms of use and privacy policy.
diff --git a/data/features/actions-metrics.yml b/data/features/actions-metrics.yml
new file mode 100644
index 000000000000..089f9ef7402d
--- /dev/null
+++ b/data/features/actions-metrics.yml
@@ -0,0 +1,5 @@
+# Issue 16035
+# Versioning for Actions Usage Metrics and Actions Performance Metrics
+versions:
+ fpt: '*'
+ ghec: '*'
diff --git a/data/features/api-insights.yml b/data/features/api-insights.yml
new file mode 100644
index 000000000000..6b01fe74d691
--- /dev/null
+++ b/data/features/api-insights.yml
@@ -0,0 +1,3 @@
+# Issue 14994
+versions:
+ ghec: '*'
diff --git a/data/features/copilot-hadron.yml b/data/features/copilot-hadron.yml
new file mode 100644
index 000000000000..f4cd0f41152c
--- /dev/null
+++ b/data/features/copilot-hadron.yml
@@ -0,0 +1,6 @@
+# Reference: #15094
+# Copilot Workspace for PRs (the Hadron editor)
+
+versions:
+ fpt: '*'
+ ghec: '*'
diff --git a/data/features/ghecom-github-connect.yml b/data/features/ghecom-github-connect.yml
new file mode 100644
index 000000000000..7ac7b5ab7635
--- /dev/null
+++ b/data/features/ghecom-github-connect.yml
@@ -0,0 +1,3 @@
+# GHES version required to enable GitHub Connect between GHES and GHE.com
+versions:
+ ghes: '>=3.12'
diff --git a/data/features/ghecom-license-sync.yml b/data/features/ghecom-license-sync.yml
new file mode 100644
index 000000000000..92dad18b5665
--- /dev/null
+++ b/data/features/ghecom-license-sync.yml
@@ -0,0 +1,3 @@
+# GHES version required to enable GitHub Connect license sync between GHES and GHE.com
+versions:
+ ghes: '>=3.15'
diff --git a/data/features/github-models.yml b/data/features/github-models.yml
index 1dff13223b1b..afd429c38baf 100644
--- a/data/features/github-models.yml
+++ b/data/features/github-models.yml
@@ -2,4 +2,3 @@
versions:
fpt: '*'
ghec: '*'
- ghes: '*'
diff --git a/data/features/security-campaigns-autofix.yml b/data/features/security-campaigns-autofix.yml
new file mode 100644
index 000000000000..2e35d52ac368
--- /dev/null
+++ b/data/features/security-campaigns-autofix.yml
@@ -0,0 +1,4 @@
+# Reference: #14514
+# Documentation for the use of autofix within security campaigns
+versions:
+ ghec: '*'
diff --git a/data/features/security-campaigns.yml b/data/features/security-campaigns.yml
new file mode 100644
index 000000000000..f4937312b5f3
--- /dev/null
+++ b/data/features/security-campaigns.yml
@@ -0,0 +1,4 @@
+# Reference: #14514
+# Documentation for security campaigns
+versions:
+ ghec: '*'
diff --git a/data/reusables/actions/about-actions-metrics.md b/data/reusables/actions/about-actions-metrics.md
new file mode 100644
index 000000000000..e7eb3ae2dfcf
--- /dev/null
+++ b/data/reusables/actions/about-actions-metrics.md
@@ -0,0 +1,5 @@
+## About {% data variables.product.prodname_actions %} metrics
+
+{% data variables.product.prodname_actions %} metrics provide insights into how your workflows and jobs are performing at the organization and repository levels. There are two types of metrics to help you analyze different aspects of your workflows:
+* **{% data variables.product.prodname_actions %} usage metrics**: Usage metrics help you track how many minutes your workflows and jobs consume. You can use this data to understand the cost of running Actions and ensure you're staying within your plan limits. This is especially useful for identifying high-usage workflows or repositories.
+* **{% data variables.product.prodname_actions %} performance metrics**: Performance metrics focus on the efficiency and reliability of your workflows and jobs. With performance metrics, you can monitor key indicators like job run times, queue times, and failure rates to identify bottlenecks, slow-running jobs, or frequently failing workflows.
diff --git a/data/reusables/actions/about-actions-performance-metrics.md b/data/reusables/actions/about-actions-performance-metrics.md
new file mode 100644
index 000000000000..6e7c3aac0cf2
--- /dev/null
+++ b/data/reusables/actions/about-actions-performance-metrics.md
@@ -0,0 +1,9 @@
+> [!NOTE] {% data variables.product.prodname_actions %} performance metrics is currently in {% data variables.release-phases.public_preview %} and subject to change.
+
+{% data variables.product.prodname_actions %} performance metrics enables you to analyze the efficiency and reliability of your workflows. You can view performance information such as average run times, average queue times, and failure rates, related to:
+
+* **Workflows**. View performance data for each workflow in your organization, including average run time and job failures. Use this information to identify inefficient workflows and run stability.
+* **Jobs**. View performance data for each individual job to, including average run time, average queue time, and job failures. Use this information to identify inefficient jobs.
+* **Repositories**. Get a high-level snapshot of each repository in your organization and their average performance metrics.
+* **Runtime OS**. Understand how runners for each operating system are performing.
+* **Runner type**. Compare the performance of self-hosted runners and GitHub-hosted runners, to make decisions about runner types.
diff --git a/data/reusables/actions/about-actions-usage-metrics-aggregation.md b/data/reusables/actions/about-actions-usage-metrics-aggregation.md
index 2aa00bd11d32..89780d5d760f 100644
--- a/data/reusables/actions/about-actions-usage-metrics-aggregation.md
+++ b/data/reusables/actions/about-actions-usage-metrics-aggregation.md
@@ -1,4 +1,4 @@
-The time period selection feature allows you to view {% data variables.product.prodname_actions %} usage metrics over predefined periods, as detailed in the following table. These metrics include skipped runs and those that use zero minutes. Data is presented using Coordinated Universal Time (UTC) days.
+The time period selection feature allows you to view {% data variables.product.prodname_actions %} metrics over predefined periods, as detailed in the following table. These metrics include skipped runs and those that use zero minutes. Data is presented using Coordinated Universal Time (UTC) days.
{% rowheaders %}
diff --git a/data/reusables/actions/actions-marketplace-ghecom.md b/data/reusables/actions/actions-marketplace-ghecom.md
new file mode 100644
index 000000000000..08af7f031112
--- /dev/null
+++ b/data/reusables/actions/actions-marketplace-ghecom.md
@@ -0,0 +1,3 @@
+{% ifversion ghec %}
+If you access {% data variables.product.github %} at {% data variables.enterprise.data_residency_site %}, be aware that actions that include hard-coded API calls to {% data variables.product.prodname_dotcom_the_website %} may not work as expected.
+{% endif %}
diff --git a/data/reusables/actions/actions-metrics-discrepancy-note.md b/data/reusables/actions/actions-metrics-discrepancy-note.md
new file mode 100644
index 000000000000..0bd9fbbf2743
--- /dev/null
+++ b/data/reusables/actions/actions-metrics-discrepancy-note.md
@@ -0,0 +1,2 @@
+> [!NOTE]
+There may be a discrepancy between the **Workflows** tab's job count and the **Jobs** tab's count due to differences in how unique jobs are identified. This does not affect the total minutes calculated.
diff --git a/data/reusables/actions/azure-vnet-procedures-prereqs.md b/data/reusables/actions/azure-vnet-procedures-prereqs.md
index 4cfbc8ca8fb9..7e28bf968dca 100644
--- a/data/reusables/actions/azure-vnet-procedures-prereqs.md
+++ b/data/reusables/actions/azure-vnet-procedures-prereqs.md
@@ -12,9 +12,11 @@ You will use a script to automate configuring your Azure resources.
The `.bicep` file we provide contains the minimal set of rules to use {% data variables.product.company_short %}-hosted runners with Azure VNET. You may need to add rules for your specific use case.
+ If you use {% data variables.enterprise.data_residency %}, in the `AllowOutBoundGitHub` section, you must also include the egress IP ranges for {% data variables.enterprise.data_residency_site %}. See "[AUTOTITLE](/admin/data-residency/network-details-for-ghecom#ranges-for-egress-traffic)."
+
{% note %}
- **Note:** Alternatively, to allow {% data variables.product.prodname_actions %} to communicate with the runners, you can allow the same firewall domains that are required for communication between self-hosted runners and {% data variables.product.product_name %}. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#communication-between-self-hosted-runners-and-github-enterprise-cloud)." To determine the appropriate subnet IP address range, we recommend adding a 30% buffer to the maximum job concurrency you anticipate. For instance, if your network configuration's runners are set to a maximum job concurrency of 300, it's recommended to utilize a subnet IP address range that can accommodate at least 390 runners. This buffer helps ensure that your network can handle unexpected increases in VM needs to meet job concurrency without running out of IP addresses.
+ **Note:** As an alternative to using the following file, to allow {% data variables.product.prodname_actions %} to communicate with the runners, you can allow the same firewall domains that are required for communication between self-hosted runners and {% data variables.product.product_name %}. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#communication-between-self-hosted-runners-and-github-enterprise-cloud)." To determine the appropriate subnet IP address range, we recommend adding a 30% buffer to the maximum job concurrency you anticipate. For instance, if your network configuration's runners are set to a maximum job concurrency of 300, it's recommended to utilize a subnet IP address range that can accommodate at least 390 runners. This buffer helps ensure that your network can handle unexpected increases in VM needs to meet job concurrency without running out of IP addresses.
{% endnote %}
@@ -174,7 +176,7 @@ You will use a script to automate configuring your Azure resources.
'20.248.137.50/32'
'20.248.137.52/32'
'20.248.137.55/32'
- '20.26.156.215/32'
+ '20.26.156.215/32'
'20.26.156.216/32'
'20.27.177.113/32'
'20.27.177.114/32'
diff --git a/data/reusables/actions/azure-vnet-supported-regions.md b/data/reusables/actions/azure-vnet-supported-regions.md
index ceb813d45fc1..7b7712b5bacd 100644
--- a/data/reusables/actions/azure-vnet-supported-regions.md
+++ b/data/reusables/actions/azure-vnet-supported-regions.md
@@ -1,4 +1,8 @@
-The {% data variables.product.prodname_actions %} service supports a subset of all the regions that Azure provides. To facilitate communication between the {% data variables.product.prodname_actions %} service and your subnet, your subnet must be in one of the following supported regions.
+The {% data variables.product.prodname_actions %} service supports a subset of all the regions that Azure provides. To facilitate communication between the {% data variables.product.prodname_actions %} service and your subnet, your subnet must be in one of the supported regions.
+
+> [!NOTE] If you use {% data variables.enterprise.data_residency_short %} on {% data variables.enterprise.data_residency_site %}, the supported regions are different. See "[AUTOTITLE](/admin/data-residency/network-details-for-ghecom#supported-regions-for-azure-private-networking)."
+
+The following regions are supported on {% data variables.product.prodname_dotcom_the_website %}.
EastUs
diff --git a/data/reusables/actions/enabling-actions-metrics.md b/data/reusables/actions/enabling-actions-metrics.md
new file mode 100644
index 000000000000..a16103819089
--- /dev/null
+++ b/data/reusables/actions/enabling-actions-metrics.md
@@ -0,0 +1,3 @@
+## Enabling access to {% data variables.product.prodname_actions %} metrics
+
+Organization owners can create custom organization roles to allow people to view {% data variables.product.prodname_actions %} usage metrics for their organization. To provide users with access, select the "View organization Actions metrics" role when creating a custom organization role. For more information, see "[AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles)."
diff --git a/data/reusables/actions/macos-runner-limitations.md b/data/reusables/actions/macos-runner-limitations.md
index aa4a2fc511ae..9b07fb0b4428 100644
--- a/data/reusables/actions/macos-runner-limitations.md
+++ b/data/reusables/actions/macos-runner-limitations.md
@@ -2,3 +2,6 @@
* Nested-virtualization and Metal Performance Shaders (MPS) are not supported due to the limitation of Apple's Virtualization Framework.
* Networking capabilities such as Azure private networking and assigning static IPs are not currently available for macOS larger runners.
* The arm64 macOS runners do not have a static UUID/UDID assigned to them because Apple does not support this feature. However, Intel MacOS runners are assigned a static UDID, specifically `4203018E-580F-C1B5-9525-B745CECA79EB`. If you are building and signing on the same host you plan to test the build on, you can sign with a [development provisioning profile](https://developer.apple.com/help/account/manage-profiles/create-a-development-provisioning-profile/). If you do require a static UDID, you can use Intel runners and add their UDID to your Apple Developer account.
+{%- ifversion ghec %}
+* {% data reusables.actions.macos-unavailable-ghecom %}
+{%- endif %}
diff --git a/data/reusables/actions/macos-unavailable-ghecom.md b/data/reusables/actions/macos-unavailable-ghecom.md
new file mode 100644
index 000000000000..6c592a011c6b
--- /dev/null
+++ b/data/reusables/actions/macos-unavailable-ghecom.md
@@ -0,0 +1 @@
+macOS runners are not available on subdomains of {% data variables.enterprise.data_residency_site %}, such as `{% data variables.enterprise.data_residency_example_domain %}`.
diff --git a/data/reusables/actions/namespace-retirement-ghecom.md b/data/reusables/actions/namespace-retirement-ghecom.md
new file mode 100644
index 000000000000..b19a8db46c2e
--- /dev/null
+++ b/data/reusables/actions/namespace-retirement-ghecom.md
@@ -0,0 +1 @@
+To ensure workflows use their intended actions and to block the potential for abuse, once an action on {% data variables.product.prodname_dotcom_the_website %} is used for the first time, the namespace associated with that action is retired in your enterprise. This blocks users from creating an organization and repository in your enterprise that match the action's namespace on {% data variables.product.prodname_dotcom_the_website %}.
diff --git a/data/reusables/actions/oidc-on-ghecom.md b/data/reusables/actions/oidc-on-ghecom.md
new file mode 100644
index 000000000000..fdada2d3c5eb
--- /dev/null
+++ b/data/reusables/actions/oidc-on-ghecom.md
@@ -0,0 +1,3 @@
+{%- ifversion ghec %}
+* If you're following this guide on {% data variables.enterprise.data_residency_site %}, understand that you must substitute certain values in the following documentation. See "[AUTOTITLE](/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect#following-these-guides-on-ghecom)."
+{%- endif %}
diff --git a/data/reusables/actions/supported-github-runners.md b/data/reusables/actions/supported-github-runners.md
index 7c4f245153e4..9150f03a8130 100644
--- a/data/reusables/actions/supported-github-runners.md
+++ b/data/reusables/actions/supported-github-runners.md
@@ -138,3 +138,9 @@ For {% ifversion ghec %}internal and{% endif %} private repositories, jobs using
+
+{% ifversion ghec %}
+
+> [!NOTE] {% data reusables.actions.macos-unavailable-ghecom %}
+
+{% endif %}
diff --git a/data/reusables/actions/viewing-actions-metrics.md b/data/reusables/actions/viewing-actions-metrics.md
new file mode 100644
index 000000000000..a1e13fd9fad2
--- /dev/null
+++ b/data/reusables/actions/viewing-actions-metrics.md
@@ -0,0 +1,11 @@
+1. In the "Insights" navigation menu, click **Actions Usage Metrics** or click **Actions Performance Metrics**.
+1. Optionally, to select a time period to view usage metrics for, choose an option from the **Period** drop down menu at the top right of the page. For more information, see "[Understanding {% data variables.product.prodname_actions %} metrics aggregation](#understanding-github-actions-metrics-aggregation)."
+1. Click on the tab that contains the metrics you would like to view. For more information, see "[About {% data variables.product.prodname_actions %} usage metrics](#about-github-actions-usage-metrics) or "[About {% data variables.product.prodname_actions %} performance metrics](#about-github-actions-performance-metrics)."
+1. Optionally, to filter the data displayed in a tab, create a filter.
+ 1. Click on the **{% octicon "filter" aria-hidden="true" %} Filter** button.
+ 1. Click **{% octicon "plus" aria-hidden="true" %} Add a filter**.
+ 1. Choose a metric you would like to filter results by.
+ 1. Depending on the metric you chose, fill out information in the "Qualifier," "Operator," and "Value" columns.
+ 1. Optionally, click **{% octicon "plus" aria-hidden="true" %} Add a filter** to add another filter.
+ 1. Click **Apply**.
+1. Optionally, to download usage metrics to a CSV file, click {% octicon "download" aria-label="Download report" %}.
diff --git a/data/reusables/codespaces/data-residency-availability.md b/data/reusables/codespaces/data-residency-availability.md
new file mode 100644
index 000000000000..66a2b24fdd42
--- /dev/null
+++ b/data/reusables/codespaces/data-residency-availability.md
@@ -0,0 +1 @@
+>[!NOTE] {% data variables.product.prodname_github_codespaces %} is not available on subdomains of {% data variables.enterprise.data_residency_site %}, such as `octocorp.ghe.com`.
diff --git a/data/reusables/copilot/chat-dotcom-beta.md b/data/reusables/copilot/chat-dotcom-beta.md
deleted file mode 100644
index 3d11b9ce0804..000000000000
--- a/data/reusables/copilot/chat-dotcom-beta.md
+++ /dev/null
@@ -1 +0,0 @@
-{% data variables.product.prodname_copilot_chat %} is currently in {% data variables.release-phases.public_preview %} for users with a {% data variables.product.prodname_copilot_individuals_short %} or {% data variables.product.prodname_copilot_business_short %} subscription.
diff --git a/data/reusables/copilot/chat-dotcom-prerequisites.md b/data/reusables/copilot/chat-dotcom-prerequisites.md
deleted file mode 100644
index 90d8ab3e5a7a..000000000000
--- a/data/reusables/copilot/chat-dotcom-prerequisites.md
+++ /dev/null
@@ -1 +0,0 @@
-To use {% data variables.product.prodname_copilot_chat_dotcom %}, you must have been assigned a seat as part of a subscription to {% data variables.product.prodname_copilot_enterprise %} or {% data variables.product.prodname_copilot_for_business %}. For more information, see "[AUTOTITLE](/copilot/github-copilot-enterprise/overview/enabling-github-copilot-enterprise-features)."
diff --git a/data/reusables/copilot/chat-model-limitations-ide.md b/data/reusables/copilot/chat-model-limitations-ide.md
new file mode 100644
index 000000000000..ae7884fd9d51
--- /dev/null
+++ b/data/reusables/copilot/chat-model-limitations-ide.md
@@ -0,0 +1,4 @@
+> [!NOTE]
+>
+> * If you use {% data variables.product.prodname_copilot_extensions_short %}, they may override the model you select.
+> * Experimental pre-release versions of the models may not interact with all filters correctly, including the duplication detection filter.
diff --git a/data/reusables/copilot/code-review/custom-coding-guidelines-prerequisites.md b/data/reusables/copilot/code-review/custom-coding-guidelines-prerequisites.md
new file mode 100644
index 000000000000..466a4435dc49
--- /dev/null
+++ b/data/reusables/copilot/code-review/custom-coding-guidelines-prerequisites.md
@@ -0,0 +1 @@
+> [!NOTE] Custom coding guidelines are currently only available to selected participants in the {% data variables.release-phases.public_preview %} of {% data variables.copilot.copilot_code-review_short %}. Being accepted from the [waitlist](https://gh.io/copilot-code-review-waitlist) does not provide immediate access. In addition, custom coding guidelines are only available as part of a subscription to {% data variables.product.prodname_copilot_enterprise %}.
diff --git a/data/reusables/copilot/code-review/custom-coding-guidelines.md b/data/reusables/copilot/code-review/custom-coding-guidelines.md
new file mode 100644
index 000000000000..bed3e0eca158
--- /dev/null
+++ b/data/reusables/copilot/code-review/custom-coding-guidelines.md
@@ -0,0 +1,5 @@
+{% data reusables.copilot.code-review.custom-coding-guidelines-prerequisites %}
+
+When using {% data variables.copilot.copilot_code-review_short %} to review changes in {% data variables.product.prodname_vscode %} or the {% data variables.product.github %} website, you can customize {% data variables.product.prodname_copilot_short %}'s review with custom coding guidelines written in natural language. {% data variables.product.prodname_copilot_short %} will give feedback based on your coding guidelines when it reviews your code. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/code-review/configuring-coding-guidelines)."
+
+Comments generated based on a coding guideline will include a message, highlighting their source.
diff --git a/data/reusables/copilot/copilot-chat-models-beta-note.md b/data/reusables/copilot/copilot-chat-models-beta-note.md
index 365bf7f73267..ac3d185c0ea4 100644
--- a/data/reusables/copilot/copilot-chat-models-beta-note.md
+++ b/data/reusables/copilot/copilot-chat-models-beta-note.md
@@ -1 +1 @@
-> [!NOTE] The ability to change the AI model used by {% data variables.product.prodname_copilot_chat_short %} is in {% data variables.release-phases.public_preview %} and subject to change. To request access, join the [waitlist](https://github.com/o1-waitlist-signup).
+> [!NOTE] Multiple model support in {% data variables.product.prodname_copilot_chat_short %} is in {% data variables.release-phases.public_preview %} and subject to change.
diff --git a/data/reusables/copilot/copilot-chat-models-list.md b/data/reusables/copilot/copilot-chat-models-list.md
index d4a91f508c6d..d5b89de8cb58 100644
--- a/data/reusables/copilot/copilot-chat-models-list.md
+++ b/data/reusables/copilot/copilot-chat-models-list.md
@@ -1,7 +1,10 @@
-For those enrolled in the model selection {% data variables.release-phases.public_preview %} for {% data variables.product.prodname_copilot_chat_short %}, the following models are currently available:
+The following models are currently available through multi-model {% data variables.product.prodname_copilot_chat_short %}:
-* `gpt-4o`: This is the default {% data variables.product.prodname_copilot_chat_short %} model. It is a versatile, multimodal model that excels in both text and image processing and is designed to provide fast, reliable responses. It also has superior performance in non-English languages.
-* `o1-preview`: This model is focused on advanced reasoning and solving complex problems, in particular in math and science. It responds more slowly than the `gpt-4o` model. You can make 10 requests to this model per day.
-* `o1-mini`: This is the faster version of the `o1-preview` model, balancing the use of complex reasoning with the need for faster responses. It is best suited for code generation and small context operations. You can make 50 requests to this model per day.
+* **GPT 4o**: This is the default {% data variables.product.prodname_copilot_chat_short %} model. It is a versatile, multimodal model that excels in both text and image processing and is designed to provide fast, reliable responses. It also has superior performance in non-English languages. Learn more about the [model's capabilities](https://platform.openai.com/docs/models/gpt-4o) and review the [model card](https://openai.com/index/gpt-4o-system-card/). Gpt-4o is hosted on Azure.
+* **{% data variables.copilot.copilot_claude_sonnet %}**: This model excels at coding tasks across the entire software development lifecycle, from initial design to bug fixes, maintenance to optimizations. Learn more about the [model's capabilities](https://www.anthropic.com/claude/sonnet) or read the [model card](https://assets.anthropic.com/m/61e7d27f8c8f5919/original/Claude-3-Model-Card.pdf). {% data variables.product.prodname_copilot %} uses {% data variables.copilot.copilot_claude_sonnet %} hosted on Amazon Web Services.
+* **o1-preview**: This model is focused on advanced reasoning and solving complex problems, in particular in math and science. It responds more slowly than the `gpt-4o` model. You can make 10 requests to this model per day. Learn more about the [model's capabilities](https://platform.openai.com/docs/models/o1) and review the [model card](https://openai.com/index/openai-o1-system-card/). o1-preview is hosted on Azure.
+* **o1-mini**: This is the faster version of the `o1-preview` model, balancing the use of complex reasoning with the need for faster responses. It is best suited for code generation and small context operations. You can make 50 requests to this model per day. Learn more about the [model's capabilities](https://platform.openai.com/docs/models/o1) and review the [model card](https://openai.com/index/openai-o1-system-card/). o1-mini is hosted on Azure.
-For more information on these models, see [Models](https://platform.openai.com/docs/models/models) in the OpenAI Platform documentation.
+For more information about the o1 models, see [Models](https://platform.openai.com/docs/models/models) in the OpenAI Platform documentation.
+
+For more information about the {% data variables.copilot.copilot_claude_sonnet %} model from Anthropic, see "[AUTOTITLE](/copilot/using-github-copilot/using-claude-sonnet-in-github-copilot)."
diff --git a/data/reusables/copilot/copilot-enterprise-enable.md b/data/reusables/copilot/copilot-enterprise-enable.md
index fccdc8c71ab2..e33cf512d346 100644
--- a/data/reusables/copilot/copilot-enterprise-enable.md
+++ b/data/reusables/copilot/copilot-enterprise-enable.md
@@ -12,4 +12,4 @@
1. Next to "Give {% data variables.product.prodname_copilot_short %} access to Bing," click the dropdown menu and select the policy you want to enforce. By default, Bing is disabled at the organization level.
- > [!NOTE] Bing search integration into {% data variables.product.prodname_copilot_chat_dotcom_short %}, {% data variables.product.prodname_vscode_shortname %}, and {% data variables.product.prodname_vs %} is currently in {% data variables.release-phases.public_preview %} and is subject to change.
+ > [!NOTE] Bing search integration into {% data variables.product.prodname_copilot_chat_dotcom_short %} is currently in {% data variables.release-phases.public_preview %} and is subject to change.
diff --git a/data/reusables/copilot/copilot-individual-emus.md b/data/reusables/copilot/copilot-individual-emus.md
index 7a5eff6613f1..7affec83d243 100644
--- a/data/reusables/copilot/copilot-individual-emus.md
+++ b/data/reusables/copilot/copilot-individual-emus.md
@@ -1,5 +1,5 @@
{% ifversion ghec %}
-To sign up for {% data variables.product.prodname_copilot_for_individuals %}, you need a personal account on {% data variables.product.prodname_dotcom_the_website %}. To use {% data variables.product.prodname_copilot_short %} with a {% data variables.enterprise.prodname_managed_user %}, you must be granted access to a {% data variables.product.prodname_copilot_business_short %} or {% data variables.product.prodname_copilot_enterprise_short %} subscription. For more information, see "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+To sign up for {% data variables.product.prodname_copilot_for_individuals %}, you need a personal account on {% data variables.product.prodname_dotcom_the_website %}. To use {% data variables.product.prodname_copilot_short %} with a {% data variables.enterprise.prodname_managed_user %}, you must be granted access to a {% data variables.product.prodname_copilot_business_short %} or {% data variables.product.prodname_copilot_enterprise_short %} subscription. For more information, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
{% endif %}
diff --git a/data/reusables/copilot/differences-cfi-cfb-table.md b/data/reusables/copilot/differences-cfi-cfb-table.md
index 5589e144ad33..c907338e0ebc 100644
--- a/data/reusables/copilot/differences-cfi-cfb-table.md
+++ b/data/reusables/copilot/differences-cfi-cfb-table.md
@@ -7,6 +7,7 @@
| {% data variables.product.prodname_copilot_chat_short %} in IDEs[^2] | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| {% data variables.product.prodname_copilot_mobile_short %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| {% data variables.product.prodname_copilot_chat_dotcom_short %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
+| {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_windows_terminal %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| {% data variables.product.prodname_copilot_cli_short %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| Block suggestions matching public code | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| {% data variables.product.prodname_copilot_for_prs %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
@@ -20,7 +21,7 @@
{% endrowheaders %}
-[^1]: Code completion in IDEs is available in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, JetBrains IDEs, Azure Data Studio, and Vim/Neovim.
+[^1]: Code completion in IDEs is available in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, JetBrains IDEs, Azure Data Studio, Xcode, and Vim/Neovim.
[^2]: {% data variables.product.prodname_copilot_chat_short %} in IDEs is available in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and JetBrains IDEs.
[^3]: {% data variables.product.prodname_copilot_chat_short %} skills in IDEs is available in {% data variables.product.prodname_vscode %} and {% data variables.product.prodname_vs %}.
[^4]: For details about the increased rate limits, see "[AUTOTITLE](/github-models/prototyping-with-ai-models)."
diff --git a/data/reusables/copilot/model-picker-enable-o1-models.md b/data/reusables/copilot/model-picker-enable-o1-models.md
new file mode 100644
index 000000000000..65a247ddec4c
--- /dev/null
+++ b/data/reusables/copilot/model-picker-enable-o1-models.md
@@ -0,0 +1 @@
+1. If you access {% data variables.product.prodname_copilot_chat_short %} through a {% data variables.product.prodname_copilot_business_short %}{% ifversion ghec %} or {% data variables.product.prodname_copilot_enterprise_short %}{% endif %} subscription, your organization{% ifversion ghec %} or enterprise{% endif %} must grant members the ability to switch to a different model. See "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization){% ifversion ghec %}" or "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise){% endif %}."
diff --git a/data/reusables/copilot/policies-for-dotcom.md b/data/reusables/copilot/policies-for-dotcom.md
index cb6378bd138e..4b7869d38904 100644
--- a/data/reusables/copilot/policies-for-dotcom.md
+++ b/data/reusables/copilot/policies-for-dotcom.md
@@ -3,8 +3,3 @@
* {% data variables.product.prodname_copilot_autocomplete_pr %}. See "[AUTOTITLE](/copilot/using-github-copilot/using-copilot-text-completion)."
* Asking {% data variables.product.prodname_copilot_short %} why a workflow has failed. See "[AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom#ask-why-a-workflow-has-failed)."
- * The ability to:
- * Change the AI model used by {% data variables.product.prodname_copilot_chat_dotcom_short %} and {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vscode_shortname %}. See "[AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom#ai-models-for-copilot-chat)" and "[AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide#ai-models-for-copilot-chat)."
- * Use `o1` models in {% data variables.product.prodname_github_models %}. See "[AUTOTITLE](/github-models/prototyping-with-ai-models)."
-
- To use these AI models, your organization{% ifversion ghec %} or enterprise{% endif %} must also join the [waitlist](https://github.com/o1-waitlist-signup).
diff --git a/data/reusables/copilot/subscription-prerequisite.md b/data/reusables/copilot/subscription-prerequisite.md
index 34dd2e4861f2..736ad45c17d4 100644
--- a/data/reusables/copilot/subscription-prerequisite.md
+++ b/data/reusables/copilot/subscription-prerequisite.md
@@ -1 +1 @@
-For information about how to get access to {% data variables.product.prodname_copilot_short %}, see "[AUTOTITLE](/copilot/about-github-copilot#getting-access-to-github-copilot)."
+For information about how to get access to {% data variables.product.prodname_copilot_short %}, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot)."
diff --git a/data/reusables/copilot/windows-terminal-access-denied.md b/data/reusables/copilot/windows-terminal-access-denied.md
new file mode 100644
index 000000000000..6fe2a47fa7bb
--- /dev/null
+++ b/data/reusables/copilot/windows-terminal-access-denied.md
@@ -0,0 +1 @@
+If you have access to {% data variables.product.prodname_copilot %} via your organization{% ifversion ghec %} or enterprise{% endif %}, you won't be able to use {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_windows_terminal %} if your organization owner{% ifversion ghec %} or enterprise administrator{% endif %} has disabled {% data variables.product.prodname_copilot_cli %}. See "[AUTOTITLE](/copilot/managing-github-copilot-in-your-organization/managing-policies-and-features-for-copilot-in-your-organization)."
diff --git a/data/reusables/copilot/xcode-beta-note.md b/data/reusables/copilot/xcode-beta-note.md
new file mode 100644
index 000000000000..f4f1c90df4a2
--- /dev/null
+++ b/data/reusables/copilot/xcode-beta-note.md
@@ -0,0 +1 @@
+> [!NOTE] The {% data variables.product.prodname_copilot %} extension for Xcode is in {% data variables.release-phases.public_preview %} and subject to change.
diff --git a/data/reusables/data-residency/about-enterprise-owners.md b/data/reusables/data-residency/about-enterprise-owners.md
new file mode 100644
index 000000000000..6684a6d19c3f
--- /dev/null
+++ b/data/reusables/data-residency/about-enterprise-owners.md
@@ -0,0 +1 @@
+Enterprise owners are administrators who have complete control over your enterprise on {% data variables.enterprise.data_residency_site %}.
diff --git a/data/reusables/data-residency/data-resident-enterprise-feature-availability.md b/data/reusables/data-residency/data-resident-enterprise-feature-availability.md
new file mode 100644
index 000000000000..2530a0df45b4
--- /dev/null
+++ b/data/reusables/data-residency/data-resident-enterprise-feature-availability.md
@@ -0,0 +1 @@
+The features available with {% data variables.enterprise.data_residency_short %} on {% data variables.enterprise.data_residency_site %} are similar to the features available to {% data variables.enterprise.prodname_managed_users %} on {% data variables.product.prodname_dotcom_the_website %}, with some additions and exceptions.
diff --git a/data/reusables/data-residency/data-resident-enterprise-prerequisite-access.md b/data/reusables/data-residency/data-resident-enterprise-prerequisite-access.md
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/data/reusables/data-residency/data-resident-enterprise-prerequisite-setup-user.md b/data/reusables/data-residency/data-resident-enterprise-prerequisite-setup-user.md
new file mode 100644
index 000000000000..49817e4f90e8
--- /dev/null
+++ b/data/reusables/data-residency/data-resident-enterprise-prerequisite-setup-user.md
@@ -0,0 +1 @@
+You must have the credentials for your enterprise's setup user.
diff --git a/data/reusables/data-residency/data-resident-enterprise-sign-in-as-setup-user.md b/data/reusables/data-residency/data-resident-enterprise-sign-in-as-setup-user.md
new file mode 100644
index 000000000000..bf13fa24d2dd
--- /dev/null
+++ b/data/reusables/data-residency/data-resident-enterprise-sign-in-as-setup-user.md
@@ -0,0 +1 @@
+1. Sign in to your enterprise on {% data variables.enterprise.data_residency_site %} as the setup user.
diff --git a/data/reusables/data-residency/data-resident-enterprises-api-access.md b/data/reusables/data-residency/data-resident-enterprises-api-access.md
new file mode 100644
index 000000000000..222a8859b4ad
--- /dev/null
+++ b/data/reusables/data-residency/data-resident-enterprises-api-access.md
@@ -0,0 +1 @@
+Integrators with the REST and GraphQL APIs must send requests to your enterprise's dedicated URL on {% data variables.enterprise.data_residency_site %}.
diff --git a/data/reusables/data-residency/data-resident-enterprises-network-access.md b/data/reusables/data-residency/data-resident-enterprises-network-access.md
new file mode 100644
index 000000000000..7db66e845b49
--- /dev/null
+++ b/data/reusables/data-residency/data-resident-enterprises-network-access.md
@@ -0,0 +1 @@
+You must ensure that client systems trust {% data variables.product.company_short %}'s SSH key fingerprints and can access certain hostnames and IP addresses. See "[AUTOTITLE](/admin/data-residency/network-details-for-ghecom)."
diff --git a/data/reusables/data-residency/github-marketplace-apps-unsupported.md b/data/reusables/data-residency/github-marketplace-apps-unsupported.md
new file mode 100644
index 000000000000..942997994390
--- /dev/null
+++ b/data/reusables/data-residency/github-marketplace-apps-unsupported.md
@@ -0,0 +1,3 @@
+{% ifversion ghec %}
+>[!NOTE] Apps from {% data variables.product.prodname_marketplace %} are not currently available on {% data variables.enterprise.data_residency_site %}.
+{% endif %}
diff --git a/data/reusables/data-residency/sign-in-to-okta.md b/data/reusables/data-residency/sign-in-to-okta.md
new file mode 100644
index 000000000000..f836b327f0c3
--- /dev/null
+++ b/data/reusables/data-residency/sign-in-to-okta.md
@@ -0,0 +1 @@
+1. Sign in to the Okta Admin Console.
diff --git a/data/reusables/data-residency/sso-recovery-codes-warning.md b/data/reusables/data-residency/sso-recovery-codes-warning.md
new file mode 100644
index 000000000000..2882343baad4
--- /dev/null
+++ b/data/reusables/data-residency/sso-recovery-codes-warning.md
@@ -0,0 +1,5 @@
+{% warning %}
+
+**Warning**: Ensure you have downloaded and stored the SSO recovery codes for your enterprise's setup user. See "[Prerequisites](#prerequisites)."
+
+{% endwarning %}
diff --git a/data/reusables/data-residency/test-sign-in.md b/data/reusables/data-residency/test-sign-in.md
new file mode 100644
index 000000000000..00301b4a0fa9
--- /dev/null
+++ b/data/reusables/data-residency/test-sign-in.md
@@ -0,0 +1,2 @@
+1. If you are already signed in to {% data variables.enterprise.data_residency_site %} as the setup user, sign out.
+1. Sign in using the account you assigned as the first enterprise owner.
diff --git a/data/reusables/data-residency/when-you-adopt-data-residency.md b/data/reusables/data-residency/when-you-adopt-data-residency.md
new file mode 100644
index 000000000000..b5f6954ed7ae
--- /dev/null
+++ b/data/reusables/data-residency/when-you-adopt-data-residency.md
@@ -0,0 +1,3 @@
+When you adopt {% data variables.enterprise.data_residency %}, you can choose where your company's code and data are stored. Your enterprise will be hosted on a dedicated subdomain of {% data variables.enterprise.data_residency_site %}.
+
+Currently, you can store code and data in the **EU**. In the future, {% data variables.product.github %} plans to offer {% data variables.enterprise.data_residency_short %} in more regions.
diff --git a/data/reusables/desktop/authenticate-in-browser.md b/data/reusables/desktop/authenticate-in-browser.md
index a8e082487a62..57a9eff698d7 100644
--- a/data/reusables/desktop/authenticate-in-browser.md
+++ b/data/reusables/desktop/authenticate-in-browser.md
@@ -1,3 +1,3 @@
-1. To authenticate to {% data variables.product.prodname_dotcom %}, in the browser, type your {% data variables.product.prodname_dotcom %}.com credentials and click **Sign in**.
+1. To authenticate to {% data variables.product.github %}, in the browser, type your credentials and click **Sign in**.
- Alternatively, if you were already signed in to {% data variables.product.prodname_dotcom %}, follow the prompts to return to {% data variables.product.prodname_desktop %} to finish authenticating.
+ Alternatively, if you were already signed in to {% data variables.product.github %}, follow the prompts to return to {% data variables.product.prodname_desktop %} to finish authenticating.
diff --git a/data/reusables/desktop/mac-click-sign-into.md b/data/reusables/desktop/mac-click-sign-into.md
new file mode 100644
index 000000000000..f4e37dcc4326
--- /dev/null
+++ b/data/reusables/desktop/mac-click-sign-into.md
@@ -0,0 +1,3 @@
+1. In the "Settings" window, on the **Accounts** pane, click the appropriate "Sign Into" button. Use **Sign Into {% data variables.product.prodname_enterprise %}** to sign into {% data variables.product.prodname_ghe_server %} or {% data variables.enterprise.data_residency %}.
+
+ ![Screenshot of the "Accounts" pane in the "Settings" window. Blue buttons labeled "Sign Into GitHub.com" and "Sign Into GitHub Enterprise" are shown.](/assets/images/help/desktop/sign-in-github.png)
diff --git a/data/reusables/desktop/mac-select-desktop-menu.md b/data/reusables/desktop/mac-select-desktop-menu.md
index 2768f6c7fa2e..3571733e5bf0 100644
--- a/data/reusables/desktop/mac-select-desktop-menu.md
+++ b/data/reusables/desktop/mac-select-desktop-menu.md
@@ -1,3 +1,3 @@
-1. In the menu bar, select **{% data variables.product.prodname_desktop %}**, then click **Preferences**.
+1. In the menu bar, select **{% data variables.product.prodname_desktop %}**, then click **Settings**.
- ![Screenshot of the menu bar on a Mac. Under the open "GitHub Desktop" dropdown menu, the cursor hovers over "Preferences", which is highlighted in blue.](/assets/images/help/desktop/mac-choose-preferences.png)
+ ![Screenshot of the menu bar on a Mac. Under the open "GitHub Desktop" dropdown menu, the cursor hovers over "Settings", which is highlighted in blue.](/assets/images/help/desktop/mac-choose-settings.png)
diff --git a/data/reusables/desktop/windows-click-sign-into.md b/data/reusables/desktop/windows-click-sign-into.md
new file mode 100644
index 000000000000..737f5057b537
--- /dev/null
+++ b/data/reusables/desktop/windows-click-sign-into.md
@@ -0,0 +1,3 @@
+1. In the "Options" window, on the **Accounts** pane, click the appropriate "Sign Into" button. Use **Sign Into {% data variables.product.prodname_enterprise %}** to sign into {% data variables.product.prodname_ghe_server %} or {% data variables.enterprise.data_residency %}.
+
+ ![Screenshot of the "Accounts" pane in the "Options" window. Blue buttons labeled "Sign Into GitHub.com" and "Sign Into GitHub Enterprise" are shown.](/assets/images/help/desktop/windows-sign-in-github.png)
diff --git a/data/reusables/emus/about-team-management-with-idp.md b/data/reusables/emus/about-team-management-with-idp.md
index 318903fe8764..c1473ca3d40f 100644
--- a/data/reusables/emus/about-team-management-with-idp.md
+++ b/data/reusables/emus/about-team-management-with-idp.md
@@ -1 +1 @@
-{% ifversion ghec %}With {% data variables.product.prodname_emus %}{% else %}If you have configured SCIM provisioning{% endif %}, you can manage team and organization membership within your enterprise through your IdP by connecting teams on {% data variables.location.product_location %} with groups on your IdP.
+{% ifversion ghec %}With {% data variables.product.prodname_emus %}{% else %}If you have configured SCIM provisioning{% endif %}, you can manage team and organization membership within your enterprise through your IdP by connecting teams on {% data variables.product.github %} with groups on your IdP.
diff --git a/data/reusables/emus/oauth-app-note.md b/data/reusables/emus/oauth-app-note.md
index eda3697febcf..2a3041f16d3e 100644
--- a/data/reusables/emus/oauth-app-note.md
+++ b/data/reusables/emus/oauth-app-note.md
@@ -2,7 +2,7 @@
{% note %}
-**Note:** Even an {% data variables.product.prodname_oauth_app %} created by a {% data variables.enterprise.prodname_managed_user %} or {% data variables.enterprise.prodname_emu_org %} can be accessed by users outside the enterprise.
+**Note:** On {% data variables.product.prodname_dotcom_the_website %}, even an {% data variables.product.prodname_oauth_app %} created by a {% data variables.enterprise.prodname_managed_user %} or {% data variables.enterprise.prodname_emu_org %} can be accessed by users outside the enterprise.
{% endnote %}
diff --git a/data/reusables/emus/sign-in-as-setup-user.md b/data/reusables/emus/sign-in-as-setup-user.md
index 3aa4e2f96f71..213f2e777bf5 100644
--- a/data/reusables/emus/sign-in-as-setup-user.md
+++ b/data/reusables/emus/sign-in-as-setup-user.md
@@ -1 +1 @@
-1. Sign into {% data variables.product.prodname_dotcom_the_website %} as the setup user for your enterprise with the username **SHORT-CODE_admin**, replacing SHORT-CODE with your enterprise's short code.
+1. Sign in as the setup user for your enterprise with the username **SHORT-CODE_admin**, replacing SHORT-CODE with your enterprise's short code.
diff --git a/data/reusables/enterprise-accounts/access-enterprise-emu.md b/data/reusables/enterprise-accounts/access-enterprise-emu.md
new file mode 100644
index 000000000000..35d3679dac3c
--- /dev/null
+++ b/data/reusables/enterprise-accounts/access-enterprise-emu.md
@@ -0,0 +1 @@
+1. In the top-right corner of {% data variables.product.github %}, click your profile photo, then click **Your enterprise**.
diff --git a/data/reusables/enterprise-accounts/access-enterprise.md b/data/reusables/enterprise-accounts/access-enterprise.md
index 72a76cb9c4b7..bba0eee9fa96 100644
--- a/data/reusables/enterprise-accounts/access-enterprise.md
+++ b/data/reusables/enterprise-accounts/access-enterprise.md
@@ -1,8 +1,6 @@
{%- ifversion ghec %}
-1. In the top-right corner of {% data variables.product.prodname_dotcom %}, click your profile photo, then click **Your enterprises**.
-
-1. In the list of enterprises, click the enterprise you want to view.
-
+1. In the top-right corner of {% data variables.product.prodname_dotcom %}, click your profile photo.
+1. Depending on your environment, click **Your enterprise**, or click **Your enterprises** then click the enterprise you want to view.
{%- elsif ghes %}
{% data reusables.enterprise-accounts.access-enterprise-ghes %}
{%- endif %}
diff --git a/data/reusables/enterprise-accounts/emu-configure-authentication.md b/data/reusables/enterprise-accounts/emu-configure-authentication.md
new file mode 100644
index 000000000000..94125d790f46
--- /dev/null
+++ b/data/reusables/enterprise-accounts/emu-configure-authentication.md
@@ -0,0 +1,12 @@
+Next, configure how your members will authenticate.
+
+**If you're using Entra ID** as your IdP, you can choose between OpenID Connect (OIDC) and Security Assertion Markup Language (SAML).
+* We recommend OIDC, which includes support for Conditional Access Policies (CAP).
+* If you require multiple enterprises provisioned from one tenant, you can use SAML or OIDC for the first enterprise, but must use SAML for each additional enterprise.
+
+**If you're using another IdP**, like Okta or PingFederate, you must use SAML to authenticate your members.
+
+To get started, read the guide for your chosen authentication method.
+
+* "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/configuring-oidc-for-enterprise-managed-users)"
+* "[AUTOTITLE](/admin/identity-and-access-management/managing-iam-with-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users)"
diff --git a/data/reusables/enterprise-accounts/emu-configure-provisioning.md b/data/reusables/enterprise-accounts/emu-configure-provisioning.md
new file mode 100644
index 000000000000..45c4bdb72a38
--- /dev/null
+++ b/data/reusables/enterprise-accounts/emu-configure-provisioning.md
@@ -0,0 +1 @@
+After you configure authentication, you can configure SCIM provisioning, which is how your IdP will create {% data variables.enterprise.prodname_managed_users %} on {% data variables.product.github %}. See "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/configuring-scim-provisioning-for-enterprise-managed-users)."
diff --git a/data/reusables/enterprise-accounts/emu-create-a-pat.md b/data/reusables/enterprise-accounts/emu-create-a-pat.md
new file mode 100644
index 000000000000..bba0075a7406
--- /dev/null
+++ b/data/reusables/enterprise-accounts/emu-create-a-pat.md
@@ -0,0 +1,7 @@
+Next, create a {% data variables.product.pat_generic %} that you can use to configure provisioning.
+
+* You must be **signed in as the setup user** when you create the token.
+* The token must have at least the **scim:enterprise** scope.
+* The token must have **no expiration**.
+
+To learn how to create a {% data variables.product.pat_v1 %}, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)."
diff --git a/data/reusables/enterprise-accounts/emu-manage-org-membership.md b/data/reusables/enterprise-accounts/emu-manage-org-membership.md
new file mode 100644
index 000000000000..b2d0245118d3
--- /dev/null
+++ b/data/reusables/enterprise-accounts/emu-manage-org-membership.md
@@ -0,0 +1 @@
+After authentication and provisioning are configured, you can start managing organization membership for your {% data variables.enterprise.prodname_managed_users %} by synchronizing IdP groups with teams. See "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/managing-team-memberships-with-identity-provider-groups)."
diff --git a/data/reusables/enterprise-data-residency/access-domain.md b/data/reusables/enterprise-data-residency/access-domain.md
new file mode 100644
index 000000000000..301dd590247f
--- /dev/null
+++ b/data/reusables/enterprise-data-residency/access-domain.md
@@ -0,0 +1 @@
+This article contains commands or examples that use the `{% data variables.product.product_url %}` domain. You might access {% data variables.product.github %} at a different domain, such as `{% data variables.enterprise.data_residency_example_domain %}`.
diff --git a/data/reusables/enterprise-licensing/unique-user-licensing-model.md b/data/reusables/enterprise-licensing/unique-user-licensing-model.md
index c7a1f3b1508f..c7acadf06779 100644
--- a/data/reusables/enterprise-licensing/unique-user-licensing-model.md
+++ b/data/reusables/enterprise-licensing/unique-user-licensing-model.md
@@ -1,3 +1,3 @@
-{% data variables.product.company_short %} uses a unique-user licensing model. For enterprise products that include multiple deployment options, {% data variables.product.company_short %} determines how many licensed seats you're consuming based on the number of unique users across all your deployments.
+{% data variables.product.company_short %} uses a unique-user licensing model. With the {% data variables.product.prodname_enterprise %} plan, you're entitled to use both {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}. Your {% data variables.product.prodname_ghe_cloud %} allowance includes **one** deployment, on either {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}.
-Each user only consumes one license, no matter how many {% data variables.product.prodname_ghe_server %} instances the user uses, or how many organizations the user is a member of on {% data variables.product.prodname_ghe_cloud %}. This model allows each person to use multiple {% data variables.product.prodname_enterprise %} deployments without incurring extra costs.
+{% data variables.product.company_short %} determines how many licensed seats you're consuming based on the number of unique users across your deployments. Each user only consumes one license, no matter how many {% data variables.product.prodname_ghe_server %} instances the user uses, or how many organizations the user is a member of on your {% data variables.product.prodname_ghe_cloud %} deployment. This model allows each person to use multiple {% data variables.product.prodname_enterprise %} deployments without incurring extra costs.
diff --git a/data/reusables/enterprise-migration-tool/about-the-migrator-role.md b/data/reusables/enterprise-migration-tool/about-the-migrator-role.md
index 96b203361391..44f30254d626 100644
--- a/data/reusables/enterprise-migration-tool/about-the-migrator-role.md
+++ b/data/reusables/enterprise-migration-tool/about-the-migrator-role.md
@@ -1,10 +1,12 @@
-To remove the need for organization owners to complete migrations, {% data variables.product.prodname_dotcom %} includes a distinct role for using {% data variables.product.prodname_importer_proper_name %}. Granting the migrator role allows you to designate other teams or individuals to handle your migrations. You can only grant the migrator role for an organization on {% data variables.product.prodname_dotcom_the_website %}.
+To remove the need for organization owners to complete migrations, {% data variables.product.prodname_dotcom %} includes a distinct role for using {% data variables.product.prodname_importer_proper_name %}.
-You can grant the migrator role to an individual user or a team. We strongly recommend that you assign the migrator role to a team. Then, you can further customize who can run a migration by adjusting team membership. For more information about changing team membership, see "[AUTOTITLE](/organizations/organizing-members-into-teams/adding-organization-members-to-a-team)" or "[AUTOTITLE](/organizations/organizing-members-into-teams/removing-organization-members-from-a-team)."
+Granting the migrator role allows you to designate other teams or individuals to handle your migrations.
+
+* You can only grant the migrator role for an organization on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}.
+* You can grant the migrator role to an individual user or a team. We strongly recommend that you assign the migrator role to a team. Then, you can further customize who can run a migration by adjusting team membership. See "[AUTOTITLE](/organizations/organizing-members-into-teams/adding-organization-members-to-a-team)" or "[AUTOTITLE](/organizations/organizing-members-into-teams/removing-organization-members-from-a-team)."
+* The migrator must use a {% data variables.product.pat_generic %} that meets all the requirements for running migrations.
> [!WARNING]
> When you grant the migrator role in an organization to a user or team, you are granting them the ability to import or export any repository in that organization.
To grant the migrator role, see "[Granting the migrator role](#granting-the-migrator-role)."
-
-After you grant the migrator role, make sure the migrator uses a {% data variables.product.pat_generic %} that meets all the requirements for running migrations.
diff --git a/data/reusables/enterprise-migration-tool/add-target-api-url.md b/data/reusables/enterprise-migration-tool/add-target-api-url.md
new file mode 100644
index 000000000000..42239e63b0fa
--- /dev/null
+++ b/data/reusables/enterprise-migration-tool/add-target-api-url.md
@@ -0,0 +1 @@
+If you're migrating to {% data variables.enterprise.data_residency_site %}, add `--target-api-url TARGET-API-URL`, where TARGET-API-URL is the base API URL for your enterprise's subdomain. For example: `https://api.{% data variables.enterprise.data_residency_example_domain %}`.
diff --git a/data/reusables/enterprise-migration-tool/configuring-ip-allow-lists.md b/data/reusables/enterprise-migration-tool/configuring-ip-allow-lists.md
index 7d2c9f3e4511..e0f23a5b00b0 100644
--- a/data/reusables/enterprise-migration-tool/configuring-ip-allow-lists.md
+++ b/data/reusables/enterprise-migration-tool/configuring-ip-allow-lists.md
@@ -1,6 +1,6 @@
-If the source or destination of your migration uses an IP allow list (either {% data variables.product.company_short %}'s IP allow list feature or your identity provider's (IdP) IP allow list restrictions, such as Azure CAP), you need to configure IP allow lists on {% data variables.product.prodname_dotcom %}.
+If the source or destination of your migration uses an IP allow list (either {% data variables.product.company_short %}'s IP allow list feature or your identity provider's (IdP) IP allow list restrictions, such as Azure CAP), you need to configure IP allow lists on {% data variables.product.prodname_dotcom %}. See "[AUTOTITLE](/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization)" and "[AUTOTITLE](/enterprise-cloud@latest/admin/configuration/configuring-your-enterprise/restricting-network-traffic-to-your-enterprise-with-an-ip-allow-list)."
* If you use {% data variables.product.company_short %}'s IP allow list feature, you must add the {% data variables.product.prodname_dotcom %} IP ranges below to the allow list for the source and/or destination organizations.
* If you use your IdP's IP allow list to restrict access to your enterprise on {% data variables.product.prodname_dotcom %}, you should disable these restrictions in your enterprise account settings until after your migration is complete.
-For more information, see "[AUTOTITLE](/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization)" and "[AUTOTITLE](/enterprise-cloud@latest/admin/configuration/configuring-your-enterprise/restricting-network-traffic-to-your-enterprise-with-an-ip-allow-list)."
+The IP ranges vary depending on whether the destination of your migration is {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}.
diff --git a/data/reusables/enterprise-migration-tool/env-variables-gei.md b/data/reusables/enterprise-migration-tool/env-variables-gei.md
index 78304b63bb5d..8c35cfefc868 100644
--- a/data/reusables/enterprise-migration-tool/env-variables-gei.md
+++ b/data/reusables/enterprise-migration-tool/env-variables-gei.md
@@ -4,12 +4,14 @@
```shell copy
export GH_PAT="TOKEN"
- export GH_SOURCE_PAT="TOKEN"
+ export GH_SOURCE_PAT="TOKEN"
```
* If you're using PowerShell, use the `$env` command.
```shell copy
$env:GH_PAT="TOKEN"
- $env:GH_SOURCE_PAT="TOKEN"
+ $env:GH_SOURCE_PAT="TOKEN"
```
+
+{% data reusables.enterprise-migration-tool.set-target-api-url %}
diff --git a/data/reusables/enterprise-migration-tool/extra-requirements-storage.md b/data/reusables/enterprise-migration-tool/extra-requirements-storage.md
new file mode 100644
index 000000000000..728fd5e7550f
--- /dev/null
+++ b/data/reusables/enterprise-migration-tool/extra-requirements-storage.md
@@ -0,0 +1,2 @@
+* You must allow access to the egress IP ranges for {% data variables.enterprise.data_residency_site %}. See "[AUTOTITLE](/enterprise-cloud@latest/admin/data-residency/network-details-for-ghecom#ranges-for-egress-traffic)."
+* If you're using Azure Blob Storage, you may need to perform some additional configuration. Please contact {% data variables.contact.contact_support_page %}.
diff --git a/data/reusables/enterprise-migration-tool/grant-migrator-role-ghecom.md b/data/reusables/enterprise-migration-tool/grant-migrator-role-ghecom.md
new file mode 100644
index 000000000000..0065f4eafbb6
--- /dev/null
+++ b/data/reusables/enterprise-migration-tool/grant-migrator-role-ghecom.md
@@ -0,0 +1 @@
+>[!NOTE] If you're the granting the migrator role for {% data variables.enterprise.data_residency_site %}, you must also include the target API URL for your enterprise's subdomain. For example: `--target-api-url https://api.{% data variables.enterprise.data_residency_example_domain %}`.
diff --git a/data/reusables/enterprise-migration-tool/identifying-githubs-ip-ranges.md b/data/reusables/enterprise-migration-tool/identifying-githubs-ip-ranges.md
index 0d8642ba1dfb..85329843d101 100644
--- a/data/reusables/enterprise-migration-tool/identifying-githubs-ip-ranges.md
+++ b/data/reusables/enterprise-migration-tool/identifying-githubs-ip-ranges.md
@@ -1,4 +1,4 @@
-You'll need to add the following IP ranges to your IP allowlist(s):
+You'll need to add the following IP ranges to your IP allow list(s):
* 192.30.252.0/22
* 185.199.108.0/22
diff --git a/data/reusables/enterprise-migration-tool/ip-ranges-ghecom.md b/data/reusables/enterprise-migration-tool/ip-ranges-ghecom.md
new file mode 100644
index 000000000000..efa74d0ce7a2
--- /dev/null
+++ b/data/reusables/enterprise-migration-tool/ip-ranges-ghecom.md
@@ -0,0 +1,22 @@
+You'll need to add the following IP ranges to your IP allow list(s):
+
+* 192.30.252.0/22
+* 185.199.108.0/22
+* 140.82.112.0/20
+* 143.55.64.0/20
+* 2a0a:a440::/29
+* 2606:50c0::/32
+* 4.231.155.80/29
+* 4.225.9.96/29
+* 51.12.144.32/29
+* 20.199.1.232/29
+* 51.12.152.184/29
+* 20.199.6.80/29
+* 51.12.152.240/29
+* 20.19.101.136/29
+* 51.12.252.16/28
+* 74.241.131.48/28
+* 20.240.211.176/28
+* 108.143.221.96/28
+* 20.61.46.32/28
+* 20.224.62.160/28
diff --git a/data/reusables/enterprise-migration-tool/migration-query-method.md b/data/reusables/enterprise-migration-tool/migration-query-method.md
index c6c1e328f3cf..84d64ed71266 100644
--- a/data/reusables/enterprise-migration-tool/migration-query-method.md
+++ b/data/reusables/enterprise-migration-tool/migration-query-method.md
@@ -1,3 +1,5 @@
To make GraphQL queries, you'll need to write your own scripts or use an HTTP client like [Insomnia](https://insomnia.rest/).
To learn more about getting started with the {% data variables.product.prodname_dotcom %} GraphQL API, including how to authenticate, see "[AUTOTITLE](/graphql/guides/forming-calls-with-graphql)."
+
+You will send all GraphQL queries to the **destination** of your migration. If you're migrating to {% data variables.enterprise.data_residency %}, make sure to send queries to the endpoint for your enterprise's subdomain of {% data variables.enterprise.data_residency_site %}.
diff --git a/data/reusables/enterprise-migration-tool/set-target-api-url.md b/data/reusables/enterprise-migration-tool/set-target-api-url.md
new file mode 100644
index 000000000000..da3f91080da6
--- /dev/null
+++ b/data/reusables/enterprise-migration-tool/set-target-api-url.md
@@ -0,0 +1,7 @@
+1. If you're migrating to {% data variables.enterprise.data_residency %}, for convenience, set an environment variable for the **base API URL** for your enterprise. For example:
+
+ ```shell copy
+ export TARGET_API_URL="https://api.{% data variables.enterprise.data_residency_example_domain %}"
+ ```
+
+ You'll use this variable with the `--target-api-url` option in commands you run with the {% data variables.product.prodname_cli %}.
diff --git a/data/reusables/enterprise-migration-tool/skip-releases.md b/data/reusables/enterprise-migration-tool/skip-releases.md
index 9b4dce18e49f..3cedb681473f 100644
--- a/data/reusables/enterprise-migration-tool/skip-releases.md
+++ b/data/reusables/enterprise-migration-tool/skip-releases.md
@@ -1,5 +1 @@
-{% note %}
-
-**Note:** If your repository has more than 10 GB of releases data, releases cannot be migrated. Use the `--skip-releases` flag to migrate the repository without releases.
-
-{% endnote %}
+If your repository has more than 10 GB of releases data, releases cannot be migrated. Use the `--skip-releases` flag to migrate the repository without releases.
diff --git a/data/reusables/enterprise-migration-tool/supported-migration-paths.md b/data/reusables/enterprise-migration-tool/supported-migration-paths.md
index 29e76370f98b..38622452d40d 100644
--- a/data/reusables/enterprise-migration-tool/supported-migration-paths.md
+++ b/data/reusables/enterprise-migration-tool/supported-migration-paths.md
@@ -1,4 +1,4 @@
-{% data variables.product.prodname_importer_proper_name %} supports migrations to {% data variables.product.prodname_ghe_cloud %} from the following sources.
+{% data variables.product.prodname_importer_proper_name %} supports migrations **to** {% data variables.product.prodname_ghe_cloud %} ({% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}) **from** the following sources.
* Azure DevOps (ADO) Cloud
* Bitbucket Server and Bitbucket Data Center 5.14+
diff --git a/data/reusables/enterprise-migration-tool/target-api-url-placeholder.md b/data/reusables/enterprise-migration-tool/target-api-url-placeholder.md
new file mode 100644
index 000000000000..59693d584333
--- /dev/null
+++ b/data/reusables/enterprise-migration-tool/target-api-url-placeholder.md
@@ -0,0 +1 @@
+TARGET-API-URL | The base API URL for your enterprise's subdomain of {% data variables.enterprise.data_residency_site %}. For example: `https://api.{% data variables.enterprise.data_residency_example_domain %}`.
diff --git a/data/reusables/enterprise_migrations/retrieve-enterprise-id-graphql.md b/data/reusables/enterprise_migrations/retrieve-enterprise-id-graphql.md
index fd614e2b20e2..6e794da01286 100644
--- a/data/reusables/enterprise_migrations/retrieve-enterprise-id-graphql.md
+++ b/data/reusables/enterprise_migrations/retrieve-enterprise-id-graphql.md
@@ -1,3 +1,3 @@
| Query variable | Description |
|----|----|
-| `slug` | The slug for your enterprise account, which you can identify by looking at the URL for your enterprise, `https://github.com/enterprises/SLUG`.
+| `slug` | The slug for your enterprise account, which you can identify by looking at the URL for your enterprise, `https://github.com/enterprises/SLUG` or `https://SLUG.ghe.com`.
diff --git a/data/reusables/enterprise_user_management/scim-manages-user-lifecycle.md b/data/reusables/enterprise_user_management/scim-manages-user-lifecycle.md
index 4721a7b81092..efe68a83c7e5 100644
--- a/data/reusables/enterprise_user_management/scim-manages-user-lifecycle.md
+++ b/data/reusables/enterprise_user_management/scim-manages-user-lifecycle.md
@@ -2,7 +2,7 @@ With SCIM, you manage the lifecycle of user accounts from your IdP:
* {% ifversion ghec %}After you configure provisioning for {% data variables.product.prodname_emus %}, your IdP uses SCIM to provision user accounts on {% data variables.product.github %} and add the accounts to your enterprise.{% else %}When you provision a new user, your IdP will prompt {% data variables.location.product_location %} to create an account and send an onboarding email to the user.{% endif %} If you assign a group to the application in your IdP, your IdP will provision accounts for all members of the group.
* When you update information associated with a user's identity on your IdP, your IdP will update the user's account on {% data variables.product.prodname_dotcom %}.
-* When you unassign the user from the IdP application or deactivate a user's account on your IdP, your IdP will communicate with {% data variables.product.prodname_dotcom %} to invalidate any sessions and disable the member's account. The disabled account's information is maintained and their username is changed to a hash of their original username{% ifversion ghec %} with the short code appended{% endif %}.
+* When you unassign the user from the IdP application or deactivate a user's account on your IdP, your IdP will communicate with {% data variables.product.prodname_dotcom %} to invalidate any sessions and disable the member's account. The disabled account's information is maintained and their username is changed to a hash of their original username{% ifversion ghec %}, with the short code appended if applicable{% endif %}.
* If you reassign a user to the IdP application or reactivate their account on your IdP, the user account will be reactivated, and the username will be restored.
{% ifversion ghec or ghes > 3.13 %}
diff --git a/data/reusables/gated-features/copilot-in-windows-terminal.md b/data/reusables/gated-features/copilot-in-windows-terminal.md
new file mode 100644
index 000000000000..3322a7aa5200
--- /dev/null
+++ b/data/reusables/gated-features/copilot-in-windows-terminal.md
@@ -0,0 +1,3 @@
+If you have a {% data variables.product.prodname_copilot_for_individuals %} subscription, you have access to GitHub Copilot in {% data variables.product.prodname_windows_terminal %}.
+
+Owners of organizations or enterprises with a {% data variables.product.prodname_copilot_for_business %} or {% data variables.product.prodname_copilot_enterprise %} subscription can decide whether to grant access to GitHub Copilot in {% data variables.product.prodname_windows_terminal %} for users in their organization or enterprise under the {% data variables.product.prodname_copilot_cli %} policy.
diff --git a/data/reusables/gated-features/security-campaigns.md b/data/reusables/gated-features/security-campaigns.md
new file mode 100644
index 000000000000..b2b5475ac459
--- /dev/null
+++ b/data/reusables/gated-features/security-campaigns.md
@@ -0,0 +1,7 @@
+{% ifversion ghec %}
+Organizations on {% data variables.product.prodname_ghe_cloud %} with [{% data variables.product.prodname_GH_advanced_security %}](/get-started/learning-about-github/about-github-advanced-security) enabled
+
+{% elsif ghes %}
+Organizations with [{% data variables.product.prodname_GH_advanced_security %}](/get-started/learning-about-github/about-github-advanced-security) enabled
+
+{% endif %}
diff --git a/data/reusables/github-connect/access-dotcom-and-enterprise.md b/data/reusables/github-connect/access-dotcom-and-enterprise.md
index c3761e2f128c..ba9ce6d04659 100644
--- a/data/reusables/github-connect/access-dotcom-and-enterprise.md
+++ b/data/reusables/github-connect/access-dotcom-and-enterprise.md
@@ -1 +1 @@
-1. Sign in to {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_dotcom_the_website %}.
+1. Sign in to {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %}.
diff --git a/data/reusables/github-connect/enable-github-connect.md b/data/reusables/github-connect/enable-github-connect.md
new file mode 100644
index 000000000000..529643110db9
--- /dev/null
+++ b/data/reusables/github-connect/enable-github-connect.md
@@ -0,0 +1,4 @@
+{% data reusables.enterprise-accounts.access-enterprise %}
+{% data reusables.enterprise-accounts.github-connect-tab %}
+1. Under "{% data variables.product.prodname_github_connect %} is not enabled yet", click **Enable {% data variables.product.prodname_github_connect %}**. By clicking **Enable {% data variables.product.prodname_github_connect %}**, you agree to the "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-terms-for-additional-products-and-features#connect)."
+1. To the right of the enterprise account you'd like to connect, click **Connect**.
diff --git a/data/reusables/github-connect/license-sync.md b/data/reusables/github-connect/license-sync.md
new file mode 100644
index 000000000000..91a3b95c2f74
--- /dev/null
+++ b/data/reusables/github-connect/license-sync.md
@@ -0,0 +1 @@
+| Automatic user license sync | Manage license usage across your {% data variables.product.prodname_enterprise %} deployments by automatically syncing user licenses from {% data variables.location.product_location %} to {% data variables.product.prodname_ghe_cloud %}. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise)" |
diff --git a/data/reusables/github-connect/send-contribution-counts-to-githubcom.md b/data/reusables/github-connect/send-contribution-counts-to-githubcom.md
index c700e43e0836..7a2e9a8690ff 100644
--- a/data/reusables/github-connect/send-contribution-counts-to-githubcom.md
+++ b/data/reusables/github-connect/send-contribution-counts-to-githubcom.md
@@ -1 +1 @@
-1. Under "Contributions", select **Send my contribution counts to {% data variables.product.prodname_dotcom_the_website %}**, then click **Update contributions.**
+1. Under "Contributions", select **Send my contribution counts to PLATFORM**, then click **Update contributions.**
diff --git a/data/reusables/github-connect/unified-contributions.md b/data/reusables/github-connect/unified-contributions.md
new file mode 100644
index 000000000000..ea8a33390c20
--- /dev/null
+++ b/data/reusables/github-connect/unified-contributions.md
@@ -0,0 +1 @@
+| Unified contributions | Allow users to include anonymized contribution counts for their work on {% data variables.location.product_location %} in their contribution graphs on {% data variables.product.prodname_ghe_cloud %}. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-unified-contributions-for-your-enterprise)" |
diff --git a/data/reusables/github-connect/unified-search.md b/data/reusables/github-connect/unified-search.md
new file mode 100644
index 000000000000..af97acbf7fec
--- /dev/null
+++ b/data/reusables/github-connect/unified-search.md
@@ -0,0 +1 @@
+| Unified search | Allow users to include repositories on {% data variables.product.prodname_ghe_cloud %} in their search results when searching from {% data variables.location.product_location %}. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-unified-search-for-your-enterprise)" |
diff --git a/data/reusables/github-connect/what-happens-when-enabled.md b/data/reusables/github-connect/what-happens-when-enabled.md
new file mode 100644
index 000000000000..9935f325fbde
--- /dev/null
+++ b/data/reusables/github-connect/what-happens-when-enabled.md
@@ -0,0 +1,8 @@
+When you enable {% data variables.product.prodname_github_connect %}, you configure a connection between {% data variables.location.product_location %} and an enterprise account on {% data variables.product.prodname_ghe_cloud %}. {% data reusables.github-connect.connection-port-protocol %}
+
+Enabling {% data variables.product.prodname_github_connect %} creates a {% data variables.product.prodname_github_app %} owned by the enterprise account on {% data variables.product.prodname_ghe_cloud %}. {% data variables.product.product_name %} uses the {% data variables.product.prodname_github_app %}'s credentials to make requests to {% data variables.product.prodname_ghe_cloud %}.
+
+{% data variables.product.prodname_ghe_server %} stores credentials from the {% data variables.product.prodname_github_app %}. The following credentials will be replicated to all nodes in a high availability or cluster environment, and stored in any backups, including snapshots created by {% data variables.product.prodname_enterprise_backup_utilities %}.
+
+* An authentication token, which is valid for one hour
+* A private key, which is used to generate a new authentication token
diff --git a/data/reusables/gpg/copy-ssh-public-key.md b/data/reusables/gpg/copy-ssh-public-key.md
index 5af211161ab5..d8259e9cc095 100644
--- a/data/reusables/gpg/copy-ssh-public-key.md
+++ b/data/reusables/gpg/copy-ssh-public-key.md
@@ -26,7 +26,7 @@
**Notes:**
* With Windows Subsystem for Linux (WSL), you can use `clip.exe`. Otherwise if `clip` isn't working, you can locate the hidden `.ssh` folder, open the file in your favorite text editor, and copy it to your clipboard.
- * On newer versions of Windows that use the Windows Terminal, or anywhere else that uses the PowerShell command line, you may receive a `ParseError` stating that `The '<' operator is reserved for future use.` In this case, the following alternative `clip` command should be used:
+ * On newer versions of Windows that use the {% data variables.product.prodname_windows_terminal %}, or anywhere else that uses the PowerShell command line, you may receive a `ParseError` stating that `The '<' operator is reserved for future use.` In this case, the following alternative `clip` command should be used:
```shell
$ cat ~/.ssh/id_ed25519.pub | clip
diff --git a/data/reusables/identity-and-permissions/ip-allow-lists-which-resources-are-protected.md b/data/reusables/identity-and-permissions/ip-allow-lists-which-resources-are-protected.md
index 3a5013ae1dc3..43be8d7ef697 100644
--- a/data/reusables/identity-and-permissions/ip-allow-lists-which-resources-are-protected.md
+++ b/data/reusables/identity-and-permissions/ip-allow-lists-which-resources-are-protected.md
@@ -12,4 +12,4 @@ IP allow lists do **not** restrict access to:
* Repositories, including forks, owned by {% data variables.enterprise.prodname_managed_users %}
* Public resources, when accessed anonymously
* {% data variables.product.prodname_copilot %} features that do not require directly fetching private or organizational data from {% data variables.product.prodname_dotcom %}
-* Anonymized URLs for images and videos uploaded to issues or pull requests, such as `https://private-user-images.githubusercontent.com/10001/20002.png?jwt=ABC10001`
+* Anonymized URLs for images and videos uploaded to issues or pull requests, such as `https://private-user-images.githubusercontent.com/10001/20002.png?jwt=ABC10001`, unless you use {% data variables.enterprise.data_residency %}
diff --git a/data/reusables/migrations/large-repositories-require-expert-services-ghecom.md b/data/reusables/migrations/large-repositories-require-expert-services-ghecom.md
new file mode 100644
index 000000000000..e6a18098016d
--- /dev/null
+++ b/data/reusables/migrations/large-repositories-require-expert-services-ghecom.md
@@ -0,0 +1 @@
+For complex repositories larger than around 5 GB, we recommend contacting {% data variables.product.prodname_expert_services %}.
diff --git a/data/reusables/migrations/migration-instructions-for-any-git-repository-to-ghecom.md b/data/reusables/migrations/migration-instructions-for-any-git-repository-to-ghecom.md
new file mode 100644
index 000000000000..7e4f7a94ec25
--- /dev/null
+++ b/data/reusables/migrations/migration-instructions-for-any-git-repository-to-ghecom.md
@@ -0,0 +1 @@
+If an expert-led migration isn't right for you, you can perform a "source and history" migration of the affected repositories instead. For more information, see "[Migrations from any Git repository to {% data variables.enterprise.data_residency_site %}](#any-git-repository-to-ghecom)."
diff --git a/data/reusables/mobile/push-notifications-on-ghes.md b/data/reusables/mobile/push-notifications-on-ghes.md
index c53ecdb10728..576d7e1199d3 100644
--- a/data/reusables/mobile/push-notifications-on-ghes.md
+++ b/data/reusables/mobile/push-notifications-on-ghes.md
@@ -1 +1 @@
-{% data variables.product.prodname_ghe_server %} uses background fetch to support push notifications without sending your information to a third-party service, so you may experience a delay in receiving push notifications.
+{% data variables.product.prodname_ghe_server %} uses background fetch to support push notifications, so you may experience a delay in receiving push notifications.
diff --git a/data/reusables/models/o1-models-preview-note.md b/data/reusables/models/o1-models-preview-note.md
new file mode 100644
index 000000000000..745a1527fed6
--- /dev/null
+++ b/data/reusables/models/o1-models-preview-note.md
@@ -0,0 +1 @@
+> [!NOTE] Access to OpenAI's `o1` models is in {% data variables.release-phases.public_preview %} and subject to change.
diff --git a/data/reusables/organizations/api-insights-learn-about.md b/data/reusables/organizations/api-insights-learn-about.md
new file mode 100644
index 000000000000..50f1d086c1db
--- /dev/null
+++ b/data/reusables/organizations/api-insights-learn-about.md
@@ -0,0 +1 @@
+{% ifversion api-insights %}To learn about viewing an organization's API activity, including which requests exceeded primary rate limits, see "[AUTOTITLE](/organizations/managing-programmatic-access-to-your-organization/viewing-api-insights-in-your-organization)."{% endif %}
diff --git a/data/reusables/pre-release-program/expiring-user-access-tokens.md b/data/reusables/pre-release-program/expiring-user-access-tokens.md
index 97033de6879d..a85fb99b2cb8 100644
--- a/data/reusables/pre-release-program/expiring-user-access-tokens.md
+++ b/data/reusables/pre-release-program/expiring-user-access-tokens.md
@@ -1,5 +1 @@
-{% note %}
-
-**Note:** User access tokens that expire are currently an optional feature and are subject to change. To opt in or out of the token expiration feature, see "[AUTOTITLE](/apps/maintaining-github-apps/activating-optional-features-for-github-apps)." For more information, see "[Expiring user-to-server access tokens for GitHub Apps](https://developer.github.com/changes/2020-04-30-expiring-user-to-server-access-tokens-for-github-apps)."
-
-{% endnote %}
+User access tokens that expire are currently an optional feature and are subject to change. To opt in or out of the token expiration feature, see "[AUTOTITLE](/apps/maintaining-github-apps/activating-optional-features-for-github-apps)." For more information, see "[Expiring user-to-server access tokens for GitHub Apps](https://developer.github.com/changes/2020-04-30-expiring-user-to-server-access-tokens-for-github-apps)."
diff --git a/data/reusables/rai/code-scanning/copilot-workspaces-prs-autofix-note.md b/data/reusables/rai/code-scanning/copilot-workspaces-prs-autofix-note.md
new file mode 100644
index 000000000000..50ca4606a057
--- /dev/null
+++ b/data/reusables/rai/code-scanning/copilot-workspaces-prs-autofix-note.md
@@ -0,0 +1,6 @@
+{% ifversion copilot-hadron %}
+
+> [!NOTE]
+> If you are part of the {% data variables.release-phases.public_preview %} of {% data variables.product.prodname_copilot_workspace_pr_short %}, you can click **Open in Workspace** on a {% data variables.product.prodname_copilot_autofix_short %} suggestion to open a {% data variables.product.prodname_copilot_workspace %} directly on {% data variables.product.github %}. {% data variables.product.prodname_copilot_workspace_pr_short %} allows you to view and edit all {% data variables.product.prodname_copilot_autofix_short %} suggestions and other review suggestions for the pull request, run CI tests to confirm they still pass, and then apply multiple changes in one commit. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request)."
+
+{% endif %}
diff --git a/data/reusables/rai/copilot/copilot-chat-ide-input-processing.md b/data/reusables/rai/copilot/copilot-chat-ide-input-processing-all1.md
similarity index 58%
rename from data/reusables/rai/copilot/copilot-chat-ide-input-processing.md
rename to data/reusables/rai/copilot/copilot-chat-ide-input-processing-all1.md
index 372e062f795d..6dbf694b662b 100644
--- a/data/reusables/rai/copilot/copilot-chat-ide-input-processing.md
+++ b/data/reusables/rai/copilot/copilot-chat-ide-input-processing-all1.md
@@ -1,5 +1,3 @@
### Input processing
The input prompt from the user is pre-processed by the {% data variables.product.prodname_copilot_chat_short %} system, combined with contextual information (for example, the name of the repository the user is currently viewing and the files the user has open), and sent to a large language model. User input can take the form of code snippets or plain language.
-
-The large language model will take the prompt, gather additional context (for example repository data stored on {% data variables.product.prodname_dotcom %}), and provide a response based on the prompt. The system is only intended to respond to coding-related questions.
diff --git a/data/reusables/rai/copilot/copilot-chat-ide-input-processing-all2.md b/data/reusables/rai/copilot/copilot-chat-ide-input-processing-all2.md
new file mode 100644
index 000000000000..c00ec83fd436
--- /dev/null
+++ b/data/reusables/rai/copilot/copilot-chat-ide-input-processing-all2.md
@@ -0,0 +1 @@
+The large language model will take the prompt, gather additional context (for example repository data stored on {% data variables.product.prodname_dotcom %}), and provide a response based on the prompt. The system is only intended to respond to coding-related questions.
diff --git a/data/reusables/rai/copilot/copilot-chat-ide-input-processing-custom-instructions.md b/data/reusables/rai/copilot/copilot-chat-ide-input-processing-custom-instructions.md
new file mode 100644
index 000000000000..9b9c9c538afc
--- /dev/null
+++ b/data/reusables/rai/copilot/copilot-chat-ide-input-processing-custom-instructions.md
@@ -0,0 +1 @@
+Addtional contextual information can be automatically added to chat prompts from an optional `.github/copilot-instructions.md` file that the user can create. This additional information is not displayed in the chat, but if the instructions are sent to the model, the file is listed as a reference in the chat response. The user can disable this feature in the {% data variables.product.prodname_copilot_short %} extension settings.
diff --git a/data/reusables/repositories/navigate-to-insights.md b/data/reusables/repositories/navigate-to-insights.md
new file mode 100644
index 000000000000..7082e71f6bdc
--- /dev/null
+++ b/data/reusables/repositories/navigate-to-insights.md
@@ -0,0 +1 @@
+1. Under your repository name, click the {% octicon "graph" aria-hidden="true" %} **Insights** tab.
diff --git a/data/reusables/rest-api/github-cli-install-and-auth.md b/data/reusables/rest-api/github-cli-install-and-auth.md
index b443f15429b5..468075b2097a 100644
--- a/data/reusables/rest-api/github-cli-install-and-auth.md
+++ b/data/reusables/rest-api/github-cli-install-and-auth.md
@@ -1,20 +1,14 @@
1. Install {% data variables.product.prodname_cli %} on macOS, Windows, or Linux. For more information, see [Installation](https://github.com/cli/cli#installation) in the {% data variables.product.prodname_cli %} repository.
-1. Authenticate with {% data variables.product.company_short %} by running this command from your terminal.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. For example, `octo-inc.ghe.com`.{% endif %}
-
- {%- ifversion fpt or ghec %}
+1. To authenticate to {% data variables.product.github %}, run the following command from your terminal.
```shell
gh auth login
```
- {%- else %}
-
- ```shell
- gh auth login --hostname HOSTNAME
- ```
-
- {%- endif %}
+1. Select where you want to authenticate to:
-1. Follow the on-screen prompts.
+ * If you access {% data variables.product.github %} at {% data variables.product.prodname_dotcom_the_website %}, select **{% data variables.product.prodname_dotcom_the_website %}**.
+ * If you access {% data variables.product.github %} at a different domain, select **Other**, then enter your hostname (for example: `octocorp.ghe.com`).
+1. Follow the rest of the on-screen prompts.
{% data variables.product.prodname_cli %} automatically stores your Git credentials for you when you choose HTTPS as your preferred protocol for Git operations and answer "yes" to the prompt asking if you would like to authenticate to Git with your {% data variables.product.prodname_dotcom %} credentials. This can be useful as it allows you to use Git commands like `git push` and `git pull` without needing to set up a separate credential manager or use SSH.
diff --git a/data/reusables/saml/idp-saml-and-scim-explanation.md b/data/reusables/saml/idp-saml-and-scim-explanation.md
index 84876b521dfc..70d3586b9580 100644
--- a/data/reusables/saml/idp-saml-and-scim-explanation.md
+++ b/data/reusables/saml/idp-saml-and-scim-explanation.md
@@ -1 +1 @@
-When you use an IdP for IAM on {% data variables.product.product_name %}, SAML SSO controls and secures access to enterprise resources like repositories, issues, and pull requests. SCIM automatically creates user accounts and manages access to {% data variables.location.product_location %} when you make changes on your IdP. You can also synchronize teams on {% data variables.product.product_name %} with groups on your IdP.
+When you use {% ifversion ghec %}{% data variables.product.prodname_emus %}{% else %}an IdP for IAM on {% data variables.product.product_name %}{% endif %}, SAML SSO controls and secures access to enterprise resources like repositories, issues, and pull requests. SCIM automatically creates user accounts and manages access to your enterprise when you make changes on your IdP. You can also synchronize teams on {% data variables.product.github %} with groups on your IdP.
diff --git a/data/reusables/security-campaigns/preview-note.md b/data/reusables/security-campaigns/preview-note.md
new file mode 100644
index 000000000000..71a88e804708
--- /dev/null
+++ b/data/reusables/security-campaigns/preview-note.md
@@ -0,0 +1 @@
+> [!NOTE] Security campaigns are currently in {% data variables.release-phases.public_preview %} and subject to change.
diff --git a/data/reusables/security-campaigns/too-many-alerts.md b/data/reusables/security-campaigns/too-many-alerts.md
new file mode 100644
index 000000000000..494ddf8d5570
--- /dev/null
+++ b/data/reusables/security-campaigns/too-many-alerts.md
@@ -0,0 +1 @@
+Alerts will be omitted to until there are fewer than 1000 alerts in fewer than 100 repositories remaining. Alerts in repositories with recent pushes are prioritized for inclusion in the campaign.
diff --git a/data/reusables/user-settings/copilot-settings.md b/data/reusables/user-settings/copilot-settings.md
index 5d9eae91dfba..6af5224a5e21 100644
--- a/data/reusables/user-settings/copilot-settings.md
+++ b/data/reusables/user-settings/copilot-settings.md
@@ -1 +1 @@
-1. In the left sidebar, click **{% octicon "copilot" aria-hidden="true" %} Copilot**.
+1. In the upper-right corner of any page on {% data variables.product.prodname_dotcom %}, click your profile photo, then click **{% octicon "copilot" aria-hidden="true" %} Your Copilot**.
diff --git a/data/ui.yml b/data/ui.yml
index e2607bd191cb..c8eac2205d5c 100644
--- a/data/ui.yml
+++ b/data/ui.yml
@@ -148,6 +148,7 @@ rest_reference:
http_status_code: HTTP response status codes for "{{ RESTOperationTitle }}"
code_sample: Code sample
code_samples: Code samples for "{{ RESTOperationTitle }}"
+ data_residency_notice: If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
preview_notice: Preview notice for "{{ RESTOperationTitle }}"
preview_notices: Preview notices for "{{ RESTOperationTitle }}"
fine_grained_access: Fine-grained access tokens for "{{ RESTOperationTitle }}"
diff --git a/data/variables/copilot.yml b/data/variables/copilot.yml
index f972744913fd..77963d6dc451 100644
--- a/data/variables/copilot.yml
+++ b/data/variables/copilot.yml
@@ -12,7 +12,7 @@ cfb_price_per_month: '$19 USD'
# Copilot billing: price per month for Copilot Enterprise
ce_price_per_month: '$39 USD'
-# Copilot Chat in GitHub.com: maximum number of repos that can be indexed for an org
+# Copilot Chat in GitHub: maximum number of repos that can be indexed for an org
max-chat-indexed-repos: '50'
# Copilot partners: builders who can develop Copilot extensions
@@ -22,3 +22,10 @@ copilot_partner_program: 'Copilot Partner Program'
## Copilot URLs
chat_completions_api: 'https://api.githubcopilot.com/chat/completions'
+
+## Copilot code review - e.g. {% data variables.copilot.copilot_code-review %}
+copilot_code-review: 'GitHub Copilot code review'
+copilot_code-review_short: 'Copilot code review'
+
+## LLM models for Copilot
+copilot_claude_sonnet: 'Claude 3.5 Sonnet'
diff --git a/data/variables/enterprise.yml b/data/variables/enterprise.yml
index 4605b1d94b2c..ed5cc3380aa4 100644
--- a/data/variables/enterprise.yml
+++ b/data/variables/enterprise.yml
@@ -9,6 +9,14 @@ prodname_managed_user: 'managed user account'
prodname_emu_enterprise: 'enterprise with managed users'
prodname_emu_org: 'organization with managed users'
+## Data residency
+data_residency: 'GitHub Enterprise Cloud with data residency'
+data_residency_short: 'data residency'
+data_residency_site: 'GHE.com'
+data_residency_domain: 'SUBDOMAIN.ghe.com'
+data_residency_api: 'api.SUBDOMAIN.ghe.com'
+data_residency_example_domain: 'octocorp.ghe.com'
+
# GitHub Connect (enterprise accounts, other unified features)
## Phrase content so that the uncapitalized unified contributions or unified search variables are not used at the start of a sentence.
prodname_unified_contributions: 'unified contributions'
@@ -16,3 +24,8 @@ prodname_unified_search: 'unified search'
# Entra ID (previously known as Azure AD)
ghes_azure_ad_app_link: '[GitHub Enterprise Server application](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/aad.githubenterpriseserver)'
+
+# GitHub Enterprise not on hosted at GitHub.com
+gh_enterprise: '{% ifversion ghec %}{% data variables.enterprise.data_residency %}{% elsif ghes %}{% data variables.product.prodname_ghe_server %}{% endif %}'
+gh_enterprise_domain: '{% ifversion ghec %}{% data variables.enterprise.data_residency_domain %}{% elsif ghes %}https://GHE_HOSTNAME{% endif %}'
+gh_enterprise_container_registry: '{% ifversion ghes %}https://containers.GHE_HOSTNAME/v2/{% elsif ghec %}https://containers.SUBDOMAIN.ghe.com{% endif %}'
diff --git a/data/variables/explore.yml b/data/variables/explore.yml
index 1ef5ff7902c4..5a69241f7ff1 100644
--- a/data/variables/explore.yml
+++ b/data/variables/explore.yml
@@ -3,6 +3,3 @@ explore_github: >-
your_stars_page: >-
{% ifversion fpt or ghec %}[stars page](https://github.com/stars){% else %}stars page (`https://[hostname]/stars`){% endif %}
-
-trending_page: >-
- {% ifversion fpt or ghec %}[Trending page](https://github.com/trending){% else %}Trending page (`https://[hostname]/trending`){% endif %}
diff --git a/data/variables/product.yml b/data/variables/product.yml
index bc2a3c00e1bf..f37ed3458c53 100644
--- a/data/variables/product.yml
+++ b/data/variables/product.yml
@@ -264,7 +264,7 @@ prodname_dependabot_updates: 'Dependabot updates'
prodname_archive: 'GitHub Archive Program'
prodname_arctic_vault: 'Arctic Code Vault'
-# GitHub Copilot
+# GitHub Copilot (product)
prodname_copilot: 'GitHub Copilot'
prodname_copilot_short: 'Copilot'
prodname_copilot_for_business: 'GitHub Copilot Business'
@@ -275,8 +275,8 @@ prodname_copilot_enterprise: 'GitHub Copilot Enterprise'
prodname_copilot_enterprise_short: 'Copilot Enterprise'
prodname_copilot_chat: 'GitHub Copilot Chat'
prodname_copilot_chat_short: 'Copilot Chat'
-prodname_copilot_chat_dotcom: 'GitHub Copilot Chat in GitHub.com'
-prodname_copilot_chat_dotcom_short: 'Copilot Chat in GitHub.com'
+prodname_copilot_chat_dotcom: 'GitHub Copilot Chat in GitHub'
+prodname_copilot_chat_dotcom_short: 'Copilot Chat in GitHub'
prodname_copilot_mobile: 'GitHub Copilot Chat in GitHub Mobile'
prodname_copilot_mobile_short: 'Copilot Chat in GitHub Mobile'
prodname_copilot_extensions: 'GitHub Copilot Extensions'
@@ -297,8 +297,17 @@ prodname_copilot_customization: 'Copilot Customization'
prodname_copilot_in_support: 'Copilot in GitHub Support'
prodname_copilot_sku_isolation: 'Copilot subscription-based network routing'
prodname_copilot_autocomplete_pr: 'Copilot text completion'
+
+# Copilot branded GHAS features
prodname_copilot_autofix: 'GitHub Copilot Autofix'
prodname_copilot_autofix_short: 'Copilot Autofix'
+prodname_copilot_workspace_pr: 'GitHub Copilot Workspace for pull requests'
+prodname_copilot_workspace_pr_short: 'Copilot Workspace for PRs'
+prodname_copilot_workspace: 'Copilot Workspace'
+prodname_copilot_workspace_short: 'Workspace'
+
+# Windows
+prodname_windows_terminal: 'Windows Terminal'
# Command Palette
prodname_command_palette: 'GitHub Command Palette'
diff --git a/src/fixtures/fixtures/data/ui.yml b/src/fixtures/fixtures/data/ui.yml
index e2607bd191cb..c8eac2205d5c 100644
--- a/src/fixtures/fixtures/data/ui.yml
+++ b/src/fixtures/fixtures/data/ui.yml
@@ -148,6 +148,7 @@ rest_reference:
http_status_code: HTTP response status codes for "{{ RESTOperationTitle }}"
code_sample: Code sample
code_samples: Code samples for "{{ RESTOperationTitle }}"
+ data_residency_notice: If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
preview_notice: Preview notice for "{{ RESTOperationTitle }}"
preview_notices: Preview notices for "{{ RESTOperationTitle }}"
fine_grained_access: Fine-grained access tokens for "{{ RESTOperationTitle }}"
diff --git a/src/fixtures/fixtures/versionless-redirects.txt b/src/fixtures/fixtures/versionless-redirects.txt
index 82a0853b6364..9504259b7f3e 100644
--- a/src/fixtures/fixtures/versionless-redirects.txt
+++ b/src/fixtures/fixtures/versionless-redirects.txt
@@ -451,7 +451,7 @@
- /articles/changing-the-visibility-of-your-organizations-dependency-insights
- /github/setting-up-and-managing-organizations-and-teams/changing-the-visibility-of-your-organizations-dependency-insights
-/enterprise-server@latest/search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment
+/enterprise-server@latest/search-github/getting-started-with-searching-on-github/enabling-repository-search-across-environments
- /search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment
- /articles/enabling-private-githubcom-repository-search-in-your-github-enterprise-account
- /articles/enabling-private-github-com-repository-search-in-your-github-enterprise-server-account
diff --git a/src/redirects/lib/static/redirect-exceptions.txt b/src/redirects/lib/static/redirect-exceptions.txt
index 5ad96a2d63dd..701b9742626a 100644
--- a/src/redirects/lib/static/redirect-exceptions.txt
+++ b/src/redirects/lib/static/redirect-exceptions.txt
@@ -14,7 +14,8 @@
/rest/using-the-rest-api/getting-started-with-the-rest-api
- /rest/overview/api-previews
-/enterprise-server@latest/search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment
+/enterprise-server@latest/search-github/getting-started-with-searching-on-github/enabling-repository-search-across-environments
+- /enterprise-server@latest/search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment
- /enterprise-cloud@latest/search-github/getting-started-with-searching-on-github/enabling-githubcom-repository-search-from-your-private-enterprise-environment
/enterprise-cloud@latest/organizations/managing-membership-in-your-organization/exporting-member-information-for-your-organization
diff --git a/src/rest/components/RestCodeSamples.tsx b/src/rest/components/RestCodeSamples.tsx
index 1a3bfe8d16fe..46ea76f516bf 100644
--- a/src/rest/components/RestCodeSamples.tsx
+++ b/src/rest/components/RestCodeSamples.tsx
@@ -1,6 +1,6 @@
import { useState, useEffect, useRef, FormEvent } from 'react'
import { FormControl, IconButton, Select, TabNav } from '@primer/react'
-import { CheckIcon, CopyIcon } from '@primer/octicons-react'
+import { CheckIcon, CopyIcon, InfoIcon } from '@primer/octicons-react'
import { announce } from '@primer/live-region-element'
import Cookies from 'src/frame/components/lib/cookies'
import cx from 'classnames'
@@ -52,7 +52,7 @@ function highlightElement(element: HTMLElement) {
export function RestCodeSamples({ operation, slug, heading }: Props) {
const { t } = useTranslation(['rest_reference'])
- const { isEnterpriseServer } = useVersion()
+ const { isEnterpriseServer, isEnterpriseCloud } = useVersion()
// Refs to track the request example, response example
// and the first render
@@ -233,6 +233,16 @@ export function RestCodeSamples({ operation, slug, heading }: Props) {