stack-clean-old: Clean away old stack build artefacts

[ bsd3, distribution, program ] [ Propose Tags ]

A tool for removing old .stack-work/install builds and .stack/snapshots & programs for older ghc versions to recover diskspace.

[Skip to Readme]


Maintainer's Corner

For package maintainers and hackage trustees


Versions [RSS] 0.1, 0.2, 0.2.1, 0.2.2, 0.3, 0.3.1, 0.4, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6
Change log
Dependencies base (>=4.8 && <5), directory (>=1.2.5), extra (>=1.4.3), filemanip, filepath, simple-cmd (>=0.1.4), simple-cmd-args (>=0.1.2) [details]
License BSD-3-Clause
Copyright 2020-2021 Jens Petersen <>
Author Jens Petersen <>
Maintainer Jens Petersen <>
Category Distribution
Home page
Bug tracker
Source repo head: git clone
Uploaded by JensPetersen at 2021-11-22T06:25:47Z
Distributions LTSHaskell:0.4.6, NixOS:0.4.6, Stackage:0.4.6
Executables stack-clean-old
Downloads 1259 total (7 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2021-11-22 [all 1 reports]

Readme for stack-clean-old-0.4.2

[back to package description]


A small tool to clean away older Haskell stack snapshot builds and ghc versions to recover diskspace.


stack-clean-old [size|list|remove|keep-minor|purge-older|delete-work] [-d|--delete] [(-p|--project) | (-g|--ghc)] [GHCVER]


  • --project (default in a stack project dir): act on .stack-work/install/
  • --global (default outside a project dir): act on ~/.stack/snapshots/ and ~/.stack/programs/

and the subcommands:

size: prints the total size of the above directories (size does not take a GHCVER argument).

list: shows the total size and number of snapshots per ghc version (the GHCVER argument is optional).

remove: removes for the specified ghc version (the GHCVER argument is required).

keep-minor: removes the builds/installs for older minor releases of ghc major versions. If GHCVER is given then only minor versions older than it are removed.

purge-older and delete-work: see sections below

If you remove any needed snapshot builds for a version of ghc, then you would have to rebuild them again for any projects still using them, so removal should be used cautiously, but it can recover a lot of diskspace.

Since version 0.4 dry-run mode is now the default and one needs to use --delete (-d) for actual deletion of files, after checking the dry-run output first.

Example usage

List a project's builds:

$ stack-clean-old list
154M  8.2.2  (5 dirs)
154M  8.4.4  (5 dirs)
163M  8.6.5  (5 dirs)

Remove project's 8.2.2 builds:

$ stack-clean-old remove --delete --project 8.2.2

(--project is optional in a project dir).

Remove stack ghc-8.4 snapshot builds and compilers before 8.4.4:

$ stack-clean-old list --global 8.4
421M  8.4.1  (7 dirs)
368M  8.4.2  (6 dirs)
489M  8.4.3  (8 dirs)
799M  8.4.4  (24 dirs)
$ stack-clean-old keep-minor -d -g 8.4.4
ghc-tinfo6-8.4.3 removed
7 dirs removed for 8.4.1
6 dirs removed for 8.4.2
8 dirs removed for 8.4.3

(--global is optional outside a project dir).

Purging older stack project builds

stack-clean-old purge-older

This command removes older stack builds from .stack-work/install/. By default it keeps 5 newest builds per ghc version.

The preservation/deletion is calculated and done per ghc version.

NB: If you regularly build your project for several branches/tags against the same LTS or ghc version then it is safer to avoid using purge-older.

Deleting all .stack-work/ subdirectories

stack-clean-old delete-work --recursive can be used to remove recursively all .stack-work/ dirs from a project to save space (seems same as stack clean --full).

stack-clean-old delete-work --all works from outside stack projects: please use with care with --delete.

Help output

(Note you can also run this tool via stack clean-old.)

To get help you can run stack-clean-old --help or just:

$ Stack clean up tool

Usage: stack-clean-old [--version] COMMAND
  Cleans away old stack-work builds (and pending: stack snapshots) to recover
  diskspace. Use the --delete option to perform actual removals.

Available options:
  -h,--help                Show this help text
  --version                Show version

Available commands:
  size                     Total size
  list                     List sizes per ghc version
  remove                   Remove for a ghc version
  keep-minor               Remove for previous ghc minor versions
  purge-older              Purge older builds in .stack-work/install
  delete-work              Remove project's .stack-work/ (optionally


Run stack install or cabal install

This tool complements stack-all which builds projects across LTS major versions and hence generates a lot of stack builds.

cabal-clean is a similar tool for cleaning old cached cabal build files.


BSD license



Use at your own risk: the author takes no responsibility for any loss or damaged caused by using this tool.

Bug reports, suggestions, and improvements are welcome.