Skip to main content

Developer and AI cache coverage

This page describes cache coverage added in Cleanr v0.17.0. Older releases do not include these rules or protections. The rules use standard user locations, leave new candidates unselected for review, and never invoke a tool's native cleanup command. The shared inactivity filter still applies; modification age does not prove that a runtime, model or environment is unused.

Reviewable cache locations​

~ means the user home, and %LOCALAPPDATA% means the Windows local application data directory. The table lists the default layouts matched by these rules.

FamilymacOSLinuxWindows
Playwright~/Library/Caches/ms-playwright~/.cache/ms-playwright%LOCALAPPDATA%/ms-playwright
Puppeteer~/.cache/puppeteer~/.cache/puppeteer~/.cache/puppeteer
Electron~/Library/Caches/electron~/.cache/electron%LOCALAPPDATA%/electron/Cache
Cypress~/Library/Caches/Cypress~/.cache/Cypress%LOCALAPPDATA%/Cypress/Cache
Go buildExisting macOS rule~/.cache/go-build%LOCALAPPDATA%/go-build
pipExisting macOS ruleExisting Linux rule%LOCALAPPDATA%/pip/Cache
sccache~/Library/Caches/Mozilla.sccache~/.cache/sccache%LOCALAPPDATA%/Mozilla/sccache
TorchInductor / nested Triton—/tmp/torchinductor_<user> and its triton child—
JetBrains indexes~/Library/Caches/JetBrains/<product-version>/index~/.cache/JetBrains/<product-version>/index%LOCALAPPDATA%/JetBrains/<product-version>/index
JetBrains logs~/Library/Logs/JetBrains/<product-version>Product system directory's log childProduct system directory's log child
Conda package archivesStandard home package caches, described belowSameSame
Hugging Face Xet chunks~/.cache/huggingface/xet/<environment>/chunk_cacheSameSame

Browser binaries can be shared by multiple projects. Review retained versions and offline requirements before selection; a later run can require large downloads. Stop the owning tools first. Compiler caches may require expensive recompilation or GPU autotuning. sccache has a background server, so closing a terminal alone may not stop it.

TorchInductor discovery expands only direct torchinductor_* directories under the system temporary anchor. It checks native effective-user ownership without trusting the username in the directory name or environment variables. The rule matches the standard /tmp layout; a custom temporary/cache location is not claimed as supported. Ownership is checked again immediately before execution. The parent and nested Triton candidate share the normal overlap handling: select one, and their bytes are counted once.

JetBrains coverage is limited to versioned IntelliJ IDEA (IntelliJIdea, IdeaIC), PyCharm (PyCharm, PyCharmCE) and WebStorm directories. Only the generated index leaf and diagnostic logs are reviewable. Local History, plugins, configuration, scratches, unreviewed products and unknown future children remain read-only. Logs cannot be regenerated after their diagnostic history is removed.

Conda coverage requires regular .conda or .tar.bz2 files directly inside pkgs, with a regular urls.txt marker observed in the same scan. Standard home roots are .conda, miniconda3, anaconda3, miniforge3, and their documented capitalized installation names. Extracted directories, including directories with archive-looking names, installed environments and metadata are retained. Custom/shared package roots and arbitrary files in Downloads are not recognized by this rule.

Xet coverage includes the current environment-specific chunk_cache and the older direct xet/chunk_cache layout. Model blobs, datasets, tokens, shared references, upload shard_cache, resumable staging and unknown state remain read-only. Chunk caching is optional and is disabled by default in newer hf_xet versions; this rule does not imply a cache exists or guarantee meaningful savings.

Read-only boundaries and process checks​

uv caches are inspection-only. Upstream requires uv's own cache-management and locking; direct filesystem cleanup is unsafe. This protects ~/.cache/uv, the legacy macOS ~/Library/Caches/uv location, and %LOCALAPPDATA%/uv. The prior broad download-cache rules no longer treat uv as a trash candidate.

Inspection rules retain their reason and risk in local analysis evidence, with read_only_scope and the existing excluded recommendation. A retained path, its covering ancestors, and retained descendants cannot enter a cleanup plan. Built-in inspection protections also survive disabling their cleanup pack. Protection is independent of rule priority, manual selection and recommendation state. It also applies when scanning a candidate directly inside a retained subtree. An entry inspection protects a mixed container while allowing explicitly reviewed children; a subtree inspection retains every descendant. Execution rejects selected inspection evidence before creating a cleanup journal.

Runtime guards check known process and executable names, including Python version suffixes. An unavailable process snapshot or required ownership check blocks selection. These are conservative checks, not proof that an arbitrary renamed, embedded or subsequently started application cannot use the cache. Quit all relevant jobs before cleanup. Cleanr does not terminate processes, execute project configuration, prune Docker, delete model inventories, or run uv cache clean.

Global locations use the developer-cache category; JetBrains diagnostic log locations use the log category. The most specific location preserves category isolation even when traversal roots are coalesced. User-defined environment variables and custom application configuration are not evaluated as executable configuration or treated as additional verified layouts.

Sources and verification limits​

Paths and retention boundaries were reviewed against upstream documentation on 2026-09-22. The implementation uses the existing globset matcher, snapshot-based marker evidence, sysinfo process checks and Rustix native user IDs. It adds no cleanup backend or application command execution.

Tests use generated temporary directories, the real scanner, rule registry, analysis and planning functions, injected process snapshots and a fake trash backend. Platform-path fixtures are not Windows/Linux device tests. They do not measure real GPU/IDE rebuilds, reclaimed space, or user demand. No real user caches are scanned or moved during these tests.