Skip to content

Configuration

Alex Coulombe edited this page Aug 8, 2026 · 2 revisions

Configuration

Drop a .ueclean.json next to a .uproject to override the global defaults for that project. It's safe to commit to a repo so a team shares one policy.

{
  "enabled": true,
  "min_age_days": 30,
  "min_free_gb": 100,
  "keep_binaries_for_cpp": true,
  "targets": ["intermediate", "plugin_intermediate", "ddc", "cooked", "staged", "logs", "crashes"]
}

Fields

Key Default Meaning
enabled true false opts the project out of cleanup entirely.
min_age_days 14 Days since last real activity (see Safety-Model on how freshness is measured) before this project is eligible.
min_free_gb 100 Free-space threshold that triggers a cleanup pass. 0 makes age the sole trigger.
keep_binaries_for_cpp true Keep Binaries on C++ projects even when otherwise eligible.
targets see below Which reclaimable locations are in play for this project.

Target keys

Key Path Default
intermediate Intermediate on
plugin_intermediate Plugins/*/Intermediate on
binaries Binaries on
plugin_binaries Plugins/*/Binaries on
build Build on
ddc DerivedDataCache on
cooked Saved/Cooked on
staged Saved/StagedBuilds on
logs Saved/Logs on
crashes Saved/Crashes on
autosaves Saved/Autosaves on, but gated at 90 days regardless of min_age_days
saved_config Saved/Config off — opt-in, costs your editor layout

An unrecognized key in targets is a hard error, not a silent no-op — a typo can't quietly disable a protection you thought you had.

Never touched, regardless of config

Content, Source, Config, the Plugins directory itself, and Saved/SaveGames cannot be added to targets — they aren't in the target table at all, so there's no key that would reach them. See Safety-Model.

Opting out from the GUI

The "Never clean this" button in custodian.gui writes {"enabled": false} for you — see GUI.

Picking targets from the GUI

custodian.gui has a "Clean targets (N/12)…" button next to "Never clean this" — checkboxes for the same keys above, applied as the default for any project that doesn't have its own .ueclean.json. A project's own file still wins over the GUI's selection, same layering as everything else here. Use the file when you want a policy that travels with the repo; use the GUI button for a one-off "just Intermediate this time" pass.

Clone this wiki locally