The @check alias should detect dependency cycles $ cat >dune-project < (lang dune 3.2) > EOF $ cat >dune < (library (name foo)) > EOF $ cat >a.ml < module B = B > EOF $ touch b.ml b.mli a.mli $ dune build @all $ cat >b.ml < module A = A > EOF $ dune build @check Error: dependency cycle between modules in _build/default: B -> A -> B -> required by alias check [1] $ dune build @all Error: dependency cycle between modules in _build/default: B -> A -> B -> required by _build/default/foo.cma -> required by alias all [1]