Create a bad rule that doesn't allow the sandbox to be deleted. Note that this rule also fails. We make sure that we see both the error from the rule and the sandbox cleanup. $ cat >dune < (rule > (target foo) > (action (bash "\| touch foo && mkdir bar && touch bar/x && chmod -w bar && > "\| echo failed action && exit 1 > ))) > EOF $ cat >dune-project < (lang dune 3.11) > EOF $ dune build ./foo --sandbox=copy 2>&1 | sed -E 's#/.*.sandbox/[^/]+#/.sandbox/$SANDBOX#g' File "dune", lines 1-5, characters 0-157: 1 | (rule 2 | (target foo) 3 | (action (bash "\| touch foo && mkdir bar && touch bar/x && chmod -w bar && 4 | "\| echo failed action && exit 1 5 | ))) Error: failed to delete sandbox in _build/.sandbox/$SANDBOX Reason: rmdir(_build/.sandbox/$SANDBOX/default/bar): Directory not empty File "dune", lines 1-5, characters 0-157: 1 | (rule 2 | (target foo) 3 | (action (bash "\| touch foo && mkdir bar && touch bar/x && chmod -w bar && 4 | "\| echo failed action && exit 1 5 | ))) failed action Manual cleaning step so the dune executing the test suite doesn't croak trying to delete the readonly dir $ chmod -R +w _build && rm -rf _build