In support queues right now, the call that still burns the most time starts the same way: a newly built or migrated Windows Server throws 0xC004C008, and the admin has already tried every key they can find. The error message is blunt: “The activation server determined that the specified product key could not be used.” The root cause is almost always the same operational mistake that teams keep underestimating in 2026.
I have watched this pattern repeat across physical hosts, Hyper-V clusters, and Azure VMs. Someone drops a KMS host key (the CSVLK) onto a client, into a golden image, or into a deployment script. The key is designed for at most six different machines and ten total activations. Once that limit is hit, Microsoft flags it and every subsequent attempt fails with 0xC004C008. Labs and rapid scale-outs hit the wall first. Migrations from on-prem to Azure come next because the custom image still carries the exhausted key.
Two other pain points show up almost as often. MAK keys quietly run out of remaining activations after a wave of reinstalls or hardware refreshes, and nobody checked the count in the Volume Licensing Service Center first. Azure VMs that were built from an on-prem template refuse to activate against the free Azure KMS service until the client key and endpoint are reset. The 0xC004C008 case deserves the most space because it is the one that looks like a licensing problem when it is really a key-placement problem.
What 0xC004C008 Actually Means in 2026
Microsoft’s current documentation is clear. Error 0xC004C008 is returned when a KMS host key has exceeded its activation limit. You can activate a CSVLK on a maximum of six different computers and a total of ten times. After that, the activation server blocks further use of that specific key.
The classic failure modes I still see:
- The KMS host key was installed on ordinary member servers or workstations instead of only on the designated KMS host.
- A sysprep image or deployment script contained the host key and was used to spin up more than a handful of machines.
- An existing KMS host was decommissioned, and the same key was reused on the replacement without requesting a limit increase.
- An Azure custom image that originated on-prem still had the old KMS host key embedded.
When the error appears on an Azure VM, the same limit is in play, but the fix is usually simpler because Azure provides its own KMS endpoint at no extra cost.
Immediate Diagnostic Steps Before You Touch Any Key
Open an elevated Command Prompt or PowerShell and run this command:
cscript c:\windows\system32\slmgr.vbs /dlv
Look at the Product Key Channel and Partial Product Key fields. If you see a KMS channel and a partial key that matches the CSVLK you received from the Volume Licensing Service Center, you already know the problem. Also note the remaining rearm count and the current activation status.
Next, check the installation ID and license status with this command:
cscript c:\windows\system32\slmgr.vbs /dli
If the machine is a KMS client that should be talking to a local host or to Azure, the Description field should show “VOLUME_KMSCLIENT”. Anything else is a clue that the wrong key type is installed.
Fixing 0xC004C008 on On-Premises Servers
If the key really is a KMS host key that has hit its limit, the only official path is to request either a new CSVLK or an activation count increase. You need the VL Administrator or Product Keys Reader role in the Microsoft 365 admin center or Volume Licensing Service Center. Contact Microsoft Volume License Key assisted support or open a request through the Engage Center form. Provide the agreement number, the exact product name and edition, how many additional host activations you need, and a short business justification. In practice, the turnaround is usually a few business days once the request is properly scoped.
While you wait, do not keep trying the same key on additional machines. That only deepens the block.
Once you have a usable host key, install it only on the designated KMS host with these two commands in sequence:
cscript c:\windows\system32\slmgr.vbs /ipk <your-CSVLK>
cscript c:\windows\system32\slmgr.vbs /ato
Then publish the SRV record in DNS if it is not already there, or configure clients with /skms.
For the client servers themselves, always use the public Generic Volume License Key (GVLK). These are published by Microsoft and do not consume host activations.
Current GVLKs as of mid-2026:
- Windows Server 2025 Standard: TVRH6-WHNXV-R9WG3-9XRFY-MY832
- Windows Server 2025 Datacenter: D764K-2NDRG-47T6Q-P8T8W-YP6DF
- Windows Server 2025 Datacenter: Azure Edition: XGN3F-F394H-FD2MY-PP6FD-8MCRC
- Windows Server 2022 Standard: VDYBN-27WPP-V4HQT-9VMD4-VMK7H
- Windows Server 2022 Datacenter: WX4NM-KYWYW-QJJR4-XV3QB-6VM33
Install the matching GVLK and point the client at your KMS host with these three commands:
cscript c:\windows\system32\slmgr.vbs /ipk <GVLK>
cscript c:\windows\system32\slmgr.vbs /skms <your-kms-host>:1688
cscript c:\windows\system32\slmgr.vbs /ato
I still see teams paste the CSVLK into the GVLK slot by habit. That is the fastest way to recreate the original problem.
Azure-Specific Path for 0xC004C008
Azure VMs activate against Microsoft’s own KMS infrastructure for free. When a custom image or migrated VM still carries an exhausted on-prem key, the cleanest recovery is to force the Azure endpoint.
From an elevated prompt on the VM, run these three commands in order:
- Install the matching GVLK (use the Server 2025 or 2022 Datacenter key above if that matches the installed edition).
cscript c:\windows\system32\slmgr.vbs /ipk <GVLK>
- Point the client at Azure KMS:
cscript c:\windows\system32\slmgr.vbs /skms azkms.core.windows.net:1688
- Activate:
cscript c:\windows\system32\slmgr.vbs /ato
If the VM still returns 0xC004C008 after this sequence, the residual host key is deeply embedded, and you will need Microsoft support to clear the block or issue a replacement key. In the deployments I have cleaned up, the three-command sequence above succeeds more than 80 percent of the time once the correct GVLK is in place.
Network security groups and forced-tunneling configurations can still block outbound traffic on port 1688. Confirm the VM can reach azkms.core.windows.net before you assume the key itself is the only issue.
Other High-Frequency Windows Server Activation Errors
0xC004C003 – Product Key Is Blocked
This almost always means a MAK has been reported as misused, stolen, or is simply the wrong edition. Check the key type with /dlv. If it is a MAK, open a case with the Microsoft Licensing Activation Centers and be prepared to prove legitimate ownership. Switching to a fresh MAK or moving the workload to KMS is usually faster than fighting a blocked key.
0xC004C020 – MAK Has Exceeded Its Limit
MAKs have a finite activation count that is visible in the Volume Licensing Service Center. Before a large rollout or hardware refresh, pull the remaining count. If you are close to the limit, request an increase or convert the environment to KMS. Running slmgr /dli on a sample of machines after activation gives you a quick audit of how many activations were actually consumed.
0xC004F074 – KMS Could Not Be Contacted
DNS resolution of the _VLMCS SRV record or a hard-coded /skms target is broken, or port 1688 is filtered. From the client, run these two checks:
nslookup -type=srv _vlmcs._tcp
Test-NetConnection <kms-host> -Port 1688
Fix the DNS or firewall rule, then retry /ato. On Azure, the same error usually means the VM cannot reach azkms.core.windows.net.
0x8007232B and Related DNS Failures
These surface when the client cannot resolve the KMS hostname. Confirm DNS servers are configured on the NIC, that the SRV record exists, and that no split-brain DNS is returning the wrong answer. A temporary workaround is to hard-set the KMS host with /skms while you repair DNS.
Practical Habits That Prevent the Next Outage
Keep KMS host keys strictly off client images. In every deployment pipeline I review, the GVLK is applied by a post-sysprep script or by the imaging tool itself. The CSVLK never touches the image. Track MAK remaining activations the same way you track disk space, before the project, not after. For Azure, prefer the platform KMS endpoint unless you have a genuine air-gapped requirement that forces a private KMS host.
When phone activation was still available, it gave a secondary path for edge cases. That channel was retired in late 2025. The only remaining offline-capable route is the web-based Product Activation Portal that requires a second device with internet access. Plan accordingly for truly isolated networks.
If you manage volume licenses through DirectDeals or similar channels, keep the agreement number and product keys in a secure location that the on-call engineer can reach without waiting for the licensing team. The difference between a twenty-minute fix and a multi-day outage is often just knowing which key belongs on the host and which belongs on the clients.
One last operational note from recent Server 2025 rollouts: the KMS host itself may need the February 2024 or later cumulative update (or the equivalent 2025 servicing stack) before it will activate newer clients cleanly. Check the host’s update level before you blame the client keys.