Yeah, That TPM Audit Error Sucks – Here's the Fix
You're staring at 0x80280004 (TPM_E_AUDITFAILURE) and your TPM seems fine otherwise. The operation you ran (maybe BitLocker, maybe a TPM provisioning script) completed successfully, but the audit trail failed. That's the core of this error — the TPM itself works, but the auditing component crapped out. I've seen this on Dell OptiPlex 7080s, Lenovo ThinkPads, and even HP ZBooks. The culprit here is almost always the TPM Base Services (TBS) service or a stale registry key from a firmware TPM update.
Step 1: Kill the TPM Auditing with a Registry Tweak
Don't bother reinstalling drivers or running tpm.msc — that rarely helps. Instead, disable the auditing trigger at the registry level. Open Regedit as admin, and go to:
HKLM\SYSTEM\CurrentControlSet\Services\TBS\ParametersLook for a DWORD named AuditLevel. If it's there, set it to 0. If it's not there, create it. This tells the TPM to skip auditing entirely. Reboot, then try your TPM operation again. The error should vanish.
Why this works: The TPM base service (TBS) handles communication between Windows and the TPM chip. When AuditLevel is set to anything other than 0 (default is 1 on many systems), Windows tries to log each TPM command to the audit log. If that log is corrupted, full, or has permissions issues, you get 0x80280004. Setting it to 0 bypasses that logging.
Step 2: Verify TBS Service is Running Correctly
If the registry fix alone doesn't cut it, the TBS service might be in a bad state. Run this from an admin command prompt:
sc query tbsYou should see STATE: 4 RUNNING. If it's not running, start it:
net start tbsIf it fails to start, check the service's dependencies. TBS depends on the Plug and Play service (PNP) and sometimes the Remote Procedure Call (RPC) service. Make sure those are running. If the service keeps dying, check Event Viewer under System for TBS errors — they'll point to a missing file or bad driver.
Step 3: Reset the TPM Without Clearing Keys
Some firmware updates mess with the TPM's internal audit log. If the registry fix didn't work, you can reset the TPM's auditing state without clearing your BitLocker keys. Run this from PowerShell as admin:
Get-Tpm -ErrorAction SilentlyContinueIf that returns data, the TPM is accessible. Now run:
Clear-Tpm -AllowClear -ForceWait — this clears the TPM, but it doesn't clear BitLocker keys if BitLocker is suspended first. Before you run that, suspend BitLocker on all drives:
Suspend-BitLocker -MountPoint "C:" -RebootCount 0Then clear the TPM, reboot, and re-enable BitLocker. This is the nuclear option — only do it if the registry fix didn't work and you're sure your keys are backed up (or you have a recovery key).
Less Common Variations of the Same Issue
Sometimes 0x80280004 shows up during a TPM provisioning step in Group Policy. This happens when the GPO tries to audit TPM operations but the local TPM doesn't support that logging level. Check Computer Configuration\Administrative Templates\System\Trusted Platform Module\Services for any audit-related policies. If you see one, set it to Disabled.
Another variation: on virtual machines (Hyper-V or VMware), the emulated TPM might not fully support auditing. If you're running a VM, try disabling the TPM device, rebooting, then re-enabling it. This resets the virtual TPM's state.
I've also seen this error on systems where the TPM firmware was updated but the Windows driver wasn't. Check your TPM firmware version in tpm.msc and compare it to the latest from your OEM. If they mismatch, update the firmware. On Lenovo systems, you'll need the Lenovo Vantage app for that.
How to Prevent This from Coming Back
Prevention is straightforward. First, keep your TPM firmware up to date — most OEMs release updates through Windows Update now. Second, don't enable TPM auditing via Group Policy unless you really need to. It's almost never useful for day-to-day admin work. If you do need audit logs, use the TPM WMI provider instead — it's more reliable.
Also, regularly check the TBS service's event log. If you see warnings about audit log size or permissions, fix them early. A simple
wevtutil gl "Microsoft-Windows-TBS/Operational"will show you the log's max size. If it's set to something tiny (like 1 MB), bump it up to 20 MB:
wevtutil sl "Microsoft-Windows-TBS/Operational" /ms:20971520That alone can prevent the audit log from filling up and triggering 0x80280004 later.
One more thing: if you're deploying Windows images with TPM provisioning, make sure your answer file includes the Microsoft-Windows-TPM-TPMProvisioning component with SetTPMAuditLevel set to 0. That way, new machines won't even try to audit.