HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows Hello for Business WHfBNGCWindows Hello ContainercertutilTPMEvent IDsProactive RemediationTroubleshooting

Inside the NGC Container: Why 'Just Delete the Ngc Folder' Is Terrible Windows Hello Advice

IA
Imran Awan
31 July 2026

Search any forum for "Windows Hello broken" and within three replies someone says: "just delete the Ngc folder and reboot." It is the WHfB equivalent of "have you tried turning it off and on again" - and it is one of the most destructive pieces of advice on the internet. This post opens up the NGC container, explains what actually lives in it, why Microsoft's own current documentation says the "container" is not even a real folder at the architecture level, and shows you the registry keys, Event IDs, and supported reset path to use instead - plus a Proactive Remediation pair so you never have to touch a device by hand.

▶ Watch: Inside the NGC Container

The problem: a folder everyone deletes and nobody understands

When Windows Hello for Business (WHfB) provisions, the user's private key does not sit in a normal file you can copy. It lives inside a protected store Microsoft calls the NGC container (NGC stands for Next Generation Credentials, the internal name for Hello). On disk that store is here:

File Explorer — the NGC container path
C:\Windows\ServiceProfiles\LocalService\AppData\Local\Microsoft\Ngc

Inside are per-credential subfolders full of opaque binary blobs: references to the protector keys, the PIN reset protector, and metadata that ties the container to the user and (where a Trusted Platform Module is present) to the TPM. You cannot read the actual private key from these files - that is the point. The key material is sealed by the TPM or by DPAPI, and the folder is Access Control List (ACL) protected so ordinary processes cannot even open it.

Note - what Microsoft's own current documentation actually says: Microsoft's "How Windows Hello for Business works" page is explicit: "There are no physical containers on disk, in the registry, or elsewhere. Containers are logical units used to group related items. The keys, certificates, and credentials that Windows Hello stores, are protected without the creation of actual containers or folders." The path above is what admins and forum guides have observed and reported on real devices for years, but Microsoft's current architecture description treats "the container" as a logical grouping, not a folder you are meant to inspect, back up, or manage directly. Either way, the practical conclusion is the same: do not treat it as a file you can safely delete and understand the consequences of.

Two Windows services own this container and must be running for Hello to work at all:

ServiceDisplay nameJob
NgcSvcMicrosoft PassportManages the WHfB credential and key operations
NgcCtnrSvcMicrosoft Passport ContainerManages the container that stores the keys
Note: "NGC," "Passport," and "Windows Hello for Business" are three names for the same thing at different layers. Microsoft renamed the user-facing feature to Windows Hello, but the services, the folder, and the dsregcmd fields (NgcSet, NgcKeyId) still carry the original NGC/Passport branding. When you see any of them, you are looking at the same credential.

Why it happens: why "just delete the Ngc folder" is dangerous

The folder-delete advice comes from a real behaviour: if you take ownership of the Ngc folder, wipe its contents, and reboot, Windows rebuilds an empty container and re-provisions Hello. Sometimes that clears a corrupted credential. But look at what you actually did:

Watch out: Manually deleting or re-owning the Ngc folder is unsupported. It can leave a device unable to provision Hello at all, and it scatters orphaned keys across your directory that you then have to hunt down (see the msDS-KeyCredentialLink deep dive). Never do it on a production device, and never as a first response.

How to verify what state the container is really in

Before touching anything, read the state. Do not just check the one setting or the one event you already suspect - the table below is every PassportForWork policy value that actually governs whether provisioning happens and whether PIN recovery is even possible, and the Event ID catalog after it is every provisioning event you will see in the User Device Registration log, not just the error.

Registry key reference - the policy values that actually control provisioning

These are not the NGC container's internal storage (per Microsoft's note above, that is not a real registry location) - they are the PassportForWork MDM policy values, delivered by Intune via the PassportForWork CSP, that determine whether Hello provisions at all and whether a broken PIN can be recovered without a destructive reset. All four live under the same parent key, so it is stated once here rather than in every row:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Policies\PassportForWork\{TenantId}\Device\Policies\
Value name (REG_DWORD)Healthy valueIf wrong
UsePassportForWork1 or absent0 = WHfB never provisions on this device
EnablePinRecovery10/absent (default) = a broken PIN can only be deleted and recreated
RequireSecurityDevice1 if hardware required0 = software-key fallback allowed
DisablePostLogonProvisioning0 (default)1 = looks identical to "Hello never set up"
Registry Editor
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Policies\PassportForWork\{TenantId}\Device\Policies
UsePassportForWork REG_DWORD 0x00000001
RequireSecurityDevice REG_DWORD 0x00000001
EnablePinRecovery REG_DWORD 0x00000000 ← recovery not enabled - a broken PIN here means delete-and-recreate, not recovery
DisablePostLogonProvisioning REG_DWORD 0x00000000
Gotcha: EnablePinRecovery defaults to disabled. Most tenants never turn it on, which means the very first time a user's PIN genuinely breaks, the only supported path is delete-and-recreate (via certutil, never the folder) - there is no "recover the old PIN" option waiting in reserve. If you want a non-destructive recovery option available before you need it, this is the setting to enable now, not after the first support ticket.

Event ID catalog - the provisioning story in User Device Registration

All of these live in the same channel, so it is stated once here rather than in every row - this is the log that explains why provisioning did or did not happen, including the specific "NGC key is missing" event that maps directly to a broken credential:

Event Viewer › Applications and Services Logs › Microsoft › Windows › User Device Registration › Admin
Event IDLevelMeaning
358InformationProvisioning will be launched - prerequisites passed
360WarningProvisioning blocked - a prerequisite failed (easy to miss, not an Error)
362ErrorDevice authentication to the enterprise STS did not succeed
363ErrorThe Microsoft Passport (NGC) key is missing
Event Viewer — Microsoft-Windows-User Device Registration/Admin
2026-08-02 08:41:03 Event 358 — WHfB provisioning will be launched
2026-08-02 08:41:07 Event 363 — The Microsoft Passport (NGC) key is missing
2026-08-02 08:41:07 Event 360 — provisioning will not be launched (prerequisite failed)
2026-08-02 08:44:12 Event 358 — WHfB provisioning will be launched (retry, after certutil reset)

Read that sequence the way the site's Event ID catalog post teaches: the 363 at 08:41:07 is the actual finding - the key genuinely does not exist - and the 360 Warning right after it is the consequence, not a separate problem. The second 358 at 08:44:12 is what you want to see after running the supported reset below: a clean retry.

Then confirm the two container services are actually running. If either is stopped or disabled, Hello fails and the fix is to start the service, not to delete anything:

Command Prompt
C:\> dsregcmd /status | findstr /i "NgcSet NgcKeyId" NgcSet : YES # a Hello credential exists NgcKeyId : {FA0DB076-A5D7-4844-82D8-50A2FB42EC7B} # its key ID

Then confirm the two container services are actually running. If either is stopped or disabled, Hello fails and the fix is to start the service, not to delete anything:

Windows PowerShell
Get-Service NgcSvc, NgcCtnrSvc | Select-Object Name, DisplayName, Status Name DisplayName Status ---- ----------- ------ NgcSvc Microsoft Passport Running # both must be Running NgcCtnrSvc Microsoft Passport Container Running

The fix: reset the credential the supported way

If a single user's Hello credential is genuinely broken, you do not delete the folder. You delete that user's Hello container with the built-in tool, run in the user's own context (not elevated):

Command Prompt (run as the signed-in user)
C:\> certutil.exe -deletehellocontainer Windows Hello container deleted successfully. # scoped to THIS user only

This removes only the signed-in user's credential, cleanly, through the supported code path - it lets Windows tidy up the container and re-provision on next sign-in. Compare that with the folder-delete sledgehammer, which hits every user and leaves debris:

certutil -deletehellocontainerDeleting the Ngc folder
ScopeThe one signed-in userEvery user profile on the device
SupportedYesNo
Cleans up keysYes - through the proper pathNo - leaves orphaned keys in Entra ID / AD
Touches NTFS ACLsNoYes - and often wrongly
Run asThe user (not elevated)Requires taking ownership as admin
Gotcha: Run certutil -deletehellocontainer from an elevated prompt and it deletes the administrator's container, not the signed-in user's - so nothing appears to happen for the user who has the problem. Always run it in the affected user's own session. To do it at scale, push it as a user-context script, never as SYSTEM.

Deploy this as an Intune Proactive Remediation

Rather than wait for a helpdesk ticket and then run certutil by hand, deploy the detect/remediate pair below fleet-wide. It performs exactly the two checks and the one supported fix already covered above - nothing else - and it runs in the signed-in user's context, so certutil -deletehellocontainer targets the right container automatically.

  1. Sign in to the Intune admin center.
  2. Go to Devices › Scripts and remediations › Proactive remediations.
  3. Select Create and name it "WHfB NGC Container - Detect and Remediate".
  4. On the Settings page, paste Detect-NgcContainerHealth.ps1 into Detection script file.
  5. Paste Remediate-NgcContainerHealth.ps1 into Remediation script file.
  6. Set Run this script using the logged-on credentials to Yes - this is required, not optional, for certutil -deletehellocontainer to target the right user.
  7. Select Next, then assign to a pilot device group first under Assignments.
  8. Set the schedule to Daily and select Next › Create.
Devices Scripts and remediations Create
Watch out: Do not set "Run this script using the logged-on credentials" to No. The remediation script's certutil -deletehellocontainer call needs to run as the affected user - as SYSTEM it deletes a different (system) container and the user's broken credential is untouched, so the ticket reopens with no visible cause.

Proof it worked

Here is a real run of Get-NgcContainerInfo.ps1 from this series, against a healthy device (device key IDs shown are replaced below to avoid publishing a real Entra device identifier):

PowerShell — Get-NgcContainerInfo.ps1 (real output, key ID redacted)
NGC (Windows Hello) Container - Triage ------------------------------------------------------------ Container path exists : True Container entries : 2 NGC services: NgcCtnrSvc Microsoft Passport Container Running NgcSvc Microsoft Passport Running NgcSet : YES NgcKeyId : {aaaaaaaa-0b0b-1c1c-2d2d-333333333333} TPM present / ready : True / True ------------------------------------------------------------ Hello credential present and services healthy.

Both services Running, a populated container, and a matching NgcKeyId are exactly the "nothing to fix here" result - the moment to reach for certutil -deletehellocontainer is when one of those lines reads differently (a stopped service, or NgcSet : NO when the user insists they set up a PIN).

After a supported reset and re-provision, NgcSet returns to YES with a new NgcKeyId, both container services are Running, and the user signs in with their new PIN. On the directory side, the old public key ages out and the new one is registered - no orphans, because you never bypassed the cleanup path.

The Proactive Remediation's detection script gives the same answer in the format Intune actually consumes. This is a real run on a healthy device:

PowerShell — Detect-NgcContainerHealth.ps1 (real output)
.\Detect-NgcContainerHealth.ps1 HEALTHY: NgcSvc and NgcCtnrSvc running, NgcSet: YES # exit code 0 - Intune marks the device compliant, remediation script never runs

On a device where Event 363 has actually fired and the credential is genuinely missing, the same script instead prints NOT HEALTHY: dsregcmd reports NgcSet: NO (no Hello credential provisioned) and exits 1 - which is Intune's signal to run Remediate-NgcContainerHealth.ps1 automatically, in the user's own session, with no ticket and no admin touching the device.

Tip: If Hello is broken for every user on a device, do not reach for the folder. Check the TPM first (Get-Tpm - is it present and ready?) and the two NGC services. A cleared or malfunctioning TPM, or a stopped Passport Container service, breaks Hello for everyone and is fixed without deleting a single file. The folder is almost never the real problem.

References

PowerShell Scripts — NGC Container Inspector

Script for this post is in Daily-Tasks.

Get-NgcContainerInfo.ps1
— read-only: reports the container path, the two NGC service states, and NgcSet/NgcKeyId so you can triage before ever touching the folder
Detect-NgcContainerHealth.ps1
— Intune Proactive Remediation detection script: read-only, exits 1 only when a service is stopped or NgcSet is NO
Remediate-NgcContainerHealth.ps1
— paired remediation script: starts stopped NGC services, then runs the supported certutil reset - never touches the Ngc folder
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky
Comments

Anyone can comment - just add your name.

Loading comments…

More from EndpointWeekly

Windows Hello for Business
Windows Hello for Business Not Working on a Hybrid-Joined Device…
WHfB signs in with a PIN but Event 360 keeps firing? This walkthrough traces the real…
Windows Hello for Business
dsregcmd /status Decoded: The Complete Field Reference for WHfB…
One command answers more WHfB questions than any portal - and its forty-plus fields come…
Windows Hello for Business
The Complete Windows Hello for Business Event ID Catalog (Across…
WHfB logs to three different places with cryptic IDs and no index. This catalog maps…