[Bug] Claude Desktop MSIX leaks kernel non-paged pool via NTFS CCB allocations (~2.2 GB/hour)
Bug Description
Claude Desktop (MSIX 1.25927.0.0) leaks kernel non-paged pool at ~2.2 GB/hour via NTFS CCB allocations
Summary
Claude Desktop installed from the Microsoft Store (MSIX packageClaude_1.25927.0.0_x64__pzs8sxrjxfjjc) causes a kernel-mode non-paged pool leak on
Windows 11. While the app is running, the NtFC pool tag (allocated by Ntfs.sys, one
Context Control Block per file open) grows continuously at roughly 2.2 GB/hour and is
never released. Over a 9-hour session it consumed 19.6 GB of non-paged pool.
The leaked memory is in kernel non-paged pool, so:
- It is invisible in Task Manager — the Claude Desktop processes themselves look
entirely normal (18 processes, ~2.7 GB total commit, small working sets).
- It cannot be paged out, trimmed, or reclaimed by any user-mode means.
- It is only released by a reboot.
The leak starts within one minute of launching the app and stops instantly and completely
when the app is closed. This was verified with minute-resolution monitoring across a
two-day clean baseline.
Claude Code CLI (~/.local/bin/claude.exe) does not exhibit this behaviour — it ran
continuously throughout the entire baseline period and during all measurements with no
effect on the pool.
Environment
| | |
|---|---|
| OS | Windows 11 Pro, build 26100 |
| RAM | 63 GB |
| Claude Desktop | Claude_1.25927.0.0_x64__pzs8sxrjxfjjc, version 1.25927.0.0 (Microsoft Store / MSIX) |
| Filesystem | NTFS, 3 fixed volumes (C:, D:, E:) |
| FS filter drivers present | wcifs, bindflt (MSIX virtualisation), Symantec Endpoint Protection 14.3.11232, UnionFS, CBfs |
Impact
This is a hard denial-of-service on the machine given enough uptime.
An earlier occurrence (before monitoring was in place) exhausted the machine:
non-paged pool reached 44.7 GB of 63 GB, with NtFC alone at 41.2 GB and
450,320,007 outstanding allocations. Available physical memory fell to 142 MB, the
system thrashed continuously, and simple operations took minutes. Only a reboot recovered
it.
In the measured occurrence documented below, the leak was caught at 19.6 GB and stopped
by closing the app before the machine became unusable.
Evidence
1. Two-day clean baseline (Claude Desktop not running)
Minute-resolution sampling of the NtFC pool tag viaNtQuerySystemInformation(SystemPoolTagInformation). 3,040 consecutive samples from
2026-08-07 16:03 to 2026-08-09 20:01, zero gaps:
Timestamp NonPagedMB NtFC_MB NtFC_Outstanding AvailMB
2026-08-09 19:57:43 1156 0 9 45414
2026-08-09 19:58:44 1155 0 9 45471
2026-08-09 19:59:46 1155 0 9 45420
2026-08-09 20:00:47 1156 0 9 45407
2026-08-09 20:01:49 1155 0 9 45411
NtFC held at 0 MB / 9 outstanding for the entire two days. Non-paged pool was flat
at ~1,155 MB. Chrome, VS Code, Claude Code CLI, Logitech Options+, Symantec Endpoint
Protection and a corporate asset-management agent were all running throughout.
2. Onset — exactly coincident with app launch
Claude Desktop processes were created at 08:20:32 – 08:20:40:
Timestamp NonPagedMB NtFC_MB NtFC_Outstanding
2026-08-10 08:18:32 964 0 9
2026-08-10 08:19:33 962 0 9
2026-08-10 08:20:35 970 2 21,671 <-- app launched 08:20:32-40
2026-08-10 08:21:37 1232 37 403,921
2026-08-10 08:22:39 1298 72 790,376
2026-08-10 08:23:41 1333 108 1,177,146
2026-08-10 08:24:44 1368 144 1,576,133
2026-08-10 08:25:46 1405 180 1,968,793
A quantity that had not moved in two days went from 9 outstanding allocations to
1.97 million in five minutes.
3. Linear growth over 9 hours
Timestamp NonPagedMB NtFC_MB NtFC_Outstanding AvailMB
2026-08-10 08:20:35 970 2 21,671 40091
2026-08-10 10:00:35 4737 3545 38,723,030 31340
2026-08-10 12:00:11 9300 7867 85,928,890 27181
2026-08-10 14:00:46 14133 12417 135,629,792 20624
2026-08-10 16:00:23 18795 16880 184,371,695 17715
2026-08-10 17:10:25 21588 19559 213,641,424 14795
Measured rate, steady and li…
Note: Content was truncated.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗