GitHub Copilot AI Credits Optimization — Module 1 Hands-On Lab Guide
Duration: ~43 minutes of hands-on exercises (across a ~115-minute module)
Format: Step-by-step lab exercises with worksheets
Audience: Enterprise/org owners, billing managers, FinOps leaders, platform admins, engineering leaders
Roles used throughout: Admin (drives read-only inspection of pre-existing sanitized sandbox objects), Observer (completes worksheets, asks questions, compares results)
Lab Overview
This lab guide contains all the hands-on exercises from Module 1: Administration & Budget Guardrails, part of the GitHub Copilot AI Credits Optimization curriculum. Each lab maps to a workshop section and builds on the previous one. Complete them in order.
This module — and this lab guide — can be delivered standalone. It does not depend on the labs for Module 2 (Developer Token Optimization Patterns, see the Module 2 workshop) or Module 3 (FinOps Reporting & Chargeback/Showback, see the Module 3 workshop). For the complete learning path, see the full curriculum overview.
Important: No lab in this guide requires making a live paid AI request or saving a configuration change. The Lab 3 Admin path is strictly read-only: participants may inspect pre-existing sanitized sandbox objects and form labels, but must not change selectors, type values, create or assign resources, toggle controls, save, or download. All design decisions are recorded in the worksheet. A live hard-stop budget can immediately block production users.
Sandbox recovery rule: Before participant access, confirm the staged sandbox contains no production users, record the staged baseline for every object participants will inspect, and name an authorized recovery owner. If any UI state changes unexpectedly, stop the Admin path, do not self-repair, notify that owner, and switch participants to the Simulation path. Only the authorized owner restores and verifies the recorded baseline.
Prerequisites
| Requirement | Details |
|---|---|
| GitHub Account | Member of the organization/enterprise used for this workshop |
| Copilot License | Business or Enterprise (this workshop does not cover legacy Pro/Pro+ premium-request billing) |
| Admin access (recommended, not required) | Organization owner, enterprise owner, or billing manager role unlocks the read-only sandbox inspection in Section 3 |
| Web browser | For the Billing & Licensing settings and AI usage dashboard |
Choosing Your Path
Every lab in this guide has an Admin path (read-only inspection of facilitator-designated sanitized sandbox objects) and a Simulation path (paper worksheet, driven by the Observer role). If you do not have organization/enterprise billing access, use the Simulation path. You will still produce a complete worksheet artifact either way, and the two roles are designed to compare notes at the end of each lab.
Setup
- Confirm with the facilitator that the staged sandbox contains no production users, the baseline is recorded, and an authorized recovery owner is named.
- Choose the Admin path only if you can open that sandbox/test enterprise or organization; otherwise choose the Simulation path.
- Admin-path participants should confirm they can open Billing & Licensing and the facilitator-designated pre-existing sanitized cost-center and budget objects. Do not change selectors, type, create, assign, toggle, save, or download.
- Simulation-path participants should open this guide and prepare a copy of the Budget Design Worksheet in Lab 3.
- If any UI state changes unexpectedly, stop, do not self-repair, notify the authorized recovery owner, and switch to Simulation while that owner restores and verifies the recorded baseline.
Setup checkpoint:
- ✅ Every participant has selected the Admin or Simulation path
- ✅ Admin-path participants can open the sandbox/test Billing & Licensing settings and have confirmed there are no production users, the staged baseline is recorded, and the authorized recovery owner is known
- ✅ Simulation-path participants can edit or print the worksheet
Lab 1: Included-Credit Math Check (5 min)
Workshop Section: 1 — AI Credits Billing Fundamentals
Roles
- Admin and Observer work together; either role can drive the calculation
Reference — Included Credits
| Plan | Standard (effective Sep 1, 2026) | Historical promo (Jun 1 – Sep 1, 2026) |
|---|---|---|
| Business | 1,900/user/month | 3,000/user/month |
| Enterprise | 3,900/user/month | 7,000/user/month |
Steps
Participant instruction: Complete the exercise, then stop before the Answer Key heading. Do not open it until the facilitator begins the debrief.
Using the table above, calculate the total monthly pooled credits for a fictional 500-user Copilot Business organization, once during the standard period and once during the promotional period:
- Standard period total pool: 500 × ______ = ______
- Promotional period total pool: 500 × ______ = ______
- Difference between the two totals (in credits, and in USD at $0.01/credit)
Answer Key — open only when the facilitator begins the debrief
Answer Key
- Standard period total pool: 500 × 1,900 = 950,000 credits
- Promotional period total pool: 500 × 3,000 = 1,500,000 credits
- Difference: 1,500,000 − 950,000 = 550,000 credits = 550,000 × $0.01 = $5,500
Success Criteria
- ✅ You calculated the standard-period pool as 950,000 credits
- ✅ You calculated the promotional-period pool as 1,500,000 credits
- ✅ You can state the dollar-value difference ($5,500) and why historical promotional-period baselines must be normalized for post-September 1 planning
Lab 2: Scenario Trace — The Billing Flow (8 min)
Workshop Section: 2 — Budget Controls & Billing Flow
Roles
- Admin and Observer work together; either role can lead the trace out loud
Reference Diagram
┌──────────────┐ ┌──────────────┐ ┌────────────────────────┐ ┌──────────────┐ ┌────────────────────────┐
│ User request │►│ ULB check │►│ Included credits check │►│ Paid-usage │►│ All applicable spending│
│ │ │ │ │ Enterprise pool or │ │ policy │ │ budgets / hard stops │
│ │ │ │ │ enabled cost-center cap│ │ │ │ │
└──────────────┘ └──────────────┘ └────────────────────────┘ └──────────────┘ └────────────────────────┘
- ULB check — most specific active ULB (individual > cost-center > universal). A $0 or exhausted ULB always blocks—no fallback.
- Included credits check — with the cost center's included usage control disabled, the user draws from the shared enterprise pool; with it enabled, the user draws only from that cost center's automatically calculated cap.
- Paid-usage policy — when the applicable included capacity is unavailable, configured paid-usage behavior determines whether the request is blocked or may proceed to metered usage.
- All applicable spending budgets / hard stops — metered usage can count toward multiple cost-center, organization, and enterprise budgets. Any exhausted applicable budget with hard stop enabled blocks; otherwise its charges continue and alerts fire. For an excluded cost center, the enterprise budget neither counts nor blocks its metered charges; only that cost center's own spending budget caps them.
Steps
Participant instruction: Complete the exercise, then stop before the Answer Key heading. Do not open it until the facilitator begins the debrief.
For each scenario, write down where the request is blocked (if at all) and why:
- A user with a $0 individual ULB sends a Chat prompt. The org pool still has 40% of its credits remaining.
- A user with no individual override sends a prompt. Their applicable included capacity is fully exhausted, and the enterprise has disabled the "AI credits paid usage" policy.
- A user with no individual override sends a prompt. Their applicable included capacity is exhausted, paid usage is enabled, and the applicable enterprise budget has hit 100% with hard stop not enabled.
- Same as #3, but hard stop is enabled on the enterprise budget.
Answer Key — open only when the facilitator begins the debrief
Answer Key
- Blocked at Step 1 (user-level budget check) — a $0 ULB always hard-stops the user regardless of pool state; there is no fallback.
- Blocked at the paid-usage policy check — once the applicable included capacity is exhausted, disabled paid usage blocks further usage until the next billing cycle.
- Allowed (metered charge applied) — the enterprise budget is at 100% but has no hard stop enabled, so it functions as an alert only; usage continues and is billed as overage.
- Blocked at Step 4 (applicable spending budgets) — assuming the user's metered usage participates in the enterprise budget, its enabled hard stop blocks further metered usage. Any other exhausted applicable hard-stop budget could also block.
Success Criteria
- ✅ You correctly identified Scenario 1 as blocked at the user-level budget step, regardless of pool state
- ✅ You correctly identified Scenario 2 as blocked at the paid usage policy step
- ✅ You correctly identified Scenario 3 as allowed (alert only, no hard stop configured)
- ✅ You correctly identified Scenario 4 as blocked at the spending budget step
Lab 3: Budget Design Worksheet (20 min)
Workshop Section: 3 — Hands-On Budget Configuration
Roles
- Admin: Drives read-only inspection of facilitator-designated pre-existing sanitized objects in Billing & Licensing
- Observer: Completes the Budget Design Worksheet in parallel
Quick reference: Use the two-slide Power-User Budget Override visual when selecting an individual ULB. Its worked example shows that the individual amount replaces, rather than adds to, the universal and cost-center limits.
Reference — Enterprise Teams as the Membership Layer
| Capability | Administrative Impact |
|---|---|
| Assign an enterprise team to a cost center | Every current team member is added to the cost center, and cost-center membership updates automatically as people join or leave the team |
| Assign Copilot Business licenses directly | Copilot access follows enterprise-team membership independently of organization membership |
| Sync an enterprise team with an IdP group (EMU) | Membership changes flow from the identity provider through SCIM; an IdP-managed enterprise team cannot also contain manually assigned users |
| Enforce single cost-center ownership | An organization, repository, user, or enterprise team can belong to only one cost center; assigning it elsewhere moves it to the new cost center |
If the optional included usage control is enabled, GitHub automatically calculates its cap from AI credits funded by licenses assigned to cost-center members. Administrators do not enter or manually resize it. Licensed additions or upgrades increase the cap immediately; removals or downgrades normally reduce it at the next billing cycle, and moves between controlled cost centers recalculate next cycle.
Steps
Step 1 — Choose your path:
- Admin path: Open the facilitator-designated pre-existing sanitized cost center under Enterprise → Billing & Licensing → Cost centers. Inspect its resources, licensed membership, included usage control state, and automatically calculated cap. Then open Budgets and alerts and inspect existing budget objects and form labels. Do not change selectors, type, create, assign, toggle, save, or download. Record every design choice in the worksheet.
- Simulation path: Skip directly to Step 2 and fill in the worksheet as if you were configuring the UI.
If the Admin path is unavailable because access, navigation, plan features, or prerequisite resources differ, switch immediately to the Simulation path.
Step 2 — Complete the Budget Design Worksheet:
Design a budget configuration for a fictional 500-user Copilot Business organization. Its designated cost center contains 100 Copilot Business licensed members. If the included usage control is enabled, expect GitHub to calculate a 190,000-credit cap from those licenses (100 × 1,900 credits). Verify that expected basis; do not treat the cap as a manually entered or manually sized input. Fill in every field:
| Field | Your Answer |
|---|---|
| Universal ULB amount (must be above $19) | _______ |
| Reason for that amount | _______ |
| Individual ULB override — user/role | _______ |
| Individual ULB override — amount | _______ |
| Reason for the override | _______ |
| Cost-center included usage control enabled? (Y/N) | _______ |
| Fictional cost-center licensed membership input | 100 Copilot Business licensed members |
| Expected automatically calculated cap (not manually sized) | 190,000 credits (100 × 1,900) |
| Automatically calculated cap observed or verified against expected basis | _______ |
| Cap recalculation timing for the planned membership/license change | Immediate increase / next-cycle decrease or controlled-cost-center move |
| Cost-center spending budget amount (metered phase only) | _______ |
| Cost center exclusion enabled? (Y/N) | _______ |
| Independent spending authority approver/reason (if enabled) | _______ |
| Enterprise team assigned to the cost center | _______ |
| Enterprise-team membership source (manual or IdP-synced) | _______ |
| Copilot Business licenses assigned directly to the enterprise team? (Y/N) | _______ |
| Single-cost-center ownership conflict checked? (Y/N) | _______ |
| Enterprise spending limit amount | _______ |
| "Stop usage when budget limit is reached" enabled? (Y/N) | _______ |
| Reason for that choice | _______ |
| AI-credit pool monitoring source (dashboard or export) | _______ |
| Dollar spending-budget alert thresholds | 75% / 90% / 100% (fixed) |
| Cost-center or enterprise fallback signal for inconsistent user-level alerts | _______ |
Step 3 — Compare: Admin and Observer compare worksheet answers. Discuss any difference in the universal ULB amount each chose, and whether the included usage control, automatically calculated cap, and spending-budget distinction was filled in correctly.
Success Criteria
- ✅ You can state the precedence order of the three ULB types (individual > cost-center > universal) from memory
- ✅ You can explain why a $0 ULB blocks a user immediately, while an unconfigured enterprise budget does not
- ✅ Your worksheet's universal ULB is set above the standard per-seat included-credit equivalent ($19 for 1,900 Business credits / $39 for 3,900 Enterprise credits), not an assumed license price
- ✅ You can explain the difference between a cost center's optional included usage control, its automatically calculated cap, and its spending budget
- ✅ For the 100-member cost center, you recorded the expected automatically calculated cap as 190,000 credits (100 × 1,900), without treating it as a manually sized input
- ✅ You can explain that an excluded cost center's metered charges neither count against nor are blocked by the enterprise budget and are capped only by its own cost-center spending budget
- ✅ You can explain how enterprise-team membership automates cost-center membership, how license assignments affect GitHub's automatic included-usage-cap recalculation, and why administrators do not manually resize that cap
- ✅ (Admin path only) You have located the pre-existing cost-center and budget objects and can identify the relevant form labels without interacting with a control or saving a change
Lab 4: Exception & Escalation Exercise (10 min)
Workshop Section: 4 — Administrative Operating Procedures & Close
Roles
- Admin and Observer work together; rotate who writes the decision
Reference — Administrative Runbook (Monthly Cycle)
| Step | Action | Owner |
|---|---|---|
| 1 | Review applicable included-credit usage in the AI usage dashboard/export and dollar spending-budget alerts (75%/90%/100%); review user-level alert history where available, but do not use it as the only signal | Billing Manager |
| 2 | Use the AI usage dashboard/export for consumption evidence, use the dashboard to spot blocked-user patterns, and determine the effective blocking ULB from the configured individual, cost-center, and universal budgets. Optionally use the Copilot activity report as supplemental evidence for license, seat, and activity administration; it does not replace AI usage evidence or budget configuration review | Platform Admin |
| 3 | Reconcile cost-center membership against enterprise teams or IdP groups; verify license assignments and the included usage control state, then confirm GitHub's automatically calculated cap reflects the documented immediate-increase/next-cycle-decrease behavior | FinOps Lead |
| 4 | Review metered overage against all applicable cost-center, organization, and enterprise spending budgets; confirm hard-stop and cost-center-exclusion choices still match approved spending authority | Enterprise/Org Owner |
| 5 | Approve or deny any pending exception requests (see below); document the reason either way | Billing Manager |
| 6 | Review content-exclusion patterns and supported-surface limitations after repository, policy, or sensitive-path changes | Platform Admin / Security |
| 7 | Communicate any budget or governance changes to affected users/teams before they take effect | Platform Admin |
Steps
Participant instruction: Complete the exercise, then stop before the Answer Key heading. Do not open it until the facilitator begins the debrief.
Runbook draft — about 3 minutes: Complete this concise operating artifact:
| Runbook Field | Your Draft |
|---|---|
| Monthly meeting or cadence | _______ |
| Coordinator | _______ |
| Evidence sources reviewed | _______ |
| Escalation channel | _______ |
Assigned exception scenarios — about 5 minutes: The facilitator assigns one or two scenarios to each group rather than requiring every group to complete all five.
- A single power user is blocked by their individual ULB three times in one week, but their manager confirms the work is legitimate and time-sensitive.
- An IdP-synced enterprise team adds 15 licensed engineers mid-month; cost-center membership updates automatically, but the enabled included usage control reaches its automatically calculated cap on day 10.
- An enterprise-wide spending budget is projected to hit 100% five days before the monthly reset, with hard stop not enabled.
- A team with an excluded cost center requests that its own spending-budget hard stop be disabled because a legitimate multi-day agent task keeps getting blocked.
- A security team asks for one content-exclusion rule to reduce context in Copilot CLI and Agent mode across every repository.
For each assigned scenario, complete one copy of this exception record:
| Exception Record Field | Your Decision |
|---|---|
| Assigned scenario number | _______ |
| Approver | _______ |
| Control or action | _______ |
| Reason | _______ |
| Narrow scope | _______ |
| Supporting evidence | _______ |
| Expiry or review date | _______ |
| Audit record location | _______ |
Debrief — about 2 minutes: Each group shares its runbook draft and one assigned exception decision.
Answer Key — open only when the facilitator begins the debrief
Answer Key
| Request | Approver | Control or Action | Reason and Record Boundaries |
|---|---|---|---|
| 1 | Billing Manager (or per your escalation policy, the user's manager co-signs) | Individual ULB increase | Scope the increase to the named user and time-sensitive work; attach manager confirmation and blocked-user evidence; set a review/expiry date; record the decision in the approved ticket or change log |
| 2 | FinOps Lead | Verify licensed membership, license assignments, and included usage control state—not spending-budget size | Membership automation worked. Attach membership/license evidence, confirm GitHub applied the immediate cap increase, set a follow-up review, and record verification; administrators do not manually resize the cap |
| 3 | Enterprise/Org Owner | Decide whether to raise the enterprise budget or accept projected overage before reset | Scope the decision to the current cycle; attach forecast and alert evidence; review at reset; record the approved action because alert-only behavior will not stop usage automatically |
| 4 | Enterprise/Org Owner or Billing Manager, with documented risk acceptance | Prefer a scoped increase to the excluded cost center's own spending budget over disabling its hard stop outright | Its own cost-center budget is the only budget cap on its metered charges; attach task and forecast evidence, set an expiry/review date, and record the risk decision |
| 5 | Platform Admin / Security | Content exclusion on supported surfaces, plus developer scope/tool guidance | Reject the universal claim; scope supported exclusions precisely, document unsupported CLI/Agent-mode surfaces and compensating controls, set a policy review date, and retain the decision in the governance record |
Success Criteria
- ✅ Your runbook draft names the monthly meeting or cadence, coordinator, evidence sources, and escalation channel
- ✅ Every assigned exception record includes an approver, action, reason, narrow scope, supporting evidence, expiry or review date, and audit record location
- ✅ During the group debrief, Scenario 1 is correctly routed to an individual ULB increase approved per your escalation policy
- ✅ During the group debrief, Scenario 2 is identified as successful membership automation followed by an included usage control event, not a spending-budget-sizing problem, with GitHub's automatic cap recalculation verified rather than manually resized
- ✅ During the group debrief, Scenario 3 is identified as alert-only behavior that requires manual action before reset
- ✅ During the group debrief, Scenario 4 is identified as removing the only budget cap on an excluded cost center's metered charges if its own hard stop is disabled; raising its own budget amount may be safer
- ✅ During the group debrief, Scenario 5's content-exclusion limitation is paired with developer scoping practices
Key Reference Tables (Quick Lookup)
Budget Control Comparison
| Control | What It Caps | When Active | Scope | Hard Stop? |
|---|---|---|---|---|
| Universal user-level budget | Each user's total AI credit consumption | Always (pool + metered) | Per user | Always |
| Cost-center user-level budget | Each member's total consumption (overrides universal) | Always (pool + metered) | Per user, by cost center | Always |
| Individual user-level budget | A specific user's total consumption (overrides both above) | Always (pool + metered) | Per user | Always |
| Cost-center included usage control | Members' included-credit source; when enabled, an automatically calculated cost-center cap replaces shared-enterprise-pool access | Included phase | Per cost center | At the cap, configured paid-usage behavior determines block vs. metered usage |
| Cost-center spending budget | A team's metered charges after applicable included capacity is unavailable | Metered phase only | Per cost center | Only if hard stop enabled |
| Organization spending budget | An org's applicable metered charges | Metered phase only | Per organization | Only if hard stop enabled |
| Enterprise spending budget | Applicable enterprise metered charges, excluding opted-out cost centers | Metered phase only | Enterprise-wide | Only if hard stop enabled |
Cost Center Exclusion
By default, cost-center metered usage also counts against the enterprise budget. Enable cost center exclusion only when the team has independent spending authority. Once excluded, that team's metered charges do not count against, and are not blocked by, the enterprise budget. Those charges are capped only by that cost center's own spending budget.
Conditional Enterprise Ceiling Example
License fees + enterprise budget is an enforced monthly ceiling only when the enterprise budget's hard stop is enabled and all relevant metered usage participates in that budget. Under those conditions, 400 Copilot Business licenses at $19/month ($7,600) plus a $5,000 enterprise budget yields a $12,600 ceiling. Without hard stop, charges can continue; metered usage from excluded cost centers sits outside that enterprise cap.
Included Credits at a Glance
| Plan | Standard (effective Sep 1, 2026) | Historical promo (Jun 1 – Sep 1, 2026) |
|---|---|---|
| Business | 1,900/user/month | 3,000/user/month |
| Enterprise | 3,900/user/month | 7,000/user/month |
Source: Usage-based billing for organizations and enterprises.
Hands-on lab guide for Module 1: Administration & Budget Guardrails — part of the GitHub Copilot AI Credits Optimization curriculum. Deliverable standalone.