diff --git a/bob/devtools/bootstrap.py b/bob/devtools/bootstrap.py
index b2f1377fe02dc0fa230df4912207bb87de8dc9c0..6963d6a78b4e21c12f9a442dcae102e439bd77f8 100644
--- a/bob/devtools/bootstrap.py
+++ b/bob/devtools/bootstrap.py
@@ -89,7 +89,7 @@ def human_time(seconds, granularity=2):
     return ", ".join([x for x in result[:granularity] if x is not None])
 
 
-def run_cmdline(cmd, env=None):
+def run_cmdline(cmd, env=None, **kwargs):
     """Runs a command on a environment, logs output and reports status.
 
     Parameters:
@@ -114,6 +114,7 @@ def run_cmdline(cmd, env=None):
         env=env,
         bufsize=1,
         universal_newlines=True,
+        **kwargs,
     )
 
     for line in iter(p.stdout.readline, ""):
diff --git a/bob/devtools/scripts/ci.py b/bob/devtools/scripts/ci.py
index ca22a5b83d09446d4797671e5012bfb4ecc8e25a..4bfde7d27eebca8312d830faadcd63a08bcce08d 100644
--- a/bob/devtools/scripts/ci.py
+++ b/bob/devtools/scripts/ci.py
@@ -1023,6 +1023,6 @@ def check(root):
         try:
             backup = os.environ.get("SKIP", "")
             os.environ["SKIP"] = "sphinx-build,sphinx-doctest"
-            run_cmdline(["python", "-m", "pre_commit", "run", "--all-files"])
+            run_cmdline(["python", "-m", "pre_commit", "run", "--all-files"], cwd=root)
         finally:
             os.environ["SKIP"] = backup