From 6e2abdd28e55673123a22882ce36e41f18dad579 Mon Sep 17 00:00:00 2001 From: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:32:03 +0100 Subject: [PATCH 1/3] Create a guide for enterprises to enable Copilot premium requests beyond the plan's allowance (#56376) Co-authored-by: amrithss <89491847+amrithss@users.noreply.github.com> Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> --- .../enterprise-premium-request-budget.png | Bin 0 -> 67878 bytes .../gathering-insights-on-your-spending.md | 4 +- .../using-budgets-control-spending.md | 5 +- ...anding-and-managing-requests-in-copilot.md | 5 +- ...our-enterprises-plan-for-github-copilot.md | 7 +- content/copilot/how-tos/index.md | 2 +- .../copilot/how-tos/premium-requests/index.md | 13 +++ .../premium-requests/manage-for-enterprise.md | 64 ++++++++++++++ ...ing-your-copilot-usage-and-entitlements.md | 3 + ...our-companys-spending-on-github-copilot.md | 83 +++++------------- 10 files changed, 114 insertions(+), 72 deletions(-) create mode 100644 assets/images/help/copilot/enterprise-premium-request-budget.png create mode 100644 content/copilot/how-tos/premium-requests/index.md create mode 100644 content/copilot/how-tos/premium-requests/manage-for-enterprise.md rename content/copilot/how-tos/{ => premium-requests}/monitoring-your-copilot-usage-and-entitlements.md (97%) diff --git a/assets/images/help/copilot/enterprise-premium-request-budget.png b/assets/images/help/copilot/enterprise-premium-request-budget.png new file mode 100644 index 0000000000000000000000000000000000000000..e29f60b6bca33015107e8ac2dce38af217335a54 GIT binary patch literal 67878 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 QQ-F`As@~~*72BZy0w`Q{U;qFB literal 0 HcmV?d00001 diff --git a/content/billing/managing-your-billing/gathering-insights-on-your-spending.md b/content/billing/managing-your-billing/gathering-insights-on-your-spending.md index 4551cb3a180c..bb6f333b2d69 100644 --- a/content/billing/managing-your-billing/gathering-insights-on-your-spending.md +++ b/content/billing/managing-your-billing/gathering-insights-on-your-spending.md @@ -82,9 +82,9 @@ You can view the usage of your {% data variables.enterprise.enterprise_or_org %} 1. To request a CSV usage report, select **Get usage report** in the upper-right corner of the page. * For a breakdown of all metered usage, click **Metered billing usage report**. - * For a per user breakdown of additional premium requests, click **{% data variables.product.prodname_copilot_short %} premium requests usage report**. + * For a per user breakdown of premium requests for the last 45 days, click **{% data variables.product.prodname_copilot_short %} premium requests usage report**. - You can choose a pre-selected option or use the "Custom range" option to specify a date range of up to 31 days. + >[!TIP] The premium request usage report includes all premium requests, both within and beyond the allowance. By contrast, the metered billing usage report only reflects costs for requests beyond the allowance. ## Viewing license usage diff --git a/content/billing/managing-your-billing/using-budgets-control-spending.md b/content/billing/managing-your-billing/using-budgets-control-spending.md index aba3a9c7c49e..f919c2dfae44 100644 --- a/content/billing/managing-your-billing/using-budgets-control-spending.md +++ b/content/billing/managing-your-billing/using-budgets-control-spending.md @@ -132,7 +132,6 @@ As the owner of an enterprise or organization account, or as a billing manager, You can edit or delete a budget at any time, but you cannot change the scope of a budget after creating it. -1. In the "Budgets and alerts" view, click **New budget**. -1. Click **Budgets and alerts**. -1. To edit a budget, in the list of budgets, click {% octicon "kebab-horizontal" aria-label="View actions" %} next to the budget you want to edit, and click **{% octicon "pencil" aria-hidden="true" aria-label="pencil" %} Edit** or **{% octicon "trash" aria-hidden="true" aria-label="trash" %} Delete**. +1. Navigate to the "Budgets and alerts" view. See [Viewing budgets](#viewing-budgets). +1. In the list of budgets, click {% octicon "kebab-horizontal" aria-label="View actions" %} next to the budget you want to edit, and click **{% octicon "pencil" aria-hidden="true" aria-label="pencil" %} Edit** or **{% octicon "trash" aria-hidden="true" aria-label="trash" %} Delete**. 1. Follow the prompts. diff --git a/content/copilot/concepts/copilot-billing/understanding-and-managing-requests-in-copilot.md b/content/copilot/concepts/copilot-billing/understanding-and-managing-requests-in-copilot.md index c77817e1b329..08073d6e8e1f 100644 --- a/content/copilot/concepts/copilot-billing/understanding-and-managing-requests-in-copilot.md +++ b/content/copilot/concepts/copilot-billing/understanding-and-managing-requests-in-copilot.md @@ -67,9 +67,10 @@ If you're on a **paid plan** and use all of your premium requests, you can still If you need more premium requests beyond your monthly allowance, you can: * Set a spending limit for additional premium requests. See [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending). -* Upgrade to a higher plan. +* Upgrade your individual subscription to a higher plan. +* If you're an enterprise owner, edit the default $0 budget or upgrade members to {% data variables.copilot.copilot_enterprise_short %}. See [AUTOTITLE](/copilot/how-tos/premium-requests/manage-for-enterprise). -These actions can be taken by organization owners, billing managers, and personal account users. +These actions can be taken by enterprise owners, organization owners, billing managers, and personal account users. > [!IMPORTANT] By default, all budgets are set to zero and premium requests over the allowance are rejected unless a budget has been created. Additional premium requests beyond your plan’s included amount are billed at {% data variables.copilot.additional_premium_requests %} per request. diff --git a/content/copilot/get-started/choosing-your-enterprises-plan-for-github-copilot.md b/content/copilot/get-started/choosing-your-enterprises-plan-for-github-copilot.md index 44accb3e3366..21cc6a35ba91 100644 --- a/content/copilot/get-started/choosing-your-enterprises-plan-for-github-copilot.md +++ b/content/copilot/get-started/choosing-your-enterprises-plan-for-github-copilot.md @@ -61,9 +61,12 @@ With {% data variables.copilot.copilot_code-review_short %}, {% data variables.p ## How much will we benefit from premium requests? -{% data reusables.copilot.premium-requests-for-enterprises %} +Each {% data variables.product.prodname_copilot_short %} plan includes a per-user allowance for premium requests: -To decide if you will benefit from a higher allowance for premium requests, compare the goals of your rollout to **development tasks** that each model is specialized in. For example, the {% data variables.copilot.copilot_claude_sonnet_40 %} is designed for advanced reasoning and coding tasks. Teams who work in specialized areas may require more requests to premium models. To learn about the benefits of different models, see [AUTOTITLE](/copilot/using-github-copilot/ai-models/choosing-the-right-ai-model-for-your-task). +* 300 requests per user per month for {% data variables.copilot.copilot_business_short %} +* 1000 requests per user per month for {% data variables.copilot.copilot_enterprise_short %} + +By ensuring members have access to enough premium requests, you can drive real business outcomes, such as reducing your backlog with {% data variables.copilot.copilot_coding_agent %}, accelerating pull requests with {% data variables.copilot.copilot_code-review_short %}, or increasing code quality with suggestions from more specialized models. Regardless of your plan, you can set a spending limit for premium requests over your plan's allowance. Premium requests over the allowance will be charged at a rate of {% data variables.copilot.additional_premium_requests %} per request, with an additional multiplier applied to certain models. diff --git a/content/copilot/how-tos/index.md b/content/copilot/how-tos/index.md index 3c26905db258..adb920bc5467 100644 --- a/content/copilot/how-tos/index.md +++ b/content/copilot/how-tos/index.md @@ -16,7 +16,7 @@ children: - /custom-instructions - /content-exclusion - /github-flow - - /monitoring-your-copilot-usage-and-entitlements + - /premium-requests - /personal-settings - /manage-your-account - /administer diff --git a/content/copilot/how-tos/premium-requests/index.md b/content/copilot/how-tos/premium-requests/index.md new file mode 100644 index 000000000000..2e75eded2f51 --- /dev/null +++ b/content/copilot/how-tos/premium-requests/index.md @@ -0,0 +1,13 @@ +--- +title: Premium requests for Copilot +shortTitle: Premium requests +intro: 'Manage and track premium requests for yourself or for your users.' +versions: + feature: copilot +topics: + - Copilot +children: + - /monitoring-your-copilot-usage-and-entitlements + - /manage-for-enterprise +--- + diff --git a/content/copilot/how-tos/premium-requests/manage-for-enterprise.md b/content/copilot/how-tos/premium-requests/manage-for-enterprise.md new file mode 100644 index 000000000000..65e937800622 --- /dev/null +++ b/content/copilot/how-tos/premium-requests/manage-for-enterprise.md @@ -0,0 +1,64 @@ +--- +title: Managing the premium request allowance for users in your enterprise +shortTitle: Manage allowance for members +intro: 'Change the default spending limit or upgrade users to {% data variables.copilot.copilot_enterprise_short %}.' +permissions: 'Enterprise owners' +versions: + feature: copilot +topics: + - Copilot +allowTitleToDifferFromFilename: true +product: '{% data variables.copilot.copilot_for_business %} or {% data variables.copilot.copilot_enterprise %}' +--- + +Each {% data variables.product.prodname_copilot_short %} plan includes a per-user allowance for premium requests. To learn more about premium requests, see [AUTOTITLE](/copilot/concepts/copilot-billing/understanding-and-managing-requests-in-copilot). For allowances per plan, see [AUTOTITLE](/copilot/get-started/plans-for-github-copilot#comparing-copilot-plans). + +By default, every enterprise has a $0 budget for the Premium Request SKU. Unless this budget is edited or deleted, your enterprise will have **no extra costs** for premium requests: when one of your licensed users exhausts the allowance in their plan, the user's premium requests will be rejected for the rest of the month. + +![Screenshot of the enterprise budgets page, with the default budget: a $0 budget for the Premium Request SKU.](/assets/images/help/copilot/enterprise-premium-request-budget.png) + +You can edit or delete this budget to grant extra requests to all your licensed members. If you want to grant extra requests to certain users only, you can upgrade those users to {% data variables.copilot.copilot_enterprise_short %}. + +## Prerequisites + +* Before making changes, download a usage report to see which developers are frequently hitting the limit or using a significant number of requests over the allowance. You may want to contact these users to understand their use cases and requirements. See [Downloading a monthly usage report](/copilot/how-tos/monitoring-your-copilot-usage-and-entitlements#downloading-a-monthly-usage-report). +* If a user receives licenses from multiple enterprises or standalone organizations, the user must select a billing entity to use premium requests. See [Managing premium request billing with multiple {% data variables.product.prodname_copilot_short %} licenses](/copilot/managing-copilot/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements#managing-premium-request-billing-with-multiple-copilot-licenses). + +## Changing the budget for all members + +To enable premium requests over the allowance for everyone, you can: + +* Delete the default $0 budget to allow **unlimited spending on premium requests** for all users. +* Edit the "Budget amount" of the default $0 budget to set **a non-zero total spending limit** for premium requests in your enterprise. + +For instructions, see [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending#editing-or-deleting-a-budget). + +>[!NOTE] Creating new budgets without deleting the $0 budget does not override the $0 budget. If **any** applicable budget with "Stop usage when budget limit is reached" enabled is exhausted, additional premium requests are blocked. + +## Upgrading users to {% data variables.copilot.copilot_enterprise_short %} + +You can upgrade certain users to increase their base allowance of premium requests. + +>[!TIP] {% data variables.copilot.copilot_business_short %} users who make make more than 800 premium requests per month would save money with a {% data variables.copilot.copilot_enterprise_short %} license. + +1. Create a new organization in your enterprise. See [AUTOTITLE](/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise#creating-a-new-organization). +1. Add the users who need more premium requests to the new organization. +1. Grant {% data variables.copilot.copilot_enterprise_short %} licenses to all users in the organization. + + 1. If needed, upgrade the enterprise to {% data variables.copilot.copilot_enterprise_short %}. See [AUTOTITLE](/enterprise-cloud@latest/copilot/how-tos/administer/enterprises/managing-the-copilot-plan-for-your-enterprise/upgrading-copilot-for-your-enterprise). + + 1. Enable {% data variables.copilot.copilot_enterprise_short %} for the new organization. See [AUTOTITLE](/enterprise-cloud@latest/copilot/how-tos/administer/enterprises/managing-access-to-copilot-in-your-enterprise/enabling-copilot-for-organizations-in-your-enterprise). + + 1. Grant licenses to all users in the organization. See [AUTOTITLE](/copilot/how-tos/administer/organizations/managing-access-to-github-copilot-in-your-organization/granting-access-to-copilot-for-members-of-your-organization#granting-access-to-github-copilot-for-all-current-and-future-users-in-your-organization). + +1. Check the usage report regularly to ensure that {% data variables.copilot.copilot_enterprise_short %} remains the most cost-effective option for these users. + +## Setting a budget for specific members + +You can set a higher budget for premium requests over the allowance for specific users in your enterprise. However, you must ensure that every user in your enterprise is covered by a budget. Users who are not covered by a budget will have access to unlimited spending on premium requests. + +At a high level, the required steps are: + +1. Delete the default $0 budget. +1. Create a new budget for the users who need a higher allowance. For example, create an organization or cost center containing just these users, then create a Premium Request SKU budget for the organization or cost center. +1. Create a separate, more restrictive budget that covers every other {% data variables.product.prodname_copilot_short %} user in your enterprise. You will likely need to integrate with the API to ensure that this budget covers new users as they are added to your enterprise. diff --git a/content/copilot/how-tos/monitoring-your-copilot-usage-and-entitlements.md b/content/copilot/how-tos/premium-requests/monitoring-your-copilot-usage-and-entitlements.md similarity index 97% rename from content/copilot/how-tos/monitoring-your-copilot-usage-and-entitlements.md rename to content/copilot/how-tos/premium-requests/monitoring-your-copilot-usage-and-entitlements.md index 6e5f2b1e52a6..1495c5bf2400 100644 --- a/content/copilot/how-tos/monitoring-your-copilot-usage-and-entitlements.md +++ b/content/copilot/how-tos/premium-requests/monitoring-your-copilot-usage-and-entitlements.md @@ -11,6 +11,7 @@ redirect_from: - /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements - /copilot/managing-copilot/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements - /copilot/managing-copilot/understanding-and-managing-copilot-usage/monitoring-your-copilot-usage-and-entitlements + - /copilot/how-tos/monitoring-your-copilot-usage-and-entitlements --- You can track your monthly usage of premium requests to help you get the most value from your {% data variables.product.prodname_copilot_short %} plan. @@ -52,6 +53,8 @@ You can view your premium request usage at any time from your {% data variables. ### Downloading a {% data variables.product.prodname_copilot_short %} premium request usage report +The premium request usage report includes all premium request usage, both within and beyond the allowance. By contrast, other metered billing reports only reflect costs for premium requests beyond the allowance. + >[!NOTE] > For organizations and enterprises, only admins can download a usage report to understand {% data variables.product.prodname_copilot_short %} usage across their business. Individual members of the organization or enterprise cannot download the report for themselves. diff --git a/content/copilot/tutorials/rolling-out-github-copilot-at-scale/assigning-licenses/managing-your-companys-spending-on-github-copilot.md b/content/copilot/tutorials/rolling-out-github-copilot-at-scale/assigning-licenses/managing-your-companys-spending-on-github-copilot.md index 71e079b2e243..eb9c03f2e951 100644 --- a/content/copilot/tutorials/rolling-out-github-copilot-at-scale/assigning-licenses/managing-your-companys-spending-on-github-copilot.md +++ b/content/copilot/tutorials/rolling-out-github-copilot-at-scale/assigning-licenses/managing-your-companys-spending-on-github-copilot.md @@ -15,73 +15,33 @@ redirect_from: When you're adopting {% data variables.product.prodname_copilot %} in an enterprise, you will want to set budgets and track spending to ensure your rollout is sustainable. {% data variables.product.github %} offers billing tools to help you visualize your spending patterns, receive alerts when you reach budget thresholds, and optimize your license usage. ->[!NOTE] Some of the tools recommended in this article are part of {% data variables.product.github %}'s new billing platform, which isn't available to all customers. If your enterprise has access, you will see a **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing** option in your enterprise account's settings. - -## Understand who can grant licenses +## Understanding who can grant licenses To control spending, it's important to understand who can affect your bill by granting licenses to users. These are people with the **organization owner** role in organizations where you enable {% data variables.product.prodname_copilot %}. Organization owners can receive requests for access from members through the {% data variables.product.github %} UI. We recommend that you identify the people with this role and communicate with them about your company's strategy for distributing licenses. For example, you may have a budget or limited pilot program, or you may distribute licenses through an internal website. -## Managing charges for premium requests - -{% data reusables.copilot.premium-requests-for-enterprises %} - -### Use of premium requests over the allowance - -Premium requests over the allowance are rejected unless you have set a budget. Depending on the type of development tasks your developers use {% data variables.product.prodname_copilot_short %} for, you may find developers need to make more premium requests than the allowance included in your plan. - -Premium requests over the allowance are charged at a rate of {% data variables.copilot.additional_premium_requests %} per request, with an additional multiplier applied to certain models. You can also increase your monthly allowance by upgrading to {% data variables.copilot.copilot_enterprise_short %}. - -For pricing details and a list of available models, see [AUTOTITLE](/copilot/about-github-copilot/subscription-plans-for-github-copilot#comparing-copilot-plans). - -{% data reusables.copilot.premium-request-entity-selection %} - -### Managing budgets - -By default, a $0 budget for the {% data variables.product.prodname_copilot %} Premium Request SKU is created for your enterprise. You can edit this budget from the "Budgets and alerts" page. See [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending). +## Managing premium requests -> [!WARNING] Deleting this budget without setting a new one will enable **unlimited {% data variables.product.prodname_copilot %} usage**. +Each {% data variables.product.prodname_copilot_short %} plan includes a per-user allowance for premium requests. To learn more about premium requests, see [AUTOTITLE](/copilot/concepts/copilot-billing/understanding-and-managing-requests-in-copilot). For allowances per plan, see [AUTOTITLE](/copilot/get-started/plans-for-github-copilot#comparing-copilot-plans). -The default budget that is created applies to your whole enterprise. To set a new budget for a specific part of your enterprise, such as a cost center, you can create a new budget: +### Tracking premium request usage -{% ifversion fpt %} +To track premium request usage, download the premium request usage report for your organization or enterprise. See [AUTOTITLE](/copilot/how-tos/premium-requests/monitoring-your-copilot-usage-and-entitlements#downloading-a-monthly-usage-report). -{% data reusables.profile.access_org %} -{% data reusables.profile.org_settings %} -{% data reusables.billing.org-billing-menu %} +This report includes all premium request usage by user, both within and beyond the allowance, so you can use the report to understand general patterns and identify users who would benefit from more premium requests. -{% elsif ghec %} +By contrast, other metered billing usage reports only reflect costs for premium requests beyond the allowance. -1. Go to your enterprise or organization account settings and click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing**. - -{% endif %} -1. Click **Budgets and alerts**. -1. Click **New budget**. -1. Under "Budget Type" select **SKU-level budget**. -1. Select the "Product" dropdown and click **Copilot**. -1. Select the "SKU" dropdown and click **Copilot Premium Request** -1. Under "Budget scope", set the scope of spending for this budget. -1. Under "Budget", set a budget amount. Optionally, choose to stop usage when the budget limit is reached. -1. Click **Create budget**. - -### Tracking premium requests +### Granting more premium requests to members -You can view a CSV report that shows the cumulative number of premium requests per user over a time period. You can use this report to: +By default, enterprises have a $0 budget for the Premium Request SKU. This means that when users exhaust their allowance, they cannot make any more premium requests for the rest of the month. Deleting this budget allows for **unlimited spending**. -* Understand if developers are frequently hitting the limit and would benefit from you enabling additional premium requests or upgrading your plan. -* Identify users who are making a large number of premium requests over the limit, and follow up to the users to understand their use cases and requirements. -* After enabling additional premium requests, track usage to determine if it would be more cost effective to upgrade to {% data variables.copilot.copilot_enterprise_short %}. +To change the default budget or increase members' base allowance, see [AUTOTITLE](/copilot/how-tos/premium-requests/manage-for-enterprise). -You can download the report for an enterprise account, or for an organization that is not part of an enterprise. +## Mapping spending to groups of users -1. Go to your enterprise or organization account settings and click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing**. -1. In the left sidebar, click **Usage**. -1. To download the usage report, select **Get usage report** in the upper-right corner of the page, and click **{% data variables.product.prodname_copilot_short %} premium requests usage report**. - -## Map spending to groups of users - -With {% data variables.product.github %}'s new billing platform, you can create cost centers to map spending to individual business units or groups of users. Cost centers allow you to track costs tied to different initiatives and charge the costs to specific areas of your business. +You can create cost centers to map spending to individual business units or groups of users. Cost centers allow you to track costs tied to different initiatives and charge the costs to specific areas of your business. For example, if you were running a pilot program for {% data variables.copilot.copilot_enterprise %} for a group of employees, you might want to create a cost center to track their spending and set a budget independently of the rest of the company. @@ -95,21 +55,20 @@ For example, if you were running a pilot program for {% data variables.copilot.c 1. After creating the cost center, use the REST API to add the users whose usage you want to track. See [AUTOTITLE](/enterprise-cloud@latest/rest/enterprise-admin/billing#add-users-to-a-cost-center). -## Receive alerts for overspending +## Preventing overspending -With {% data variables.product.github %}'s new billing platform, you can set a monthly budget on {% data variables.product.prodname_copilot %} spending. Setting a budget for license-based products, such as {% data variables.product.prodname_copilot_short %}, is for monitoring purposes only and will not prevent usage beyond the budgeted amount. However, you will receive notifications by email when spending exceeds certain percentages of the budget you've set. To prevent usage over the limit for the Copilot Premium Request SKU, update the default $0 SKU-level budget and select "Stop usage when budget limit is reached". +You can set a monthly budget on {% data variables.product.prodname_copilot %} spending. -{% ifversion ghec %}You can create the budget for the whole enterprise or for a cost center.{% endif %} +* For {% data variables.product.prodname_copilot_short %} **licenses**, a budget is for monitoring purposes only and will not prevent usage beyond the budgeted amount. However, you will receive notifications by email when spending exceeds certain percentages of the budget you've set. +* For {% data variables.product.prodname_copilot_short %} **premium requests**, you can choose to stop usage once the budget amount is reached. The default $0 budget for enterprises already does this. -1. Go to your enterprise or organization account settings and click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing**. -1. In the left sidebar, click **Budgets and alerts**. -1. Click **New budget**. -1. Select **{% data variables.product.prodname_copilot_short %}** for the product, or **{% data variables.product.prodname_copilot_short %} Premium Request** for the SKU, then configure the settings as required. You can choose who receives alerts when budget thresholds are reached. -1. Click **Create budget**. +To create a budget, see [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending#editing-or-deleting-a-budget). + +## Visualizing spending trends -## Visualize spending trends +You can understand your spending trends by viewing a graph for {% data variables.product.prodname_copilot_short %} usage over a certain timeframe. Usage includes costs for {% data variables.product.prodname_copilot_short %} licenses and additional premium requests beyond the allowance. -With {% data variables.product.github %}'s new billing platform, you can understand your spending trends by viewing a graph for {% data variables.product.prodname_copilot_short %} usage over a certain timeframe. For more detailed insights, you can filter the results by cost center and group usage by the type of {% data variables.product.prodname_copilot_short %} plan. +For more detailed insights, you can filter the results by cost center and group usage by the type of {% data variables.product.prodname_copilot_short %} plan. 1. Go to your enterprise or organization account settings and click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing**. 1. In the left sidebar, click **Usage**. From 8970450b483e8e43b866307d7a7cd8e4d9543859 Mon Sep 17 00:00:00 2001 From: Jamie Cansdale Date: Tue, 15 Jul 2025 11:55:36 +0100 Subject: [PATCH 2/3] Remove redundant instructions when deleting package versions (#56622) Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> --- .../learn-github-packages/deleting-and-restoring-a-package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/packages/learn-github-packages/deleting-and-restoring-a-package.md b/content/packages/learn-github-packages/deleting-and-restoring-a-package.md index a50de3906d8f..1bf7bb37eeda 100644 --- a/content/packages/learn-github-packages/deleting-and-restoring-a-package.md +++ b/content/packages/learn-github-packages/deleting-and-restoring-a-package.md @@ -98,7 +98,7 @@ To delete a specific version of a user-scoped package on {% data variables.produ To review who can delete a package version, see [Required permissions](#required-permissions-to-delete-or-restore-a-package). {% data reusables.package_registry.package-settings-from-user-level %} -{% data reusables.package_registry.package-settings-option %} +1. Search for and then click the name of the package that you want to manage. {% data reusables.package_registry.package-settings-manage-versions-menu %} {% data reusables.package_registry.package-settings-delete-versions %} 1. In the confirmation box, type the name of the package to confirm you want to delete the chosen version of it. @@ -112,7 +112,7 @@ To delete an entire package, see [Deleting an entire organization-scoped package To review who can delete a package version, see [Required permissions to delete or restore a package](#required-permissions-to-delete-or-restore-a-package). {% data reusables.package_registry.package-settings-from-org-level %} -{% data reusables.package_registry.package-settings-option %} +1. Search for and then click the name of the package that you want to manage. {% data reusables.package_registry.package-settings-manage-versions-menu %} {% data reusables.package_registry.package-settings-delete-versions %} 1. In the confirmation box, type the name of the package to confirm you want to delete the chosen version of it. From bc36811242e88791110e496adae8301e9e16f4c8 Mon Sep 17 00:00:00 2001 From: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:56:00 +0100 Subject: [PATCH 3/3] [EDI] Move content about `last_activity_at` Copilot property to Reference article (#56615) Co-authored-by: hubwriter --- ...y-data-for-copilot-in-your-organization.md | 26 ++--------- content/copilot/reference/index.md | 1 + content/copilot/reference/metrics-data.md | 46 +++++++++++++++++++ .../reminding-inactive-users.md | 1 + 4 files changed, 51 insertions(+), 23 deletions(-) create mode 100644 content/copilot/reference/metrics-data.md diff --git a/content/copilot/how-tos/administer/organizations/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md b/content/copilot/how-tos/administer/organizations/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md index 9922d76347d6..96184a8e7707 100644 --- a/content/copilot/how-tos/administer/organizations/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md +++ b/content/copilot/how-tos/administer/organizations/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md @@ -41,31 +41,11 @@ redirect_from: You can use {% data variables.product.prodname_dotcom %}'s REST API to get details about the assignment of {% data variables.product.prodname_copilot %} seats in your organization. See [Get Copilot seat information and settings for an organization](/rest/copilot/copilot-user-management?apiVersion=2022-11-28#get-copilot-seat-information-and-settings-for-an-organization), [List all Copilot seat assignments for an organization](/rest/copilot/copilot-user-management?apiVersion=2022-11-28#list-all-copilot-seat-assignments-for-an-organization), and [Get Copilot seat assignment details for a user](/rest/copilot/copilot-user-management?apiVersion=2022-11-28#get-copilot-seat-assignment-details-for-a-user). -## Understanding the `last_activity_at` calculation +## Troubleshooting `last_activity_at` data -> [!NOTE] This data is in {% data variables.release-phases.public_preview %} and subject to change. +If you believe a user's `last_activity_at` date should be more recent than shown in the CSV or API report, wait 24 hours and check again. If their recent Copilot usage is still not reflected in their `last_activity_at` date, have the user check that telemetry is enabled in their IDE settings. -To align the `last_activity_at` data point with _actual usage_, the system returns the timestamp of a user's most recent interaction with Copilot functionality. These interactions are: - -* Receiving a code suggestion in an IDE -* Chatting with Copilot Chat in an IDE -{%- ifversion ghec %} -* Creating or updating a knowledge base -* Creating a pull request summary -* Interacting with Copilot Chat in GitHub -{%- endif %} -* Interacting with Copilot on a mobile device -* Interacting with Copilot Chat for CLI - -The `last_activity_at` date is consistent across the CSV generated via `Get Report` in Copilot Access settings as well as through {% data variables.product.prodname_dotcom %}'s REST API. The events which are tracked come from both client, and server-side telemetry. This allows the timestamp to be durable in the event that network conditions would impact client-telemetry. - -The retention period for `last_activity_at` data is 90 days. After 90 days of no new activity, a user's `last_activity_at` value is set to `nil`. The data retention period cannot be modified. For more information, see [Updating retention period for `last_activity_at` values on the Copilot user management API to 90 days](https://github.blog/changelog/2025-01-17-updating-retention-period-for-last_activity_at-values-on-the-user-management-api-public-preview-to-90-days/) on {% data variables.product.prodname_blog %}. - -### Troubleshooting `last_activity_at` data - -Processing new telemetry events and updating a user's `last_activity_at` date can take up to 24 hours. Users must have telemetry enabled in their IDE for their usage to be reflected in `last_activity_at`. - -If you believe a user's `last_activity_at` date should be more recent than shown in the CSV or API report, please wait 24 hours and check again. If their recent Copilot usage is still not reflected in their `last_activity_at` date, have the user check that telemetry is enabled in their IDE settings. +For more information about this property, see [AUTOTITLE](/copilot/reference/metrics-data#last_activity_at). ## Further reading diff --git a/content/copilot/reference/index.md b/content/copilot/reference/index.md index 70f1b9e19745..824f33f5d47d 100644 --- a/content/copilot/reference/index.md +++ b/content/copilot/reference/index.md @@ -11,5 +11,6 @@ children: - /ai-models - /proxy-server-and-firewall-settings-for-copilot - /copilot-extensions + - /metrics-data --- diff --git a/content/copilot/reference/metrics-data.md b/content/copilot/reference/metrics-data.md new file mode 100644 index 000000000000..55404af3cc47 --- /dev/null +++ b/content/copilot/reference/metrics-data.md @@ -0,0 +1,46 @@ +--- +title: Metrics data properties for GitHub Copilot +shortTitle: Metrics data +intro: 'See how GitHub calculates properties from APIs and reports.' +versions: + feature: copilot +topics: + - Copilot +allowTitleToDifferFromFilename: true +--- + +## `last_activity_at` + +> [!NOTE] This data is in {% data variables.release-phases.public_preview %} and subject to change. + +The timestamp of a user's most recent interaction with {% data variables.product.prodname_copilot_short %} functionality. + +### Surfaces + +This property is consistent across the following surfaces: + +* The CSV report downloaded from the "Access management" page (see [AUTOTITLE](/copilot/how-tos/administer/organizations/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization)) +* The [AUTOTITLE](/rest/copilot/copilot-user-management) + +### Calculation + +The following interactions count as activity: + +* Receiving a code suggestion in an IDE +* Chatting with Copilot Chat in an IDE +* Creating or updating a knowledge base +* Creating a pull request summary +* Interacting with Copilot Chat in GitHub +* Interacting with Copilot on a mobile device +* Interacting with Copilot Chat for CLI + +The tracked events come from both client- and server-side telemetry, ensuring the timestamp is durable if network conditions affect client-side telemetry. + +Processing new telemetry events and updating a user's `last_activity_at` date can take up to 24 hours. Users must have telemetry enabled in their IDE for their usage to be reflected in `last_activity_at`. + +### Retention period + +* The retention period for `last_activity_at` data is 90 days. This cannot be modified. +* After 90 days of no new activity, a user's `last_activity_at` value is set to `nil`. + +For more information, see [Updating retention period for `last_activity_at` values on the Copilot user management API to 90 days](https://github.blog/changelog/2025-01-17-updating-retention-period-for-last_activity_at-values-on-the-user-management-api-public-preview-to-90-days/) on {% data variables.product.prodname_blog %}. diff --git a/content/copilot/tutorials/rolling-out-github-copilot-at-scale/assigning-licenses/reminding-inactive-users.md b/content/copilot/tutorials/rolling-out-github-copilot-at-scale/assigning-licenses/reminding-inactive-users.md index 6199dee5b060..ab9a6c24ed5f 100644 --- a/content/copilot/tutorials/rolling-out-github-copilot-at-scale/assigning-licenses/reminding-inactive-users.md +++ b/content/copilot/tutorials/rolling-out-github-copilot-at-scale/assigning-licenses/reminding-inactive-users.md @@ -159,5 +159,6 @@ jobs: ## Further reading +* [AUTOTITLE](/copilot/reference/metrics-data#last_activity_at) * [AUTOTITLE](/copilot/rolling-out-github-copilot-at-scale/driving-copilot-adoption-in-your-company) * [AUTOTITLE](/copilot/rolling-out-github-copilot-at-scale/analyzing-usage-over-time-with-the-copilot-metrics-api)