kache never cleans up target directories on its own. You run kache clean when they pile up. mbx does it after builds: it removes a checkout's target once the checkout is deleted or has gone unused for 30 days, and removes the least recently used ones when they go over a disk budget. mbx wraps Cargo as well as rustc. Because it starts Cargo itself, it can do things a rustc wrapper can't: show build progress with cache hits and misses in place of Cargo's output, start a new checkout with the dependency builds another checkout already has (Cargo 1.100+), and optionally run test binaries within the same CPU and memory budget as compiles.