From d0f05a9b6baa70456df4928e1759c83b094f2368 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Thu, 2 Oct 2025 05:19:39 -0700 Subject: [PATCH 1/8] Update docs changelog (for PR #57629) (#57712) Co-authored-by: github-actions[bot] Co-authored-by: hubwriter --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad4472a3574d..c2c4b37767f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,16 @@ We’ve updated the Spark documentation to support the launch for Copilot Enterp
+**26 September 2025** + +To coincide with additional functionality for Copilot coding agent being added to the GitHub Mobile app, we've updated the following articles: + +* [Using GitHub Copilot to work on an issue](https://docs.github.com/copilot/how-tos/use-copilot-agents/coding-agent/assign-copilot-to-an-issue#assigning-an-issue-to-copilot-on-github-mobile) +* [Tracking GitHub Copilot's sessions](https://docs.github.com/copilot/how-tos/use-copilot-agents/coding-agent/track-copilot-sessions#tracking-sessions-from-github-mobile) +* [Asking GitHub Copilot to create a pull request](https://docs.github.com/copilot/how-tos/use-copilot-agents/coding-agent/create-a-pr#asking-copilot-to-create-a-pull-request-from-github-mobile) + +
+ **25 September 2025** GitHub Copilot CLI has been released as a public preview. It allows you to use Copilot directly from your terminal. You can use it to answer questions, write and debug code, and interact with GitHub.com. For example, you can ask Copilot to make some changes to a project and create a pull request. From 65e0b21a97e095347ff030b709e4f41d2bc0d921 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Thu, 2 Oct 2025 06:22:05 -0700 Subject: [PATCH 2/8] Update docs changelog (for PR #57729) (#57737) Co-authored-by: github-actions[bot] Co-authored-by: hubwriter --- CHANGELOG.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2c4b37767f2..0a837e269aef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,28 @@ We’ve updated the Spark documentation to support the launch for Copilot Enterp
+**29 September 2025** + +Claude Sonnet 4.5 has been released as a Public Preview. At the time of launch, it will be available on the following platforms: + +- **Copilot Chat** + - Released for GitHub.com, VS Code, GitHub Mobile + - With: Copilot Pro, Pro+, Business, and Enterprise +- **Copilot Coding Agent** + - With: Copilot Pro, and Copilot Pro+ +- **Copilot CLI** + - With: Copilot Pro, Pro+, Business, and Enterprise + +The following articles have been updated: + +- [About GitHub Copilot coding agent](https://docs.github.com/en/copilot/concepts/agents/coding-agent/about-coding-agent) +- [Supported AI models in GitHub Copilot](https://docs.github.com/en/copilot/reference/ai-models/supported-models) +- [Hosting of models for GitHub Copilot Chat](https://docs.github.com/en/copilot/reference/ai-models/model-hosting) +- [AI model comparison](https://docs.github.com/en/copilot/reference/ai-models/model-comparison) +- [About GitHub Copilot CLI](https://docs.github.com/en/copilot/concepts/agents/about-copilot-cli) + +
+ **26 September 2025** To coincide with additional functionality for Copilot coding agent being added to the GitHub Mobile app, we've updated the following articles: From 47a8b8c7cdabaf4e03dac36c7f07e34f04c78aad Mon Sep 17 00:00:00 2001 From: Laura Coursen Date: Thu, 2 Oct 2025 09:11:15 -0500 Subject: [PATCH 3/8] Early access companion PR (#57776) From bf43f58def327f538602e08937896acb835481d8 Mon Sep 17 00:00:00 2001 From: Felicity Chapman Date: Thu, 2 Oct 2025 15:28:09 +0100 Subject: [PATCH 4/8] Make article visible to GHES users (#57616) --- .../concepts/enterprise-billing/visual-studio-subs.md | 1 + .../how-tos/set-up-payment/set-up-vs-subscription.md | 7 ++++--- content/billing/reference/roles-for-visual-studio.md | 7 ++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/content/billing/concepts/enterprise-billing/visual-studio-subs.md b/content/billing/concepts/enterprise-billing/visual-studio-subs.md index 553c5ff9459f..097e6847c6d9 100644 --- a/content/billing/concepts/enterprise-billing/visual-studio-subs.md +++ b/content/billing/concepts/enterprise-billing/visual-studio-subs.md @@ -14,6 +14,7 @@ redirect_from: - /billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/about-visual-studio-subscriptions-with-github-enterprise versions: ghec: '*' + ghes: '*' topics: - Billing - Enterprise diff --git a/content/billing/how-tos/set-up-payment/set-up-vs-subscription.md b/content/billing/how-tos/set-up-payment/set-up-vs-subscription.md index d86a6c5adae5..6f5cd68e2658 100644 --- a/content/billing/how-tos/set-up-payment/set-up-vs-subscription.md +++ b/content/billing/how-tos/set-up-payment/set-up-vs-subscription.md @@ -3,6 +3,7 @@ title: Setting up Visual Studio subscriptions with GitHub Enterprise intro: 'Your team''s subscription to {% data variables.product.prodname_vs %} can also provide access to {% data variables.product.prodname_enterprise %}.' versions: ghec: '*' + ghes: '*' redirect_from: - /billing/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/setting-up-visual-studio-subscriptions-with-github-enterprise - /billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/setting-up-visual-studio-subscriptions-with-github-enterprise @@ -36,7 +37,7 @@ To set up {% data variables.visual_studio.prodname_vss_ghe %}, members of your t One person may be able to complete the tasks because the person has all of the roles, but you may need to coordinate the tasks with multiple people. For more information, see [AUTOTITLE](/billing/reference/roles-for-visual-studio). -1. A {% data variables.product.github %} enterprise owner must create at least one organization in your enterprise. For more information, see [AUTOTITLE](/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise). +1. A {% data variables.product.github %} enterprise owner must create at least one organization in your enterprise. For more information, see [AUTOTITLE](/enterprise-cloud@latest/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise){% ifversion ghes %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %} 1. The {% data variables.product.prodname_vs %} subscription admin must assign a license for {% data variables.product.prodname_vs %} to a subscriber in {% data variables.visual_studio.prodname_vss_admin_portal_with_url %}. For more information, see [Overview of the {% data variables.product.prodname_vs %} Subscriptions Administrator Portal](https://docs.microsoft.com/en-us/visualstudio/subscriptions/using-admin-portal) and [Assign {% data variables.product.prodname_vs %} Licenses in the {% data variables.product.prodname_vs %} Subscriptions Administration Portal](https://docs.microsoft.com/en-us/visualstudio/subscriptions/assign-license) in Microsoft Docs. @@ -44,7 +45,7 @@ One person may be able to complete the tasks because the person has all of the r 1. If the {% data variables.product.prodname_vs %} subscription admin has not disabled email notifications, the subscriber will receive two confirmation emails. For more information, see [{% data variables.product.prodname_vs %} subscriptions with {% data variables.product.prodname_enterprise %}](https://docs.microsoft.com/en-us/visualstudio/subscriptions/access-github#what-is-the-visual-studio-subscription-with-github-enterprise-setup-process) in Microsoft Docs. -1. A {% data variables.product.github %} organization owner must invite the subscriber to the organization created in step 1. The subscriber can accept the invitation with an existing personal account or create a new account. After the subscriber joins the organization, the subscriber becomes an enterprise member. For more information, see [AUTOTITLE](/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization). +1. A {% data variables.product.github %} organization owner must invite the subscriber to the organization created in step 1. The subscriber can accept the invitation with an existing personal account or create a new account. After the subscriber joins the organization, the subscriber becomes an enterprise member. For more information, see [AUTOTITLE](/enterprise-cloud@latest/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization){% ifversion ghes %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %} > [!TIP] > * While not required, we recommend that the organization owner sends an invitation to the same email address used for the subscriber's User Primary Name (UPN). When the email address on {% data variables.product.github %} matches the subscriber's UPN, you can ensure that another enterprise does not claim the subscriber's license. @@ -88,4 +89,4 @@ You can also see pending {% data variables.product.prodname_enterprise %} invita ## Further reading -* [AUTOTITLE](/get-started/onboarding/getting-started-with-github-enterprise-cloud) +* [AUTOTITLE](/enterprise-cloud@latest/get-started/onboarding/getting-started-with-github-enterprise-cloud){% ifversion ghes %} in the {% data variables.product.prodname_ghe_cloud %} documentation{% else %}{% endif %} diff --git a/content/billing/reference/roles-for-visual-studio.md b/content/billing/reference/roles-for-visual-studio.md index febd98a80665..98b0f5a11a31 100644 --- a/content/billing/reference/roles-for-visual-studio.md +++ b/content/billing/reference/roles-for-visual-studio.md @@ -4,6 +4,7 @@ shortTitle: Roles for Visual Studio intro: 'Learn about the different roles required to set up {% data variables.visual_studio.prodname_vss_ghe %}.' versions: ghec: '*' + ghes: '*' topics: - Billing - Enterprise @@ -26,6 +27,6 @@ contentType: reference | Role | Description | More information | | :- | :- | :- | -| **Enterprise owner** | Person who has a personal account that's an administrator of an enterprise on {% data variables.location.product_location %} | [AUTOTITLE](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owner) | -| **Organization owner** | Person who has a personal account that's an owner of an organization in your team's enterprise on {% data variables.location.product_location %} | [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#organization-owners) | -| **Enterprise member** | Person who has a personal account that's a member of an enterprise on {% data variables.location.product_location %} | [AUTOTITLE](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-members) | +| **Enterprise owner** | Person who has a personal account that's an administrator of an enterprise on {% data variables.location.product_location %} | [AUTOTITLE](/enterprise-cloud@latest/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owner){% ifversion ghes %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %} | +| **Organization owner** | Person who has a personal account that's an owner of an organization in your team's enterprise on {% data variables.location.product_location %} | [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#organization-owners){% ifversion ghes %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %} | +| **Enterprise member** | Person who has a personal account that's a member of an enterprise on {% data variables.location.product_location %} | [AUTOTITLE](/enterprise-cloud@latest/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-members) | From 017d833d96c214e9a64cece58a5588b7dc3dda2c Mon Sep 17 00:00:00 2001 From: Kevin Heis Date: Thu, 2 Oct 2025 08:57:00 -0700 Subject: [PATCH 5/8] Add UTM parameter preservation for Copilot plans page (#57674) --- src/frame/components/UtmPreserver.tsx | 106 +++++++++++++++++++ src/frame/components/article/ArticlePage.tsx | 2 + 2 files changed, 108 insertions(+) create mode 100644 src/frame/components/UtmPreserver.tsx diff --git a/src/frame/components/UtmPreserver.tsx b/src/frame/components/UtmPreserver.tsx new file mode 100644 index 000000000000..34e79445e7e1 --- /dev/null +++ b/src/frame/components/UtmPreserver.tsx @@ -0,0 +1,106 @@ +import { useEffect } from 'react' +import { useRouter } from 'next/router' + +type UtmPreserverProps = { + // CSS selector for links that should preserve UTM parameters + linkSelector?: string + // Specific page paths where this component should be active + activePaths?: string[] +} + +export const UtmPreserver = ({ + linkSelector = 'a[href*="github.com/copilot"], a[href*="github.com/github-copilot"]', + activePaths = ['/copilot/get-started/plans'], +}: UtmPreserverProps) => { + const router = useRouter() + + useEffect(() => { + // Check if current page should have UTM preservation + const shouldPreserveUtm = activePaths.some((path) => router.asPath.includes(path)) + if (!shouldPreserveUtm) return + + // Extract UTM parameters from current URL + const getUtmParams = (): URLSearchParams => { + const urlParams = new URLSearchParams(window.location.search) + const utmParams = new URLSearchParams() + + for (const [key, value] of urlParams) { + if (key.startsWith('utm_')) { + utmParams.set(key, value) + } + } + + return utmParams + } + + // Add UTM parameters to a URL + const addUtmParamsToUrl = (url: string, utmParams: URLSearchParams): string => { + try { + const urlObj = new URL(url) + + for (const [key, value] of utmParams) { + urlObj.searchParams.set(key, value) + } + + return urlObj.toString() + } catch { + // If URL parsing fails, return original URL + return url + } + } + + // Apply UTM parameters to relevant links + const applyUtmToLinks = (): void => { + const utmParams = getUtmParams() + + if (utmParams.toString() === '') return + + const links = document.querySelectorAll(linkSelector) + + links.forEach((link) => { + if (link.href && (link.href.startsWith('http://') || link.href.startsWith('https://'))) { + link.href = addUtmParamsToUrl(link.href, utmParams) + } + }) + } + + // Handle click events for dynamic link modification + const handleLinkClick = (event: Event): void => { + const link = (event.target as Element)?.closest('a') as HTMLAnchorElement + if (!link) return + + // Check if this link matches our selector + if (!link.matches(linkSelector)) return + + const utmParams = getUtmParams() + if (utmParams.toString() === '') return + + if (link.href && (link.href.startsWith('http://') || link.href.startsWith('https://'))) { + link.href = addUtmParamsToUrl(link.href, utmParams) + } + } + + // Apply UTM parameters immediately to existing links + applyUtmToLinks() + + // Also handle clicks for any dynamically added links + document.addEventListener('click', handleLinkClick, true) + + // Re-apply when the route changes (for single-page navigation) + const handleRouteChange = () => { + // Small delay to ensure DOM has updated + setTimeout(applyUtmToLinks, 100) + } + + router.events.on('routeChangeComplete', handleRouteChange) + + // Cleanup + return () => { + document.removeEventListener('click', handleLinkClick, true) + router.events.off('routeChangeComplete', handleRouteChange) + } + }, [router.asPath, router.events, linkSelector, activePaths]) + + // This component doesn't render anything + return null +} diff --git a/src/frame/components/article/ArticlePage.tsx b/src/frame/components/article/ArticlePage.tsx index 882edee0003d..89ef49ed8842 100644 --- a/src/frame/components/article/ArticlePage.tsx +++ b/src/frame/components/article/ArticlePage.tsx @@ -21,6 +21,7 @@ import { Breadcrumbs } from '@/frame/components/page-header/Breadcrumbs' import { Link } from '@/frame/components/Link' import { useTranslation } from '@/languages/components/useTranslation' import { LinkPreviewPopover } from '@/links/components/LinkPreviewPopover' +import { UtmPreserver } from '@/frame/components/UtmPreserver' const ClientSideRefresh = dynamic(() => import('@/frame/components/ClientSideRefresh'), { ssr: false, @@ -101,6 +102,7 @@ export const ArticlePage = () => { return ( + {isDev && } {router.pathname.includes('/rest/') && } {currentLayout === 'inline' ? ( From cbf0692253c5f4a2a8cfc998f68382687cafe52f Mon Sep 17 00:00:00 2001 From: Vmla <166641453+VimalaMoger@users.noreply.github.com> Date: Thu, 2 Oct 2025 11:14:36 -0500 Subject: [PATCH 6/8] copy-clone-url.md: Incorrectly added "paste" icon instead of the "copy" icon (Primer/octicons) (#40579) Co-authored-by: Sharra-writes --- data/reusables/repositories/copy-clone-url.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/reusables/repositories/copy-clone-url.md b/data/reusables/repositories/copy-clone-url.md index 35ef5b7ac264..501ecf41abc7 100644 --- a/data/reusables/repositories/copy-clone-url.md +++ b/data/reusables/repositories/copy-clone-url.md @@ -4,8 +4,8 @@ 1. Copy the URL for the repository. - * To clone the repository using HTTPS, under "HTTPS", click {% octicon "clippy" aria-label="Copy to clipboard" %}. - * To clone the repository using an SSH key, including a certificate issued by your organization's SSH certificate authority, click **SSH**, then click {% octicon "clippy" aria-label="Copy to clipboard" %}. + * To clone the repository using HTTPS, under "HTTPS", click {% octicon "copy" aria-label="Copy to clipboard" %}. + * To clone the repository using an SSH key, including a certificate issued by your organization's SSH certificate authority, click **SSH**, then click {% octicon "copy" aria-label="Copy to clipboard" %}. * To clone a repository using {% data variables.product.prodname_cli %}, click **{% data variables.product.prodname_cli %}**, then click {% octicon "copy" aria-label="Copy to clipboard" %}. ![Screenshot of the "Code" dropdown menu. To the right of the HTTPS URL for the repository, a copy icon is outlined in dark orange.](/assets/images/help/repository/https-url-clone-cli.png) From e9e2157b992048a5bf271ad12fae64562fd89e19 Mon Sep 17 00:00:00 2001 From: Felicity Chapman Date: Thu, 2 Oct 2025 17:45:40 +0100 Subject: [PATCH 7/8] Modify PR body for CodeQL query table updates (#57774) --- .github/workflows/generate-code-scanning-query-lists.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/generate-code-scanning-query-lists.yml b/.github/workflows/generate-code-scanning-query-lists.yml index 200b5b3527db..a3e261803b87 100644 --- a/.github/workflows/generate-code-scanning-query-lists.yml +++ b/.github/workflows/generate-code-scanning-query-lists.yml @@ -153,8 +153,10 @@ jobs: --title "Update CodeQL query tables" \ --repo github/docs-internal \ --label "codeql-query-tables,skip FR board,ready-for-doc-review,workflow-generated" \ - --body '👋 humans. This PR updates the **CodeQL query table reusables** with the latest changes in preparation for the next **CodeQL CLI** release. + --body '👋 humans. This PR updates the **CodeQL query table reusables** with the latest changes in preparation for the next **CodeQL CLI** release. (Synced from codeql@${{ steps.codeql.outputs.OPENAPI_COMMIT_SHA }}) - No action is required from the first responder for the Docs content team. This PR will be reviewed and merged by the Code scanning and GHAS focus team as part of the next release of CodeQL CLI. (Synced from codeql@${{ steps.codeql.outputs.OPENAPI_COMMIT_SHA }}) - If CI does not pass or other problems arise, contact #docs-engineering on slack.' + No action is required from the first responder for the Docs content team. This PR is automatically added to the Docs content review board. Any writer can review this by checking that the PR looks sensible. If CI does not pass or other problems arise, contact #docs-engineering on slack. + + + When the DRI for the CodeQL CLI release is ready to publish, they will ask us to merge this PR in #docs-content.' From 95612ba02f1462473b9d905a8a753e760fff6648 Mon Sep 17 00:00:00 2001 From: Clarence Bakosi Date: Thu, 2 Oct 2025 18:50:13 +0100 Subject: [PATCH 8/8] chore: Choose default editor missing correct option updated (#40649) Co-authored-by: Sharra-writes --- .../setting-your-default-editor-for-github-codespaces.md | 2 +- data/reusables/codespaces/application-installed-locally.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/codespaces/setting-your-user-preferences/setting-your-default-editor-for-github-codespaces.md b/content/codespaces/setting-your-user-preferences/setting-your-default-editor-for-github-codespaces.md index b834df27ba2e..fa4af576f7b0 100644 --- a/content/codespaces/setting-your-user-preferences/setting-your-default-editor-for-github-codespaces.md +++ b/content/codespaces/setting-your-user-preferences/setting-your-default-editor-for-github-codespaces.md @@ -31,7 +31,7 @@ If you want to use {% data variables.product.prodname_vscode %} as your default * {% data reusables.codespaces.application-installed-locally %}

- * If you choose **{% data variables.product.prodname_vscode %}**, {% data variables.product.prodname_github_codespaces %} will automatically open in the desktop application when you next create or open a codespace. + * If you choose **{% data variables.product.prodname_vscode %}** (web client), {% data variables.product.prodname_github_codespaces %} will automatically open in the desktop application when you next create or open a codespace. You may need to allow access to both your browser and {% data variables.product.prodname_vscode %} for it to open successfully.

diff --git a/data/reusables/codespaces/application-installed-locally.md b/data/reusables/codespaces/application-installed-locally.md index 955296bbe1c5..311a5620550c 100644 --- a/data/reusables/codespaces/application-installed-locally.md +++ b/data/reusables/codespaces/application-installed-locally.md @@ -1 +1 @@ -If you choose **{% data variables.product.prodname_vscode %}**, you must make sure you have {% data variables.product.prodname_vscode_shortname %} installed on your local machine. +If you choose **{% data variables.product.prodname_vscode %}** (desktop application), you must make sure you have {% data variables.product.prodname_vscode_shortname %} installed on your local machine.