From 621d955dd7bcececb9e87d172d40f5d8ef52bf3a Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Thu, 2 Jul 2026 07:56:39 -0700 Subject: [PATCH 1/5] Sync Copilot SDK docs (auto-generated) (#62025) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: sunbrye Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../features-agent-loop-diagram-1.png | Bin 76668 -> 76656 bytes .../features-agent-loop-diagram-2.png | Bin 69656 -> 69639 bytes .../how-tos/copilot-sdk/features/hooks.md | 20 +- .../how-tos/copilot-sdk/features/index.md | 1 + .../copilot-sdk/features/session-limits.md | 182 ++++++++++++++++++ .../copilot-sdk/features/streaming-events.md | 43 +++++ .../copilot-sdk/hooks/post-tool-use.md | 14 +- 7 files changed, 243 insertions(+), 17 deletions(-) create mode 100644 content/copilot/how-tos/copilot-sdk/features/session-limits.md diff --git a/assets/images/help/copilot/copilot-sdk/features-agent-loop-diagram-1.png b/assets/images/help/copilot/copilot-sdk/features-agent-loop-diagram-1.png index f2f0500a9d3e5440bf0ce9f803034aeed0eb733b..09030de7ef9b0e95c9bd4f9abba894033f38b874 100644 GIT binary patch delta 37150 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 delta 37162 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 delta 33136 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 U4Q- + Session limits let an application set an AI Credits budget for a Copilot + session. Use `sessionLimits` when creating or resuming a session to set a soft + cap for the current accounting window. +versions: + fpt: '*' + ghec: '*' +contentType: how-tos +--- + + + + +## Configure a session limit + +Set `maxAiCredits` to the AI Credits soft cap for the session's current accounting window. Usage is checked after model calls return, so one response can exceed the configured value before the runtime blocks the next model call. The SDK forwards this value to the Copilot CLI when it creates or resumes the session. + +{% codetabs %} +{% codetab typescript %} + + + +```typescript +const session = await client.createSession({ + onPermissionRequest: approveAll, + sessionLimits: { + maxAiCredits: 30, + }, +}); + +const resumed = await client.resumeSession(session.sessionId, { + onPermissionRequest: approveAll, + sessionLimits: { + maxAiCredits: 30, + }, +}); +``` + +{% endcodetab %} +{% codetab python %} + + + +```python +session = await client.create_session( + on_permission_request=PermissionHandler.approve_all, + session_limits={ + "max_ai_credits": 30, + }, +) + +resumed = await client.resume_session( + session.session_id, + on_permission_request=PermissionHandler.approve_all, + session_limits={ + "max_ai_credits": 30, + }, +) +``` + +{% endcodetab %} +{% codetab go %} + + + +```golang +session, err := client.CreateSession(ctx, &copilot.SessionConfig{ + OnPermissionRequest: copilot.PermissionHandler.ApproveAll, + SessionLimits: &rpc.SessionLimitsConfig{ + MaxAiCredits: copilot.Float64(30), + }, +}) + +resumed, err := client.ResumeSession(ctx, session.SessionID, &copilot.ResumeSessionConfig{ + OnPermissionRequest: copilot.PermissionHandler.ApproveAll, + SessionLimits: &rpc.SessionLimitsConfig{ + MaxAiCredits: copilot.Float64(30), + }, +}) +``` + +{% endcodetab %} +{% codetab dotnet %} + + + +```csharp +var session = await client.CreateSessionAsync(new SessionConfig +{ + OnPermissionRequest = PermissionHandler.ApproveAll, + SessionLimits = new SessionLimitsConfig + { + MaxAiCredits = 30, + }, +}); + +var resumed = await client.ResumeSessionAsync(session.SessionId, new ResumeSessionConfig +{ + OnPermissionRequest = PermissionHandler.ApproveAll, + SessionLimits = new SessionLimitsConfig + { + MaxAiCredits = 30, + }, +}); +``` + +{% endcodetab %} +{% codetab java %} + + + +```java +CopilotSession session = client + .createSession(new SessionConfig() + .setOnPermissionRequest(PermissionHandler.APPROVE_ALL) + .setSessionLimits(new SessionLimitsConfig(30.0))) + .get(); + +CopilotSession resumed = client + .resumeSession(session.getSessionId(), new ResumeSessionConfig() + .setOnPermissionRequest(PermissionHandler.APPROVE_ALL) + .setSessionLimits(new SessionLimitsConfig(30.0))) + .get(); +``` + +{% endcodetab %} +{% codetab rust %} + + + +```rust +let limits = SessionLimitsConfig { + max_ai_credits: Some(30.0), +}; + +let session = client + .create_session( + SessionConfig::new() + .approve_all_permissions() + .with_session_limits(limits.clone()), + ) + .await?; + +let resumed = client + .resume_session( + ResumeSessionConfig::new(session.id().clone()) + .approve_all_permissions() + .with_session_limits(limits), + ) + .await?; +``` + +{% endcodetab %} +{% endcodetabs %} + +## Observe budget events + +Applications can subscribe to session events to update UI when the soft cap changes or the session reaches the exhausted-budget flow. + +| Event type | When it is emitted | Important fields | +|---|---|---| +| `session.session_limits_changed` | Active session limits changed. A `null` `sessionLimits` value means no limits are active. | `sessionLimits.maxAiCredits?` | +| `session.usage_checkpoint` | The runtime records durable aggregate usage for resume and accounting. | `totalNanoAiu`, `totalPremiumRequests?` | +| `session_limits_exhausted.requested` | The session reached the exhausted-budget flow and needs a user decision before continuing. | `requestId`, `maxAiCredits`, `usedAiCredits` | +| `session_limits_exhausted.completed` | The exhausted-limit prompt was resolved. | `requestId`, `response.action`, `response.additionalAiCredits?`, `response.maxAiCredits?` | + +Use the generated event types for the SDK language you are using. For example, TypeScript narrows by `event.type`: + +```typescript +session.on((event) => { + if (event.type === "session_limits_exhausted.requested") { + showBudgetDialog({ + requestId: event.data.requestId, + maxAiCredits: event.data.maxAiCredits, + usedAiCredits: event.data.usedAiCredits, + }); + } +}); +``` diff --git a/content/copilot/how-tos/copilot-sdk/features/streaming-events.md b/content/copilot/how-tos/copilot-sdk/features/streaming-events.md index e597af9e50f9..65d4cadd7411 100644 --- a/content/copilot/how-tos/copilot-sdk/features/streaming-events.md +++ b/content/copilot/how-tos/copilot-sdk/features/streaming-events.md @@ -443,6 +443,24 @@ Ephemeral. Context window utilization snapshot. | `currentTokens` | `number` | ✅ | Current tokens in the context window | | `messagesLength` | `number` | ✅ | Current message count in the conversation | +### `session.session_limits_changed` + +Session limits changed for the current accounting window. A `null` `sessionLimits` value means no limits are active. + +| Data Field | Type | Required | Description | +|------------|------|----------|-------------| +| `sessionLimits` | `SessionLimitsConfig \| null` | ✅ | Current session limits, or `null` when no limits are active | +| `sessionLimits.maxAiCredits` | `number` | | Maximum AI Credits allowed across the session's current accounting window | + +### `session.usage_checkpoint` + +Durable aggregate usage checkpoint used to reconstruct accounting when a session is resumed. + +| Data Field | Type | Required | Description | +|------------|------|----------|-------------| +| `totalNanoAiu` | `number` | ✅ | Session-wide accumulated nano-AI units cost at checkpoint time | +| `totalPremiumRequests` | `number` | | Total number of premium API requests used at checkpoint time | + ### `session.task_complete` The agent has completed its assigned task. @@ -692,6 +710,27 @@ Ephemeral. A queued command was resolved. |------------|------|----------|-------------| | `requestId` | `string` | ✅ | Matches the corresponding `command.queued` | +### `session_limits_exhausted.requested` + +Ephemeral. The current session budget was exhausted and the runtime needs a user decision before continuing. + +| Data Field | Type | Required | Description | +|------------|------|----------|-------------| +| `requestId` | `string` | ✅ | Use this ID when responding to the pending exhausted-limit request | +| `maxAiCredits` | `number` | ✅ | Configured max AI Credits for the current accounting window | +| `usedAiCredits` | `number` | ✅ | AI Credits already consumed in the current accounting window | + +### `session_limits_exhausted.completed` + +Ephemeral. A pending exhausted-limit request was resolved. + +| Data Field | Type | Required | Description | +|------------|------|----------|-------------| +| `requestId` | `string` | ✅ | Matches the corresponding `session_limits_exhausted.requested` event | +| `response.action` | `"add" \| "set" \| "unset" \| "cancel"` | ✅ | Action selected for the exhausted-limit request | +| `response.additionalAiCredits` | `number` | | AI Credits to add to the current max when `response.action` is `"add"` | +| `response.maxAiCredits` | `number` | | New absolute max AI Credits when `response.action` is `"set"` | + ## Quick reference: agentic turn flow A typical agentic turn emits events in this order: @@ -744,6 +783,8 @@ session.idle → Ready for next message (ephemeral) | `session.title_changed` | ✅ | Session | `title` | | `session.context_changed` | | Session | `cwd`, `gitRoot?`, `repository?`, `branch?` | | `session.usage_info` | ✅ | Session | `tokenLimit`, `currentTokens`, `messagesLength` | +| `session.session_limits_changed` | | Session | `sessionLimits` | +| `session.usage_checkpoint` | | Session | `totalNanoAiu`, `totalPremiumRequests?` | | `session.task_complete` | | Session | `summary?` | | `session.shutdown` | | Session | `shutdownType`, `codeChanges`, `modelMetrics` | | `permission.requested` | ✅ | Permission | `requestId`, `permissionRequest` | @@ -765,5 +806,7 @@ session.idle → Ready for next message (ephemeral) | `external_tool.completed` | ✅ | External Tool | `requestId` | | `command.queued` | ✅ | Command | `requestId`, `command` | | `command.completed` | ✅ | Command | `requestId` | +| `session_limits_exhausted.requested` | ✅ | Session | `requestId`, `maxAiCredits`, `usedAiCredits` | +| `session_limits_exhausted.completed` | ✅ | Session | `requestId`, `response.action` | | `exit_plan_mode.requested` | ✅ | Plan Mode | `requestId`, `summary`, `planContent`, `actions` | | `exit_plan_mode.completed` | ✅ | Plan Mode | `requestId` | diff --git a/content/copilot/how-tos/copilot-sdk/hooks/post-tool-use.md b/content/copilot/how-tos/copilot-sdk/hooks/post-tool-use.md index 7fa71e2dcae3..c24e40c784d1 100644 --- a/content/copilot/how-tos/copilot-sdk/hooks/post-tool-use.md +++ b/content/copilot/how-tos/copilot-sdk/hooks/post-tool-use.md @@ -15,10 +15,10 @@ contentType: how-tos -- Transform or filter tool results -- Log tool execution for auditing -- Add context based on results -- Suppress results from the conversation +* Transform or filter tool results +* Log tool execution for auditing +* Add context based on results +* Suppress results from the conversation > **Failure variant** — `onPostToolUse` only fires for successful tool executions. To observe **failed** tool calls, register `onPostToolUseFailure` (`on_post_tool_use_failure` in Python, `OnPostToolUseFailure` in Go/.NET, `on_post_tool_use_failure` in Rust). The handler receives `{ sessionId, toolName, toolArgs, error, timestamp, workingDirectory }` — the `error` field is a string extracted from the tool's failure result — and may return `{ additionalContext: string }` to inject extra guidance for the model (e.g. retry hints). See the [AUTOTITLE](/copilot/how-tos/copilot-sdk/hooks/hooks-overview) for the full list. > @@ -488,6 +488,6 @@ const session = await client.createSession({ ## See also -- [AUTOTITLE](/copilot/how-tos/copilot-sdk/hooks) -- [AUTOTITLE](/copilot/how-tos/copilot-sdk/hooks/pre-tool-use) -- [AUTOTITLE](/copilot/how-tos/copilot-sdk/hooks/error-handling) +* [AUTOTITLE](/copilot/how-tos/copilot-sdk/hooks) +* [AUTOTITLE](/copilot/how-tos/copilot-sdk/hooks/pre-tool-use) +* [AUTOTITLE](/copilot/how-tos/copilot-sdk/hooks/error-handling) From 873be89825e3c6f42afc7b9cd456a94a5f672b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holly=20=F0=9F=A6=92?= <104800384+holly-kassel@users.noreply.github.com> Date: Thu, 2 Jul 2026 10:20:33 -0500 Subject: [PATCH 2/5] Spend controls Phase 3: included usage caps + scaling cost controls guidance (#61770) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> Co-authored-by: ElizabethBarrord Co-authored-by: Joe Clark <31087804+jc-clark@users.noreply.github.com> --- content/billing/concepts/budgets-and-alerts.md | 12 ++++++++++-- content/billing/concepts/cost-centers.md | 9 +++++++++ content/billing/how-tos/products/use-cost-centers.md | 3 ++- content/billing/how-tos/set-up-budgets.md | 5 +++++ content/billing/tutorials/control-costs-at-scale.md | 10 +++++++++- .../billing/budgets-for-usage-based-billing.md | 6 ++++++ .../budgets/optimizing-your-budget-configuration.md | 5 +++++ data/reusables/billing/included-usage-controls.md | 1 + 8 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 data/reusables/billing/included-usage-controls.md diff --git a/content/billing/concepts/budgets-and-alerts.md b/content/billing/concepts/budgets-and-alerts.md index 69bf45c8c224..a8f3715cbeae 100644 --- a/content/billing/concepts/budgets-and-alerts.md +++ b/content/billing/concepts/budgets-and-alerts.md @@ -25,15 +25,23 @@ Each budget has a type and a scope that define which paid use contributes to spe * **Type**: Defines which metered product or SKU is measured. * **Scope**: Defines whether the budget applies to the whole account, or to a subset of repositories, organizations, cost centers (enterprise only), or users. User-scoped budgets are currently only supported for {% data variables.product.prodname_copilot_short %} {% data variables.product.prodname_ai_credits_short %}, and have three scopes: + * **Universal**: applies to all licensed users by default * **Cost center user-level**: applies to every user in a cost center * **Individual**: overrides the above for specific users -For more information about how user-level budgets work and how they interact with other budget controls, see [AUTOTITLE](/copilot/concepts/billing/budgets-for-usage-based-billing). +For {% data variables.product.prodname_copilot_short %}, cost centers can also have included usage controls, which cap how much of the shared {% data variables.product.prodname_ai_credits_short %} pool a cost center can use before metered usage begins. This is a separate control from the budgets and the included usage alerts described below. See [AUTOTITLE](/copilot/concepts/billing/budgets-for-usage-based-billing#included-usage-controls-for-cost-centers). + +## Roles and access for budgets + +Enterprise owners and billing managers can create and edit enterprise and cost center budgets, and they receive budget alerts by default. Organization owners can set budgets for their own organization, and personal account owners can set budgets for their own account. Each of these roles can view usage for the scopes they manage. ## Budget alerts -You can enable alerts for budgets to receive emails when usage reaches 75%, 90%, and 100% of the budget amount. Emails are sent to account owners and billing managers by default. Additional recipients can be added as needed. +You can enable alerts for budgets to be notified when usage reaches 75%, 90%, and 100% of the budget amount. Alerts are shown in the {% data variables.product.github %} UI and sent by email. By default, alerts go to account owners and billing managers, and you can add additional recipients as needed. Budget alerts are available for budgets scoped to your enterprise, a cost center, an organization, or a repository. + +> [!NOTE] +> Alerting for user-level budgets is not consistently available in all scenarios. Don't rely on user-level budget alerts as your only signal, also monitor usage at the cost center or enterprise level. ## Included usage alerts diff --git a/content/billing/concepts/cost-centers.md b/content/billing/concepts/cost-centers.md index 37f7b6093315..70bf2ded608d 100644 --- a/content/billing/concepts/cost-centers.md +++ b/content/billing/concepts/cost-centers.md @@ -29,6 +29,14 @@ To get started with cost centers, see [AUTOTITLE](/billing/tutorials/control-cos For more details, see [AUTOTITLE](/billing/reference/cost-center-allocation). +## Controlling included usage + +For cost centers that contain {% data variables.product.prodname_copilot_short %} licenses, you can apply included usage controls in addition to budgets. + +{% data reusables.billing.included-usage-controls %} + +This is separate from a cost center budget, which caps metered charges only after the shared pool of {% data variables.product.prodname_ai_credits_short %} is exhausted. For more information, see [AUTOTITLE](/copilot/concepts/billing/budgets-for-usage-based-billing#included-usage-controls-for-cost-centers). + ## Cost center limitations * The maximum number of active cost centers per enterprise is 500. @@ -36,3 +44,4 @@ For more details, see [AUTOTITLE](/billing/reference/cost-center-allocation). * A maximum of 50 resources can be added to or removed from a cost center at a time. * Azure subscriptions can only be added to or removed from cost centers through the UI. * Outside collaborators or unaffiliated users can only be added to cost centers via the cost center API. For more information, see [AUTOTITLE](/billing/tutorials/control-costs-at-scale#add-resources-to-the-cost-center). +* You can't set different budgets for teams within the same cost center. A budget applies to the whole cost center, so if two teams need separate budgets, create a separate cost center for each. Separate cost centers can share the same Azure billing identity. diff --git a/content/billing/how-tos/products/use-cost-centers.md b/content/billing/how-tos/products/use-cost-centers.md index 220017e565a4..077f6eabf648 100644 --- a/content/billing/how-tos/products/use-cost-centers.md +++ b/content/billing/how-tos/products/use-cost-centers.md @@ -36,7 +36,8 @@ When you create a cost center, you can add **organizations**, **repositories**, 1. If your account is billed to Azure, you have the option to add an Azure ID. Your credentials will be verified against Azure to ensure the Azure IDs associated to your account are available. 1. Under **Resources**, select the organizations, repositories, users, and/or enterprise teams that will be a part of the cost center. - >[!NOTE] A resource (organization, repository, or user) can only be assigned to one cost center at a time. If you add a resource that belongs to a different cost center, it will be moved to the new cost center and you will be notified. + > [!NOTE] + > A resource (organization, repository, user, or enterprise team) can only be assigned to one cost center at a time. If you add a resource that belongs to a different cost center, it will be moved to the new cost center and you will be notified. {% data reusables.billing.cost-center-create-button %} diff --git a/content/billing/how-tos/set-up-budgets.md b/content/billing/how-tos/set-up-budgets.md index 86ea0854df4f..b157779e5555 100644 --- a/content/billing/how-tos/set-up-budgets.md +++ b/content/billing/how-tos/set-up-budgets.md @@ -149,6 +149,11 @@ You can edit or delete a budget at any time, but you cannot change the scope of 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. +### Controlling included usage for a cost center + +Budgets cap metered charges after the shared pool of {% data variables.product.prodname_ai_credits_short %} is exhausted. To cap how much of the pool a cost center can use **before** the metered phase, use an included usage control. {% data variables.product.github %} sets the cap automatically based on the licenses assigned to the cost center, and you choose whether members are blocked or roll into paid overage when the cap is reached. See [AUTOTITLE](/copilot/concepts/billing/budgets-for-usage-based-billing#included-usage-controls-for-cost-centers) and [AUTOTITLE](/billing/concepts/cost-centers). +> [!NOTE] +> Enabling included usage controls does not retroactively redistribute the shared {% data variables.product.prodname_ai_credits_short %} enterprise pool. After the setting is enabled, users in the cost center share only the included {% data variables.product.prodname_ai_credits_short %} funded by licenses attributed to that cost center. When the setting is disabled, users in the cost center can continue drawing from the shared enterprise pool. ## Next steps For {% data variables.product.prodname_copilot_short %}-specific budget guidance under usage-based billing, including user-level budgets and configuration scenarios, see [AUTOTITLE](/copilot/concepts/billing/budgets-for-usage-based-billing) and [AUTOTITLE](/copilot/tutorials/budgets/optimizing-your-budget-configuration). diff --git a/content/billing/tutorials/control-costs-at-scale.md b/content/billing/tutorials/control-costs-at-scale.md index 14d08085307d..574ddf0fadd7 100644 --- a/content/billing/tutorials/control-costs-at-scale.md +++ b/content/billing/tutorials/control-costs-at-scale.md @@ -106,7 +106,7 @@ Create one budget for each product, SKU, or group of SKUs that you want to contr ### Review existing budgets for conflicts -After creating your cost center budgets, check existing enterprise-wide budgets to ensure they don't conflict with or override your new cost center budgets. +After creating your cost center budgets, check existing enterprise-wide budgets to ensure they don't conflict with or override your new cost center budgets. When budgets overlap, the most restrictive one applies, so a low budget at a higher scope can block a cost center before its own budget is reached. Navigate to the "Budgets and alerts" page. You'll see two lists of budgets: @@ -121,6 +121,14 @@ Review whether any enterprise budgets apply to the same products or SKUs as your Filter the other budgets list to show a scope of **Cost Centers**. You should see your new cost center with a row for each budget you created. Initially, usage will be near zero, but within a few days you'll see costs accumulating as users and repositories consume products beyond the allowance in their plan. +### Troubleshooting budget conflicts + +Keep these limits in mind as you combine budgets across scopes: + +* **Budgets overlap, and the most restrictive one applies.** A user can be covered by an individual, cost center, organization, and enterprise budget at the same time. Whichever has the least headroom remaining blocks them first. If someone is blocked unexpectedly, review every scope that applies to them. For the full evaluation order, see [AUTOTITLE](/copilot/concepts/billing/budgets-for-usage-based-billing). +* **You can't set different budgets for teams in the same cost center.** A budget applies to the whole cost center, not to teams within it. If two teams need separate budgets, create a separate cost center for each. Separate cost centers can still share the same Azure billing identity. +* **Budgets don't add up across levels.** An enterprise budget isn't the sum of your cost center budgets, and raising one doesn't raise another. When you change a budget at one level, reconcile the totals at the others yourself. + ## 4. Create a cost center with the REST API Now that you understand how to create cost centers in the user interface, you can explore the REST API to see how cost centers can be created programmatically. Understanding the API helps you evaluate whether automation would benefit your organization. diff --git a/content/copilot/concepts/billing/budgets-for-usage-based-billing.md b/content/copilot/concepts/billing/budgets-for-usage-based-billing.md index d9679b8962f7..3863735c73ec 100644 --- a/content/copilot/concepts/billing/budgets-for-usage-based-billing.md +++ b/content/copilot/concepts/billing/budgets-for-usage-based-billing.md @@ -46,6 +46,12 @@ When a cost center's budget is exhausted, only users in that cost center are blo > [!NOTE] > A cost center budget is different from a cost center user-level budget. A cost center budget caps the team's **total metered charges** after the pool is exhausted. A cost center user-level budget caps **each member's individual consumption** across both the pool and metered phases, the same way other user-level budgets do. You can apply both to the same cost center. +### Included usage controls for cost centers + +{% data reusables.billing.included-usage-controls %} + +Unlike a cost center budget, which caps metered charges only after the shared pool of {% data variables.product.prodname_ai_credits_short %} is exhausted, an included usage control limits how much of the pool a cost center can draw **before** the metered phase begins. To enable it, see [AUTOTITLE](/billing/how-tos/set-up-budgets). + ### Organization budget An organization budget caps metered charges for users who receive their {% data variables.product.prodname_copilot_short %} license through that organization. Like cost center budgets, it is only active after the shared pool is exhausted. diff --git a/content/copilot/tutorials/budgets/optimizing-your-budget-configuration.md b/content/copilot/tutorials/budgets/optimizing-your-budget-configuration.md index 68a3024cad17..37b7d4480fad 100644 --- a/content/copilot/tutorials/budgets/optimizing-your-budget-configuration.md +++ b/content/copilot/tutorials/budgets/optimizing-your-budget-configuration.md @@ -22,6 +22,8 @@ Before optimizing your budget configuration, make sure you understand how budget If you haven't set up budgets yet, start with [AUTOTITLE](/copilot/tutorials/budgets/getting-started-with-budget-controls) to get the basics in place, then come back to this guide to optimize your configuration. +To decide between a simple setup and cost-center-based controls before you fine-tune, see the basic and advanced approaches in [AUTOTITLE](/billing/tutorials/control-costs-at-scale#choose-your-approach-basic-or-advanced-spend-controls). + ## Sizing your budgets The relationship between user-level budgets (ULB) and other budgets is the most common source of unexpected blocking. If user-level budgets collectively allow more consumption than the shared pool provides, the difference becomes metered charges, and your budgets need to be high enough to cover that gap. @@ -34,6 +36,8 @@ Here's how to estimate: If you also use cost center budgets, the sum of your cost center budgets and your enterprise budget should cover the gap. The enterprise budget applies to users not assigned to a cost center. +If you want each cost center to stay within the {% data variables.product.prodname_ai_credits_short %} its own licenses fund, apply an included usage control to that cost center. This automatically caps the team's draw from the shared pool, so heavy use by one team doesn't consume another team's share before metered budgets apply. See [AUTOTITLE](/copilot/concepts/billing/budgets-for-usage-based-billing#included-usage-controls-for-cost-centers). + > [!TIP] > Whenever you raise user-level budgets, re-check this calculation. Raising ULBs without raising the enterprise budget can cause the enterprise budget to block users before they reach their individual budgets. @@ -81,6 +85,7 @@ This is the simplest configuration and a good starting point for most enterprise **Configuration:** * Create **cost centers** scoped to each organization. See [AUTOTITLE](/billing/how-tos/products/use-cost-centers). +* Apply an **included usage control** to each cost center so a business unit can't draw more of the shared pool than the included {% data variables.product.prodname_ai_credits_short %} its own licenses fund, choosing whether to block or allow paid overage at the cap. * Set a **cost center budget** for each business unit. * Set an **enterprise budget** as a failsafe for any users not assigned to a cost center. * Enable **"Stop usage when budget limit is reached"** on all budgets. diff --git a/data/reusables/billing/included-usage-controls.md b/data/reusables/billing/included-usage-controls.md new file mode 100644 index 000000000000..7d40bd2814b5 --- /dev/null +++ b/data/reusables/billing/included-usage-controls.md @@ -0,0 +1 @@ +Included usage controls cap a cost center's included usage to the amount of {% data variables.product.prodname_ai_credits_short %} funded by the licenses assigned to that cost center. {% data variables.product.github %} sets this cap automatically and adjusts it as licensed members are added or removed, you don't enter an amount. When a cost center reaches its cap, you choose whether its members are blocked or their additional usage continues as paid overage. From 7886060a22325830864522233ea8e810a9c1a87c Mon Sep 17 00:00:00 2001 From: Kevin Heis Date: Thu, 2 Jul 2026 08:37:32 -0700 Subject: [PATCH 3/5] Deduplicate reused titled types in REST schema summaries (#62012) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/article-api/lib/summarize-schema.ts | 80 +++++++++++++--- .../tests/summarize-schema.test.ts | 91 +++++++++++++++++++ 2 files changed, 158 insertions(+), 13 deletions(-) diff --git a/src/article-api/lib/summarize-schema.ts b/src/article-api/lib/summarize-schema.ts index 68a5c15360e0..8ae39784399b 100644 --- a/src/article-api/lib/summarize-schema.ts +++ b/src/article-api/lib/summarize-schema.ts @@ -60,11 +60,29 @@ function renderTypeConstraints(schema: JsonSchema): string { return parts.join(', ') || 'object' } +// When a titled object type has already been fully expanded once in a schema, +// later occurrences are rendered as a short "(see above)" reference instead of +// being re-expanded. Large REST response schemas reuse shared types (e.g. +// `Simple User` recurs dozens of times), so this keeps output compact and fast +// to render. Returns true if the caller should emit a reference; marks the +// title as seen when it is about to be expanded for the first time. +function shouldReference( + title: string | undefined, + canExpand: boolean, + seen: Set, +): boolean { + if (!canExpand || !title) return false + if (seen.has(title)) return true + seen.add(title) + return false +} + function renderCompositionVariants( keyword: string, variants: JsonSchema[], indent: number, depth: number, + seen: Set, ): string { const prefix = ' '.repeat(indent) const label = keyword.replace('Of', ' of') @@ -72,9 +90,14 @@ function renderCompositionVariants( for (const variant of variants) { const name = variant.title || renderTypeConstraints(variant) + const canExpand = depth < MAX_DEPTH && Boolean(variant.properties) + if (shouldReference(variant.title, canExpand, seen)) { + lines.push(`${prefix} * **${name}** (see above)`) + continue + } lines.push(`${prefix} * **${name}**`) - if (depth < MAX_DEPTH && variant.properties) { - const nested = renderProperties(variant, indent + 2, depth + 1) + if (canExpand) { + const nested = renderProperties(variant, indent + 2, depth + 1, seen) if (nested) lines.push(nested) } } @@ -86,6 +109,7 @@ function renderProperties( schema: JsonSchema, indent: number, depth: number, + seen: Set, requiredFields?: string[], ): string { const props = schema.properties || {} @@ -103,9 +127,14 @@ function renderProperties( lines.push(`${prefix}* \`${name}\`: ${reqStr}${label}:`) for (const variant of prop[compositionKey]!) { const vName = variant.title || renderTypeConstraints(variant) + const canExpand = depth < MAX_DEPTH && Boolean(variant.properties) + if (shouldReference(variant.title, canExpand, seen)) { + lines.push(`${prefix} * **${vName}** (see above)`) + continue + } lines.push(`${prefix} * **${vName}**`) - if (depth < MAX_DEPTH && variant.properties) { - const nested = renderProperties(variant, indent + 2, depth + 1) + if (canExpand) { + const nested = renderProperties(variant, indent + 2, depth + 1, seen) if (nested) lines.push(nested) } } @@ -118,12 +147,17 @@ function renderProperties( if (propType === 'array' && prop.items) { const itemTitle = prop.items.title - if (prop.items.properties && depth < MAX_DEPTH) { + const canExpand = Boolean(prop.items.properties) && depth < MAX_DEPTH + if (shouldReference(itemTitle, canExpand, seen)) { + lines.push( + `${prefix}* \`${name}\`: ${reqStr}array of \`${itemTitle}\`${isNullable ? ' or null' : ''} (see above)`, + ) + } else if (canExpand) { const label = itemTitle ? `array of \`${itemTitle}\`${isNullable ? ' or null' : ''}` : `array of objects${isNullable ? ' or null' : ''}` lines.push(`${prefix}* \`${name}\`: ${reqStr}${label}:`) - lines.push(renderProperties(prop.items, indent + 1, depth + 1)) + lines.push(renderProperties(prop.items, indent + 1, depth + 1, seen)) } else { lines.push( `${prefix}* \`${name}\`: ${reqStr}array of ${renderTypeConstraints(prop.items)}${isNullable ? ' or null' : ''}`, @@ -132,8 +166,12 @@ function renderProperties( } else if (prop.properties && depth < MAX_DEPTH) { // renderTypeConstraints handles string[] types (e.g. ["object","null"] → "object or null") const label = prop.title ? `\`${prop.title}\`` : renderTypeConstraints(prop) - lines.push(`${prefix}* \`${name}\`: ${reqStr}${label}:`) - lines.push(renderProperties(prop, indent + 1, depth + 1)) + if (shouldReference(prop.title, true, seen)) { + lines.push(`${prefix}* \`${name}\`: ${reqStr}${label} (see above)`) + } else { + lines.push(`${prefix}* \`${name}\`: ${reqStr}${label}:`) + lines.push(renderProperties(prop, indent + 1, depth + 1, seen)) + } } else { // renderTypeConstraints handles string[] types (e.g. ["string","null"] → "string or null") lines.push(`${prefix}* \`${name}\`: ${reqStr}${renderTypeConstraints(prop)}`) @@ -151,10 +189,15 @@ function renderProperties( export function summarizeSchema(schema: JsonSchema): string { if (!schema || typeof schema !== 'object') return '' + // Tracks titled object types already expanded once in this schema. Later + // occurrences are rendered as a "(see above)" reference to keep output + // compact and fast to render (shared types can recur dozens of times). + const seen = new Set() + // Handle top-level composition for (const keyword of ['oneOf', 'anyOf', 'allOf'] as const) { if (schema[keyword]) { - return renderCompositionVariants(keyword, schema[keyword]!, 0, 0) + return renderCompositionVariants(keyword, schema[keyword]!, 0, 0, seen) } } @@ -181,9 +224,14 @@ export function summarizeSchema(schema: JsonSchema): string { const lines = [`Array${constraintStr} of ${titlePart}objects${nullSuffix}: ${label}:`] for (const variant of items[compositionKey]!) { const name = variant.title || renderTypeConstraints(variant) + const canExpand = Boolean(variant.properties) + if (shouldReference(variant.title, canExpand, seen)) { + lines.push(` * **${name}** (see above)`) + continue + } lines.push(` * **${name}**`) - if (variant.properties) { - const nested = renderProperties(variant, 2, 1) + if (canExpand) { + const nested = renderProperties(variant, 2, 1, seen) if (nested) lines.push(nested) } } @@ -193,7 +241,8 @@ export function summarizeSchema(schema: JsonSchema): string { if (items.properties) { const label = itemTitle ? `\`${itemTitle}\`` : 'objects' const nullSuffix = isNullable ? ' or null' : '' - return `Array${constraintStr} of ${label}${nullSuffix}:\n${renderProperties(items, 1, 1)}` + if (itemTitle) seen.add(itemTitle) + return `Array${constraintStr} of ${label}${nullSuffix}:\n${renderProperties(items, 1, 1, seen)}` } return `Array${constraintStr} of ${renderTypeConstraints(items)}${isNullable ? ' or null' : ''}` @@ -201,7 +250,12 @@ export function summarizeSchema(schema: JsonSchema): string { // Handle top-level object if (schema.properties) { - return renderProperties(schema, 0, 0) + // Note: we deliberately do NOT pre-mark schema.title here. Unlike the + // array-items case above, a top-level object emits no visible titled + // header, so pre-marking would make a self-referential property render a + // dangling "(see above)" pointing at nothing. Letting it expand one + // depth-bounded level is correct and clearer. + return renderProperties(schema, 0, 0, seen) } return renderTypeConstraints(schema) diff --git a/src/article-api/tests/summarize-schema.test.ts b/src/article-api/tests/summarize-schema.test.ts index c468db5ea466..36dacf578afd 100644 --- a/src/article-api/tests/summarize-schema.test.ts +++ b/src/article-api/tests/summarize-schema.test.ts @@ -197,3 +197,94 @@ describe('summarizeSchema — OAS 3.1 nullable handling', () => { expect(summarizeSchema('not an object')).toBe('') }) }) + +describe('summarizeSchema — repeated titled type deduplication', () => { + type Schema = Parameters[0] + const user: Schema = { + type: 'object', + title: 'Simple User', + properties: { + login: { type: 'string' }, + id: { type: 'integer' }, + }, + } + + it('expands a titled type once then references it with "(see above)"', () => { + const schema: Schema = { + type: 'object', + properties: { + actor: user, + assignee: user, + assigner: user, + }, + } + const result = summarizeSchema(schema) + // Expanded exactly once + expect(result.match(/`login`/g)?.length).toBe(1) + // Two later references + expect(result.match(/\(see above\)/g)?.length).toBe(2) + expect(result).toContain('`assignee`: `Simple User` (see above)') + }) + + it('references repeated titled variants inside a composition', () => { + const schema: Schema = { + type: 'array', + items: { + anyOf: [ + { + type: 'object', + title: 'Event A', + properties: { actor: user, target: user }, + }, + { + type: 'object', + title: 'Event B', + properties: { actor: user }, + }, + ], + }, + } + const result = summarizeSchema(schema) + // Simple User expanded once across the whole schema + expect(result.match(/`login`/g)?.length).toBe(1) + expect((result.match(/\(see above\)/g) || []).length).toBeGreaterThanOrEqual(2) + }) + + it('does not reference untitled (anonymous) objects', () => { + const anon: Schema = { + type: 'object', + properties: { a: { type: 'string' } }, + } + const schema: Schema = { + type: 'object', + properties: { first: anon, second: anon }, + } + const result = summarizeSchema(schema) + expect(result).not.toContain('(see above)') + expect(result.match(/`a`/g)?.length).toBe(2) + }) + + it('expands a self-referential top-level object before referencing it (no dangling ref)', () => { + // A top-level object emits no visible titled header. With the top-level + // title NOT pre-marked, the first occurrence of the recursive property + // expands visibly, so any deeper "(see above)" points to that expansion + // rather than a header that was never rendered. + const node: Schema = { + type: 'object', + title: 'Category', + properties: { + name: { type: 'string' }, + }, + } + node.properties!.parent = node + const result = summarizeSchema(node) + // `Category` is expanded at least once (its `name` field is visible) + // before the recursive reference appears. + const firstExpansion = result.indexOf('`name`') + const firstReference = result.indexOf('(see above)') + expect(firstExpansion).toBeGreaterThanOrEqual(0) + if (firstReference >= 0) { + expect(firstExpansion).toBeLessThan(firstReference) + } + }) +}) From 20370bf5840beb15304c04845bc5b0bd985502d5 Mon Sep 17 00:00:00 2001 From: Laura Coursen Date: Thu, 2 Jul 2026 16:58:11 +0100 Subject: [PATCH 4/5] Add always-on content guidelines instructions (FY26 H2) (#61898) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../content-guidelines.instructions.md | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 .github/instructions/content-guidelines.instructions.md diff --git a/.github/instructions/content-guidelines.instructions.md b/.github/instructions/content-guidelines.instructions.md new file mode 100644 index 000000000000..0efb2d4d2344 --- /dev/null +++ b/.github/instructions/content-guidelines.instructions.md @@ -0,0 +1,60 @@ +--- +applyTo: "content/**,data/reusables/**" +--- + +# Content guidelines for docs.github.com + +**When to use**: Writing, editing, or reviewing documentation articles and reusable prose. These are strategic content rules: what to write and how to focus an article. + +When asked to work on one part of a larger article, read the whole article first so you can judge whether it meets these guidelines as a whole. + +**How to apply these guidelines**: Treat them as strategic suggestions to weigh per article, not mechanical rules to enforce. The right emphasis depends on the article's content type (procedural, conceptual, or reference), so use judgment and stay silent when a guideline does not cleanly apply, rather than flagging or rewriting reflexively. + +## Keep only essential content + +The strategic priority is simplification: create less content and remove content that is not essential, so readers can navigate higher-value content more easily. Flag content to trim or remove by asking: + +* Does it serve a large or high-value audience, rather than an edge case the company does not prioritize? +* Does it help people use GitHub the way we want them to, rather than documenting every possible use? +* Would a typical internet user figure this out on their own by exploring the UI? +* Is the information presented at the moment the reader actually needs it? + +## Intros: pull people in + +This section applies mainly to the `intro` frontmatter field and, for conceptual articles, section openings. + +* Open with the value the reader gets, and the product that delivers it, rather than a restatement of the task or a bare feature name. Technical detail is not bad and belongs in the article; it just should not be the first thing the reader sees when a value-led opening is possible. +* Do not repeat the wording of the title. +* Do not start with "Learn how to..."; it buries the value. +* When conceptual and procedural articles cover the same topic, differentiate them through sentence structure. Conceptual describes what the thing is and why it matters ("{% data variables.product.prodname_copilot %} is an AI coding assistant that helps you write code faster."). Procedural describes what the reader will do and the value they get ("Start using {% data variables.product.prodname_copilot %} to write code faster."). + +Examples of strong intros by content type: + +* **Conceptual** ("Larger runners"): "Organize and govern your workflows with larger runners using runner groups, concurrency policies, and granular access controls." +* **Procedural** ("Running jobs on larger runners"): "Route jobs to the right machines by using runner groups and workflow labels." +* **Reference** ("Supported AI models in {% data variables.product.prodname_copilot %}"): "Identify which AI models are supported in {% data variables.product.prodname_copilot %} for each client and plan." + +## Drive people to the product + +* Every article should move the reader to try or use the product, directly or indirectly. Even reference articles do this: readers consult them in order to use the product, so the support is built in and a separate CTA is often unnecessary. +* Only include a CTA link when it genuinely makes the reader's task easier, for example by saving them the time of navigating to a settings page themselves. Do not force a CTA; if none would genuinely help the reader, do not add one. Avoid turning articles into clickbait. +* A CTA can take several forms, for example a direct link to the relevant product or feature, a Copilot prompt the reader can run, or a link to start a free trial. +* Only link to a URL that is the same for everyone on that version. Do not add a CTA when the in-product URL must include an enterprise, organization, or repository name (for example, `https://github.com/ORG/REPO/settings/copilot/code_review`), because the link cannot be made to work for all readers. +* Procedural articles: include a CTA wherever one genuinely helps, as directly as possible. +* Conceptual articles: point the reader to exactly one clear next step, usually a link to the related procedure (for example, an "About pull requests" article points to "Creating a pull request"). Place it where the reader is ready to act, typically at the end of the article. + +## Energy and tone + +These apply to the prose in an article (intros and explanatory text), not to structural elements like tables, procedural steps, or code. + +* Lead with value and real-life impact over technical detail. +* Connect features to the reader's real-life problems to generate genuine interest. +* Use plain, friendly, approachable language. Avoid marketing jargon, buzzwords, and inflated adjectives. + +## Scannability + +* Give each article exactly one purpose, regardless of content type. That purpose may be physical (e.g., enabling a setting), conceptual (e.g., building a mental model of what a feature does and why it matters, choosing between two options), or referential (e.g., determining which AI models are available to the reader). Include only information central to that purpose for most readers. +* Write for the one reader scenario the article targets, for example a particular deployment configuration (GHEC with EMUs vs. Classic) or a particular type of reader (an open source maintainer vs. an enterprise developer). When the article has a content design plan, target the audience it identifies rather than inventing one; for small edits without a plan, follow the audience the existing article is clearly written for. Do not branch content to serve multiple audiences; readers in other scenarios can adapt the guidance. The exception is version differences: when in-article `{% ifversion %}` branching is genuinely required (see the versioning rules in `content.instructions.md`), it is not a scannability violation. +* Ruthlessly minimize links. Only link when you actively want most readers to follow it in the ideal scenario. No "just in case" links. Links that build a logical user journey are exactly the kind to keep, for example a Prerequisites link that sends the reader to setup they need first, or a Next steps link that points them to the natural follow-on task. +* Ruthlessly minimize alerts (notes, tips, warnings): more than one per article should be exceptional, and crowding several into one section is worse than spreading them out. Keep each to 1-2 sentences. Don't open an article or section with an alert unless the reader needs it before the surrounding content. Prefer folding a useful alert into the prose over deleting it, but first apply this test: if the reader must actually notice it to use the page correctly, keep it as an alert (don't fold or count it), since folding defeats its purpose. This covers, for example, critical warnings, plan or availability constraints, public preview notices, and cues that orient the reader to how the page works or which content applies to them. +* Prefer short sentences and paragraphs, generous white space, and formatting like bold and tables to highlight key information. Use a table only for genuinely complex data that belongs in a tabular format; do not add a table that repeats information already stated more clearly in prose. From 0406c77611e82212d2655e4da608fb6a07425774 Mon Sep 17 00:00:00 2001 From: "vault-valet[bot]" <157417028+vault-valet[bot]@users.noreply.github.com> Date: Thu, 2 Jul 2026 13:28:52 -0400 Subject: [PATCH 5/5] [Vault-Valet][docs-internal][ci] Updating the `secrets` secrets file (#62043) Co-authored-by: vault-valet[bot] <157417028+vault-valet[bot]@users.noreply.github.com> Co-authored-by: steves Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- config/moda/secrets/ci/secrets.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/config/moda/secrets/ci/secrets.yml b/config/moda/secrets/ci/secrets.yml index 0a481b8efa0a..b2c36935e4e8 100644 --- a/config/moda/secrets/ci/secrets.yml +++ b/config/moda/secrets/ci/secrets.yml @@ -7,3 +7,21 @@ secrets: playbook: '' externally_usable: true kind: latest_at_deployment_start + DOCS_BOT_APP_CLIENT_ID: + owner: docs-engineering + type: github_app + externally_usable: false + playbook: '' + kind: latest_at_deployment_start + DOCS_BOT_APP_ID: + owner: docs-engineering + type: github_app + externally_usable: false + playbook: '' + kind: latest_at_deployment_start + DOCS_BOT_APP_PRIVATE_KEY: + owner: docs-engineering + type: github_app + externally_usable: false + playbook: '' + kind: latest_at_deployment_start