Jesse Houwing

@jessehouwing.net

Loves Charlotte and Lily & Mika. Works at Xebia. Scrum.org, Github and Microsoft Trainer

It looks like there is a bug in the Budgets API when swapping from PRUs to AICs. Instead of updating, you need to delete and recreate the budgets: ``` Updating budget ~~~ to $500 gh: The following fields cannot be updated: budget_product_sku. (HTTP 400) ``` @github #usagebasedbilling

With the new pricing for @github.com Copilot I'm receiving more and more questions on how to measure the value. And the question is HARD. Scientifically proven to be hard. Here's my opinion, supported by a number of previous studies. jessehouwing.net/measuring-th...

Measuring the Value of AI

The honeymoon is over. After months of aggressive rollouts, enterprises across the globe have given their employees access to AI coding assistants, copilots, and chat interfaces. And now the inevitabl...

jessehouwing.net

The GitHub #Copilot Billing Preview tool uses your April 2026 bill as a baseline to predict the cost in the future. But... In many European countries, April is a month with many holidays, which changes how the costs are distributed across your users.

A table showing significant differences between per-user costs based on their pattern of usage. Some users remain pretty much the same (had spent tokens throughout the month). Some users see a spike, they likely spent most tokens at the beginning of the month, then went on vacation.

Ran the numbers for the new #Copilot Usage based billing across a couple of organizations. We're seeing an average 3x increase in spend during the promotional pricing period if we don't do anything. Upgrading all our users to Copilot Enterprise, can reduce the cost increase to roughly 2x.

A chart showing the current cost in the PRU era (1x), the projected cost in the Promotional Period (3x without intervention, 2x with optimization) and the projected cost post promotional period (currently at 3.6x)

Last month GitHub announced Usage Based Billing for GitHub Copilot. This completely changes the way its costs are calculated. A lot has already been written about the impact and a lot is still unknown.

The why for Usage Based Billing for GitHub Copilot

Last month GitHub announced Usage Based Billing for GitHub Copilot. This completely changes the way its costs are calculated. A lot has already been written about the impact and a lot is still unknown. In this post I want to explore the reasons why this switch was inevitable and how it enables new scenarios to make Copilot perform better than it did before. ## Quick recap of copilots current pricing model GitHub Copilot is currently available in 5 different plans: * GitHub Copilot Free - severely rate limited free version with no option to buy additional requests. * GitHub Copilot Pro - Individual license with limited Premium Request Units. * GitHub Copilot Pro+ - Individual license with more extensive Premium Request Units. * GitHub Copilot for Business - License for organizations with centralized policies and limited Premium Request Units. * GitHub Copilot Enterprise - License for organizations with centralized policies and more extensive Premium Request Units. Each of these licenses has a fixed monthly price. GitHub Copilot includes suggestions and a limited set of free models. And about a year ago, GitHub introduced the concept of Premium Request Units to pay for more powerful models and and PRUs are the used to charge for specific features like the Cloud Coding Agent and Copilot Code Review. When the Cloud Coding Agent was introduced, it could use more than 1 PRU per request. This made the cost of the agent unpredictable and GitHub soon changed the price of the Cloud Coding Agent to a single PRU per request. When a user has exhausted their included PRU budget, additional PRUs are charged. Additional PRUs have a fixed cost. ## Usages of PRUs The primary use of PRUs are to charge the costs of requests to the users of GitHub Copilot. Each model is assigned a multiplier of 0, 1, up to 50 (highest so far) PRUs. The model multiplier wasn't just used to charge the cost, it's an open secret that it was also used to divert users to other models to load balance them. Most people are more hesitant to use expensive models carelessly. The introduction of the "Auto" mode rests on this principle. Users get a 10% discount on PRUs if they let GitHub select their model. While most users seem to assume this will route them to the "best model for the task", this generally sends the request to the "model with the best availability". Premium Request Units were also reduced for promotional purposes. When Claude Opus 4.7 was introduced, it's multiplier was temporarily set to 3x, later increased to 15x. This promotional use isn't just to get us "hooked" on the more powerful model features, it's also to allow GitHub to get crucial statistics on how these new models perform and to help them iron out bugs. ## How GitHub pays for model usage The model providers, Anthropic, Google, OpenAI, X, don't charge the cost of their models in Premium Request Units. They charge the cost in terms of Tokens. Input Tokens, Output tokens and Cached tokens at the highest level. Given the amount GitHub uses, they have probably got a really good deal. But GitHub needs to balance the cost for the Tokens it spends against what it can charge its users in Premium Request Units. GitHub also balances the costs between Tokens and PRUs by limiting the maximum token window for models. For example, if you're using Claude Opus 4.6 through GitHub Copilot, the maximum token window is 200k tokens. If you use the same model directly through Anthropic you have a maximum of 1m tokens. As Agent Mode and Cloud Coding Agent got more powerful, more tools appeared, the models are using more and more tokens for every request, reducing the available token window for your requests. ## Other ways GitHub control costs GitHub has a few other options to control the maximum number of tokens you can use for each Premium Request Unit they charge you. **Agent Mode -** Agent Mode spends tokens and action minutes. GitHub can control the token spend by forcing the agent to come to an early conclusion or to postpone work to a future session. **Cloud Coding Agent** - The cloud coding agent spends tokens and action minutes. GitHub can control the token spend by forcing the agent to come to an early conclusion or to postpone work to a future session. The workflows running the Cloud Coding Agent runs on is limited to 2 hours. **Code Review** - Similar to the Cloud Coding Agent, when using GitHub's Code Review feature, GitHub can control the token spend by limiting the total time and the total of tokens the feature can spend. When using these features, GitHub can also control which model is used to perform these tasks. Some features, like tool optimization in Visual Studio Code also limit the total number of tokens used for each session by default. ## Recent creative uses New features, like subagent and fleets have multiplied the number of tokens you can use in a single Agent request. Visual Studio Code extensions have allowed users to steer the agent without completing the Agent request. These creative usages, some people might call them abuse, have allowed some people to use significantly more tokens costs than the PRU is worth. In some cases thousands time more. And instead of figuring out how to charge its users in Premium Request Units in this new model, GitHub will charge us for the actual tokens instead. ## So what changes Instead of the abstract thing, called Premium Request Units, acting as a proxy for the real cost of AI usage, we're going to be charged in tokens, the same unit in which GitHub is charged. Unfortunately, the different model providers, each charge different prices for different kinds of tokens. So GitHub still uses a multiplier so they can charge a single unit for the bill. GitHub explains how the new pricing model works on the GitHub Blog. You can see find the upcoming changes to the model multiplier in the GitHub docs. The new multipliers should not just result in higher costs, but is also expected to more equally spread the load across the available models as users will be more likely to try to find the most cost effective model to use for the work they're trying to accomplish. ## Additional changes for Business accounts In addition to the new pricing, GitHub is introducing a number of welcome changes for business accounts (Copilot for Business and Copilot Enterprise). **Pooled usage** - Under the current model, when a user has spent all of its budget, additional requests are automatically charged. Under the new model, the budget of all users is pooled together. So the unused budget from less frequent users can be consumed by more frequent users in the same organization. Only when the full pooled budget is used up, will additional usage be charged. **Individual additional budgets** - Under the current model, additional charges can be controlled through budgets, these are pooled together for all users in the same cost center. In the new model it's possible to set a per-user budget as well as a universal budget for all users in addition to the already existing budget control options. In addition to these changes, existing policy options to control costs are still available: **Enterprise, Organization** and **Cost Center Budgets** - Existing budget options to limit the total spend at the Enterprise, Organization and Cost Center can still be configured to limit the total spend on AI costs. **Limit model availability** - Enterprise and Organization level policies allow admins to control the available models. This can remove less effective and more expensive model options. **Limit feature availability** - Enterprise and Organization level policies allow admins to control the available features. This can remove more expensive features like Code Review and Cloud Coding Agent for specific users. But, ultimately, limiting the cost isn't the path forward. Optimizing the value delivered through AI is. Use these limits to bridge the time it takes to educate your users.

jessehouwing.net

To better understand why GitHub is changing the billing of Copilot, and why it may not be a bad thing for us in the end, I put this blogpost together. - It limits abuse - It loadbalances model usage - It allows for longer workflows - It allows for more tokens jessehouwing.net/usage-based-...

The why for Usage Based Billing for GitHub Copilot

Last month GitHub announced Usage Based Billing for GitHub Copilot. This completely changes the way its costs are calculated. A lot has already been written about the impact and a lot is still unknown...

jessehouwing.net

I just moved my late father's website, so it may stay around to show his legacy and to support readers of his books. The most important reason, to keep scammers from using it for nefarious purposes. These things are much harder than they first seem. Not just technically, but also emotionally.

With the current political climate there has quite a bit of buzz around Data Residency and Data Sovereignty. One of the gaps in GitHub with Data Residency, was that all Copilot data could still leave the region. This is now a thing of the past

Github Copilot now available with Data Residency in the EU

With the current political climate there has quite a bit of buzz around Data Residency and Data Sovereignty. And the number of inquiries to migrate from GitHub Enterprise Cloud to the Data Resident version have gone up. One of the gaps in GitHub with Data Residency, was that all Copilot data could still leave the region. This is now a thing of the past: Copilot data residency in US + EU and FedRAMP compliance now available - GitHub ChangelogGitHub Copilot now supports data residency for US and EU regions, ensuring all inference processing and associated data stay within your designated geography. For US government customers, all model hosts…The GitHub BlogAllison To make use of this new feature, you must already be using the Data Resident version of GitHub Enterprise Cloud (also known as `ghe.com` or by GitHub's internal codename Proxima). To restrict Copilot to only use Data Resident models, a policy must be enabled at the Enterprise or Organization level: Set ****Restrict Copilot to Data Residency Models**** to ****Enabled everywhere**** to ensure copilot data is processed in your Data Residency region. Currently all **Generally available** copilot features are included according to GitHub, but new features may take a bit longer to be enabled on your GitHub environment, as they may not yet be available for Data Residency during preview phases. This has been the case with other GitHub features as well, so this shouldn't come as a surprise.

jessehouwing.net

GitHub Copilot will start training on your data. You've probably seen this on your LinkedIn timeline the past few days. Probably with alarming notes that this can't be controlled and that there is no policy for it. This simply isn't true. Let's get this straight: jessehouwing.net/github-copil...

GitHub Copilot will start training on your interactions

GitHub Copilot will start training on your data... You've probably seen this on your LinkedIn timeline in the past few days. Probably with alarming notes that this can't be controlled and that there i...

jessehouwing.net

Showing off my #GitHub Actions for GitHub Action. - Automatic versioning for Actions - Dependency Submissions for Actions - Example checker for Actions docs At the #mvpsummit during the mvp2mvp days. If you're maintaining a GitHub Action, you should look into these. Link in the comments.

Jesse in front of a group of fellow MVPs presenting at the MVP2MVP session.

Last month I added a few more @github.com Actions to the Marketplace and found that it was easy to forget to update my examples as the Action evolved. So, now I validate the examples against the action.yaml with own action: GitHub Actions Example Checker. jessehouwing.net/keep-your-ex...

Keep your examples in sync with your Action

Last month I added a few more GitHub Actions to the Marketplace and while working on them found that it was easy to forget to update my examples as the implementation of the Action evolved

jessehouwing.net

Do you maintain an Azure DevOps Extension? Then I need your help! The past few days I've completely refactored the Azure DevOps Extension Tasks. They're now available for both GitHub Actions as well as Azure Pipelines and completely cleaned up and PREVIEW! github.com/jessehouwing...

GitHub - jessehouwing/azdo-marketplace: Pipeline tasks for Azure DevOps Extensions

Pipeline tasks for Azure DevOps Extensions. Contribute to jessehouwing/azdo-marketplace development by creating an account on GitHub.

github.com

Versioning of #GitHub Actions still felt like black magic at certain times, especially with the introduction of Immutable Releases, which does not allow much room for mistakes. I decided to automate the process of validating all of this: jessehouwing.net/github-actio...

Automatic versioning for GitHub Actions authors

As a maintainer of 3 GitHub Actions, I've always struggled a bit with the versioning of them. GitHub's documentation provides guidance, but no easy way to verify you did everything right. Based on a ...

jessehouwing.net

Versioning of #GitHub Actions still felt like black magic at certain times, especially with the introduction of Immutable Releases, which does not allow much room for mistakes. I decided to automate the process of validating all of this: jessehouwing.net/github-actio...

Automatic versioning for GitHub Actions authors

As a maintainer of 3 GitHub Actions, I've always struggled a bit with the versioning of them. GitHub's documentation provides guidance, but no easy way to verify you did everything right. Based on a ...

jessehouwing.net