`, and
+ // the pull request it names is the one this actor just enqueued, so the number and the actor correspond.
+ const ref = context.payload.merge_group?.head_ref ?? context.ref
+ core.info(`Working out which pull request this merge group is for, from "${ref}"...`)
+ const number = Number(ref.match(/\/pr-(\d+)-[0-9a-f]+$/)?.[1])
+
+ if (!number) {
+ core.warning(`Worked it out: could not find a pull request number in "${ref}". Skipping the comment.`)
+ } else {
+ core.info(`Worked it out: this merge group is for #${number}.`)
+
+ // Only comment once. Someone who tries to enqueue again already has the explanation, and repeating it
+ // turns a useful comment into noise.
+ core.info(`Reading the existing comments on #${number}...`)
+ const comments = await github.paginate(github.rest.issues.listComments, {
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: number,
+ per_page: 100,
+ })
+ core.info(`Read ${comments.length} comment(s) on #${number}.`)
+
+ if (comments.some((comment) => comment.body?.includes(MARKER))) {
+ core.info(`#${number} already has this explanation, so not commenting again.`)
+ } else {
+ core.info(`Commenting on #${number} to explain...`)
+ await github.rest.issues.createComment({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: number,
+ body: [
+ // The marker has to be on its own line. GitHub parses ``, so anything sharing that
+ // line renders as literal text: no code spans, no links.
+ MARKER,
+ [
+ `👋 Hi @${actor}, this pull request was removed from the merge queue.`,
+ 'Only the GitHub Technical Content team merges to `main` in this repository.',
+ 'Once this is reviewed and ready, ask in',
+ `[#docs-content](https://github.slack.com/archives/${CONTENT_SLACK_CHANNEL})`,
+ 'and someone on the team can merge it for you.',
+ ].join(' '),
+ ].join('\n'),
+ })
+ core.info(`Commented on #${number}.`)
+ }
+ }
+
+ core.setFailed(
+ `Only ${TEAM} merges to main in this repository. ${reason} ` +
+ 'Ask in #docs-content and someone on the team can merge this for you.',
+ )
diff --git a/content/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md b/content/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md
index f06239e50214..0cedd6059df9 100644
--- a/content/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md
+++ b/content/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md
@@ -167,7 +167,7 @@ Before adding a new SSH key to the ssh-agent to manage your keys, you should hav
> ### Troubleshooting SSH agent conflicts in Windows
>
-> In Windows environments, the native Windows OpenSSH implementation and the one included with Git for Windows (based on MSYS2/Bash) can coexist.
+> In Windows environments, the native Windows OpenSSH implementation and the one included with [Git for Windows](https://gitforwindows.org/) (based on MSYS2/Bash) can coexist.
>
> If you configure and save your passphrases in the Windows agent using PowerShell, Git may still prompt you for your passphrase during operations like `git push`. This can happen when Git for Windows uses its bundled `ssh.exe` (from MSYS2) instead of the Windows system OpenSSH client, and therefore can't talk to the Windows `ssh-agent` service.
>
@@ -176,6 +176,14 @@ Before adding a new SSH key to the ssh-agent to manage your keys, you should hav
> ```powershell
> git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
> ```
+>
+> You may need to specify which `ssh-keygen` binary Git should use to avoid conflicts with the binary bundled with Git for Windows. To define which binary is used, run the following command:
+>
+> ```powershell
+> git config --global gpg.ssh.program "C:/Windows/System32/OpenSSH/ssh-keygen.exe"
+> ```
+>
+> Alternatively, you can reinstall Git for Windows and select the **Use external OpenSSH** option during the installation process.
{% endwindows %}
diff --git a/content/copilot/how-tos/copilot-integrations/index.md b/content/copilot/how-tos/copilot-integrations/index.md
new file mode 100644
index 000000000000..78aace864282
--- /dev/null
+++ b/content/copilot/how-tos/copilot-integrations/index.md
@@ -0,0 +1,14 @@
+---
+title: GitHub Copilot integrations
+shortTitle: Copilot integrations
+intro: Learn how to use {% data variables.copilot.copilot_cloud_agent %} from the chat and project management tools where you already work.
+versions:
+ feature: copilot
+children:
+ - /integrate-cloud-agent-with-slack
+ - /integrate-cloud-agent-with-teams
+ - /integrate-cloud-agent-with-jira
+ - /integrate-cloud-agent-with-linear
+ - /integrate-cloud-agent-with-azure-boards
+contentType: how-tos
+---
diff --git a/content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-azure-boards.md b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-azure-boards.md
similarity index 98%
rename from content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-azure-boards.md
rename to content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-azure-boards.md
index e88d57420a62..a34bb684e624 100644
--- a/content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-azure-boards.md
+++ b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-azure-boards.md
@@ -10,6 +10,7 @@ contentType: how-tos
category:
- Integrate Copilot with your tools
redirect_from:
+ - /copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-azure-boards
- /copilot/how-tos/use-copilot-agents/coding-agent/integrate-coding-agent-with-azure-boards
---
diff --git a/content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-jira.md b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-jira.md
similarity index 99%
rename from content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-jira.md
rename to content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-jira.md
index 93c862da02b2..8c3b7247aabe 100644
--- a/content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-jira.md
+++ b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-jira.md
@@ -7,6 +7,7 @@ product: '{% data reusables.copilot.plans.permission-paid-plans-cfi %}'
versions:
feature: copilot
redirect_from:
+ - /copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-jira
- /copilot/how-tos/use-copilot-agents/coding-agent/integrate-coding-agent-with-jira
- /early-access/copilot/integrate-coding-agent-with-jira
contentType: how-tos
diff --git a/content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-linear.md b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-linear.md
similarity index 98%
rename from content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-linear.md
rename to content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-linear.md
index f3b0f1b9fc78..a44935853f95 100644
--- a/content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-linear.md
+++ b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-linear.md
@@ -10,6 +10,7 @@ contentType: how-tos
category:
- Integrate Copilot with your tools
redirect_from:
+ - /copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-linear
- /copilot/how-tos/use-copilot-agents/coding-agent/integrate-coding-agent-with-linear
---
diff --git a/content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-slack.md b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-slack.md
similarity index 99%
rename from content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-slack.md
rename to content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-slack.md
index 65d9d06a05d2..125ac8edc0f7 100644
--- a/content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-slack.md
+++ b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-slack.md
@@ -10,6 +10,7 @@ contentType: how-tos
category:
- Integrate Copilot with your tools
redirect_from:
+ - /copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-slack
- /copilot/how-tos/use-copilot-agents/coding-agent/integrate-coding-agent-with-slack
---
diff --git a/content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-teams.md b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-teams.md
similarity index 98%
rename from content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-teams.md
rename to content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-teams.md
index 45674bcabf36..79f98ef085bc 100644
--- a/content/copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-teams.md
+++ b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-teams.md
@@ -10,6 +10,7 @@ contentType: how-tos
category:
- Integrate Copilot with your tools
redirect_from:
+ - /copilot/how-tos/use-copilot-agents/cloud-agent/integrate-cloud-agent-with-teams
- /copilot/how-tos/use-copilot-agents/coding-agent/integrate-coding-agent-with-teams
---
diff --git a/content/copilot/how-tos/index.md b/content/copilot/how-tos/index.md
index 1306151effec..715b41da8b1d 100644
--- a/content/copilot/how-tos/index.md
+++ b/content/copilot/how-tos/index.md
@@ -15,6 +15,7 @@ children:
- /copilot-sdk
- /github-agentic-workflows
- /use-copilot-agents
+ - /copilot-integrations
- /use-ai-models
- /provide-context
- /configure-custom-instructions-in-your-ide
diff --git a/content/copilot/how-tos/use-copilot-agents/cloud-agent/index.md b/content/copilot/how-tos/use-copilot-agents/cloud-agent/index.md
index e7cf6696d58c..fcee18ceb244 100644
--- a/content/copilot/how-tos/use-copilot-agents/cloud-agent/index.md
+++ b/content/copilot/how-tos/use-copilot-agents/cloud-agent/index.md
@@ -19,11 +19,6 @@ children:
- /use-cloud-agent-via-the-api
- /use-cloud-agent-from-cli
- /use-cloud-agent-with-mcp
- - /integrate-cloud-agent-with-jira
- - /integrate-cloud-agent-with-slack
- - /integrate-cloud-agent-with-teams
- - /integrate-cloud-agent-with-linear
- - /integrate-cloud-agent-with-azure-boards
- /use-cloud-agent-from-raycast
- /troubleshoot-cloud-agent
redirect_from:
diff --git a/src/graphql/data/fpt/changelog.json b/src/graphql/data/fpt/changelog.json
index 5a316bb93a98..c84b778cce8d 100644
--- a/src/graphql/data/fpt/changelog.json
+++ b/src/graphql/data/fpt/changelog.json
@@ -1,4 +1,17 @@
[
+ {
+ "schemaChanges": [
+ {
+ "title": "The GraphQL schema includes these changes:",
+ "changes": [
+ "Enum value 'SECURITY_KEYwas removed from enumProofOfPresenceRequirement'
"
+ ]
+ }
+ ],
+ "previewChanges": [],
+ "upcomingChanges": [],
+ "date": "2026-08-17"
+ },
{
"schemaChanges": [
{
diff --git a/src/graphql/data/fpt/schema-enterprise-admin.json b/src/graphql/data/fpt/schema-enterprise-admin.json
index 919728cdcb7c..94793fd5ef18 100644
--- a/src/graphql/data/fpt/schema-enterprise-admin.json
+++ b/src/graphql/data/fpt/schema-enterprise-admin.json
@@ -11825,10 +11825,6 @@
{
"name": "REAUTH",
"description": "Members must complete a fresh re-authentication against the enterprise identity provider.
"
- },
- {
- "name": "SECURITY_KEY",
- "description": "Members must satisfy a phishing-resistant security key re-authentication (Microsoft Entra only).
"
}
],
"category": "enterprise-admin"
diff --git a/src/graphql/data/fpt/schema.docs.graphql b/src/graphql/data/fpt/schema.docs.graphql
index af988e028264..a984c46c8e0b 100644
--- a/src/graphql/data/fpt/schema.docs.graphql
+++ b/src/graphql/data/fpt/schema.docs.graphql
@@ -44014,11 +44014,6 @@ enum ProofOfPresenceRequirement @docsCategory(name: "enterprise-admin") {
Members must complete a fresh re-authentication against the enterprise identity provider.
"""
REAUTH
-
- """
- Members must satisfy a phishing-resistant security key re-authentication (Microsoft Entra only).
- """
- SECURITY_KEY
}
"""
diff --git a/src/graphql/data/ghec/schema-enterprise-admin.json b/src/graphql/data/ghec/schema-enterprise-admin.json
index 919728cdcb7c..94793fd5ef18 100644
--- a/src/graphql/data/ghec/schema-enterprise-admin.json
+++ b/src/graphql/data/ghec/schema-enterprise-admin.json
@@ -11825,10 +11825,6 @@
{
"name": "REAUTH",
"description": "Members must complete a fresh re-authentication against the enterprise identity provider.
"
- },
- {
- "name": "SECURITY_KEY",
- "description": "Members must satisfy a phishing-resistant security key re-authentication (Microsoft Entra only).
"
}
],
"category": "enterprise-admin"
diff --git a/src/graphql/data/ghec/schema.docs.graphql b/src/graphql/data/ghec/schema.docs.graphql
index af988e028264..a984c46c8e0b 100644
--- a/src/graphql/data/ghec/schema.docs.graphql
+++ b/src/graphql/data/ghec/schema.docs.graphql
@@ -44014,11 +44014,6 @@ enum ProofOfPresenceRequirement @docsCategory(name: "enterprise-admin") {
Members must complete a fresh re-authentication against the enterprise identity provider.
"""
REAUTH
-
- """
- Members must satisfy a phishing-resistant security key re-authentication (Microsoft Entra only).
- """
- SECURITY_KEY
}
"""