CleanVault 1.0.0 Techlosoft "Privacy Eraser" product line ================================================================================ WHAT IT IS CleanVault is a browser and application TRACE SCANNER. It ships with a built-in catalog of the places privacy-relevant artifacts actually live on Windows, macOS and Linux - browser caches, cookie jars, history databases, session stores, saved-credential files, recent-document lists, thumbnail caches, crash dumps and temp directories - and it FINDS them for you. That is the difference between CleanVault and its siblings: PrivacySweep securely multi-pass overwrites a path YOU name. EraseProof runs a recurring erasure policy against paths YOU name and keeps a ledger. CleanVault tells you WHERE the traces are in the first place. You do not have to know that Firefox keeps your browsing history in places.sqlite inside a randomly named profile directory, or that Windows Explorer keeps previews of your files in thumbcache_*.db long after the files are gone. CleanVault knows. It lists every location, tells you which of them exist on the machine, how many files and bytes each one holds, and how sensitive it is - and then it can quarantine them for you. THE SAFETY MODEL - READ THIS 1. CleanVault NEVER DELETES ANYTHING. Not once, not anywhere, in any mode. The only destructive-looking operation, "clean --apply", MOVES files into a quarantine directory you name. If CleanVault gets something wrong you can move the file straight back. 2. EVERYTHING IS A DRY RUN BY DEFAULT. "clean" prints exactly what it would move and then stops. Nothing happens without the explicit --apply flag. 3. QUARANTINE PRESERVES RELATIVE PATHS. A file at /.mozilla/firefox/abc.default/cookies.sqlite lands at /home/.mozilla/firefox/abc.default/cookies.sqlite Machine-scope files (see --system below) land under /system/... so the two namespaces can never collide. Restoring is a plain "mv". 4. EVERY APPLY WRITES A MANIFEST. /cleanvault-manifest.json records the source path, destination path, size, catalog entry and success flag for every single file. 5. ONLY CATALOG PATHS ARE EVER TOUCHED. CleanVault does not sweep your home directory looking for things that look temporary. It resolves the built-in catalog and acts on exactly what the catalog produces. Your Documents, Pictures, Desktop, source code and mail spool are never candidates, because no catalog entry points at them. 6. SYMLINKS ARE NEVER FOLLOWED AND NEVER MOVED. A symlink inside a cache directory cannot be used to drag CleanVault out of the root it was given. Every candidate is re-checked to be inside its root before it is acted on. 7. THE QUARANTINE MUST LIVE OUTSIDE THE SCANNED ROOT. CleanVault refuses to run if --quarantine is inside --home (or vice versa), so it can never eat its own output. 8. NOTHING IS OVERWRITTEN IN THE QUARANTINE. If a destination already exists, that one file is reported as a failure and the source is left alone. 9. WHEN A RENAME IS IMPOSSIBLE (a cross-filesystem move), CleanVault copies first, verifies the copy is byte-for-byte the right size, and only then removes the source. A short or failed copy leaves the original untouched. THE --home MODEL Every catalog path is relative. Nothing in the catalog is an absolute path. Paths are resolved against a root: --home Root for per-user artifacts. Defaults to the real home directory of the user running the tool. --system Root for machine-wide artifacts (currently: Windows Prefetch and C:\Windows\Temp). NOT SET BY DEFAULT, so machine-scope entries are reported as "skipped" until you opt in with --system C:\ or similar. This is deliberate, and it is what makes the tool auditable. You can point --home at a copy of a profile, a mounted disk image, a forensic export or a throwaway test tree and see exactly what CleanVault would do, without ever going near a live profile. Reviewers can verify the tool's behaviour with "find" and "du" instead of trusting it. COMMANDS cleanvault catalog [--os windows|darwin|linux] [--min-sensitivity LVL] [--json] Print the built-in catalog. No filesystem access at all. cleanvault scan [] [--home ] [--os NAME] [--system ] [--min-sensitivity low|medium|high] [--json] Resolve every catalog entry against the roots and report, per entry: found / absent / skipped, the number of regular files, the total bytes and the sensitivity. Read-only. Never modifies anything. cleanvault clean [] [--home ] --quarantine [--os NAME] [--system ] [--min-sensitivity low|medium|high] [--json] [--apply] Quarantine what scan found. DRY RUN unless --apply is given. cleanvault help | -h | --help Usage, exit status 0. cleanvault version Print the version. Flags may appear before or after the positional home root; the argument order is normalised before parsing. Usage errors print help to stderr and exit 1. SENSITIVITY LEVELS high Directly identifying or directly exploitable: cookie jars (live session tokens), history and visit databases, saved-credential stores, session/tab restore state, form history. medium Strongly revealing but indirect: browser caches, thumbnail caches, recent-document lists, top-sites lists, shell history, trash. low Incidental: code caches, crash dumps, error-reporting queues, temp directories, generic ~/.cache and ~/Library/Caches sweeps. --min-sensitivity filters entries below the given level out of scan and clean. The resulting file set is always a subset of the unfiltered set. HOW OVERLAPPING ENTRIES ARE COUNTED Some catalog entries nest inside others - for example ~/.cache/thumbnails sits inside the generic ~/.cache sweep. A file is claimed by the FIRST catalog entry that matches it, in catalog order, and specific entries are always listed before broad sweeps. This means per-entry file and byte counts sum exactly to the reported totals, with no double counting, and it means the totals can be checked directly against "find | wc -l" and "find -printf '%s\n'". WHAT THE CATALOG COVERS Chrome / Chromium / Edge (all three platforms) Cache, Code Cache, Cookies, Cookies (Network), History (+ journals), Sessions, Login Data, Top Sites. Firefox (all three platforms) cache2, cookies.sqlite, places.sqlite, formhistory.sqlite, sessionstore and sessionstore-backups, logins.json, new-tab thumbnails. Windows IE/legacy Edge WebCache and INetCache, Recent (jump lists, automatic destinations), Explorer thumbcache_*.db and iconcache_*.db, AppData\Local\Temp, CrashDumps, Windows Error Reporting, PowerShell PSReadLine console history, and - machine scope, requires --system - Windows\Prefetch and Windows\Temp. macOS Safari History.db, Downloads.plist, LastSession.plist, TopSites.plist, binarycookies, sandboxed container cookies and caches, legacy Safari cache, com.apple.sharedfilelist recent documents, QuickLook thumbnail cache, Library/Logs/DiagnosticReports, Saved Application State, and catch-all sweeps of ~/Library/Caches and ~/Library/Logs. Linux In-profile and ~/.cache Chromium-family locations, Firefox profile and cache locations, Chrome Crash Reports, ~/.local/share/recently-used.xbel, ~/.cache/thumbnails, ~/.local/share/Trash, ~/.bash_history, ~/.cache/coredumpctl, and a catch-all ~/.cache sweep. Run "cleanvault catalog --os " for the exact, authoritative list; the catalogs for the three platforms share no paths. WHAT IS IMPLEMENTED - The full built-in catalog above, keyed by OS, with app, artifact type, root-relative path or glob, scope and sensitivity. - catalog, in human-readable and JSON form, filterable by --os and --min-sensitivity. - scan: glob expansion, recursive directory walking, regular-file counting, byte totals, per-entry found/absent/skipped status with a reason. - clean: dry run by default, --apply to quarantine, relative-path-preserving moves, cross-filesystem copy-verify-remove fallback, no-overwrite protection, JSON plan output, and a JSON manifest of every move. - Root containment checks, symlink refusal, and quarantine/root nesting checks. - Machine-scope entries gated behind an explicit --system root. - Exit status 0 on success, 1 on usage error, bad root, or partial failure. WHAT IS NOT IMPLEMENTED - ROADMAP - SELECTIVE ROW-LEVEL ERASURE. CleanVault treats a database as a whole file. It does not parse the SQLite in places.sqlite, cookies.sqlite, History or Login Data, so it cannot remove individual history rows, individual cookies or a single saved login while leaving the rest of the profile intact. Today it is all-or-nothing per file. Row-level erasure, with a proper VACUUM afterwards so the deleted rows do not survive in free pages, is the largest planned feature. - LIVE-PROCESS DETECTION. CleanVault does not check whether the browser it is about to clean is currently running. Moving a profile database out from under a live browser can corrupt the profile or cause the browser to rewrite the file immediately. Until this lands, QUIT THE BROWSER BEFORE RUNNING clean --apply. Planned: detect running Chrome/Chromium/Edge/ Firefox/Safari processes and per-profile lock files, and refuse - or warn loudly - rather than touch a live profile. - SCHEDULED BACKGROUND SWEEPS. There is no daemon, timer, service or recurring policy. CleanVault runs when you run it. Planned: scheduled sweeps with retention windows, per-artifact schedules, and quarantine expiry. (Today, EraseProof is the sibling tool that handles recurring policy-driven work.) - NO SECURE OVERWRITE. CleanVault moves files; it does not overwrite their contents, and a move does not erase the original blocks on media that remaps writes. Quarantining is reversible on purpose. If you want the data genuinely destroyed, run PrivacySweep against the quarantine directory afterwards. - NO QUARANTINE RESTORE COMMAND. Restoring today is a manual "mv" guided by cleanvault-manifest.json. A "cleanvault restore --quarantine " command that replays the manifest in reverse is planned. - NO BROWSER-EXTENSION, PROFILE-DISCOVERY-BY-INI, OR CLOUD-SYNC AWARENESS. Firefox profiles are found by globbing the profile directory, not by reading profiles.ini. Artifacts synced to a vendor cloud account are not addressed by cleaning the local copy. TYPICAL SESSION # 1. What does CleanVault know about this platform? cleanvault catalog --os linux # 2. What actually exists in my home directory? cleanvault scan --home ~ # 3. What would it move? (nothing is touched) cleanvault clean --home ~ --quarantine /tmp/cv-quarantine # 4. Only the high-sensitivity artifacts, still a dry run cleanvault clean --home ~ --quarantine /tmp/cv-quarantine --min-sensitivity high # 5. Quit your browser, then actually do it cleanvault clean --home ~ --quarantine /tmp/cv-quarantine --min-sensitivity high --apply # 6. Changed your mind about one file mv /tmp/cv-quarantine/home/.mozilla/firefox/abc.default/places.sqlite \ ~/.mozilla/firefox/abc.default/places.sqlite BUILDING go build -o cleanvault . Go standard library only. No third-party dependencies, no network access required to build, no code generation, one source file. EXIT STATUS 0 success 1 usage error, bad or missing root, refused quarantine location, or one or more files could not be quarantined