diff --git a/tools/apertis-pkg-merge-updates b/tools/apertis-pkg-merge-updates
index 01587579a67ae47c59a5e4c753d4af8d5da12774..78070a6193518ecbd8b61ee78dd0e83dbad93843 100755
--- a/tools/apertis-pkg-merge-updates
+++ b/tools/apertis-pkg-merge-updates
@@ -15,10 +15,12 @@ from pathlib import Path
 
 from debian.changelog import Changelog, VersionError, format_date
 from debian.debian_support import Version
+from sh import __version__ as sh_version
 from sh.contrib import git
 
 APERTIS_CI_NAME = "Apertis CI"
 APERTIS_CI_EMAIL = "devel@lists.apertis.org"
+RETURN_CMD = {} if sh_version.startswith("1.") else {"_return_cmd": True}
 
 
 def git_dir() -> str:
@@ -176,7 +178,7 @@ def main():
                 "merge",
                 "--ff-only",
                 rebase_tip,
-                _return_cmd=True,
+                **RETURN_CMD,
                 _ok_code=[0, 128],
                 _out="/dev/stdout",
                 _err="/dev/stderr",
@@ -216,7 +218,7 @@ def main():
         args.upstream,
         ":!debian/changelog",
         ":!debian/apertis/*",
-        _return_cmd=True,
+        **RETURN_CMD,
         _ok_code=[0, 1],
     )
     msg = [f"Sync from {args.upstream}."]
diff --git a/tools/apertis-pkg-merge-upstream-to-downstreams b/tools/apertis-pkg-merge-upstream-to-downstreams
index fd363c4b8bf4956ad6cba6d529c41a2188c55780..8927cdb865033d5a36bfd5367d45ad8566df3ba1 100755
--- a/tools/apertis-pkg-merge-upstream-to-downstreams
+++ b/tools/apertis-pkg-merge-upstream-to-downstreams
@@ -16,9 +16,13 @@ import urllib.parse
 import urllib.request
 from functools import partial
 
-from sh import ErrorReturnCode, ErrorReturnCode_2, apertis_pkg_merge_updates, echo
+from sh import ErrorReturnCode, ErrorReturnCode_2
+from sh import __version__ as sh_version
+from sh import apertis_pkg_merge_updates, echo
 from sh.contrib import git
 
+RETURN_CMD = {} if sh_version.startswith("1.") else {"_return_cmd": True}
+
 
 @dataclasses.dataclass
 class Conflict:
@@ -91,7 +95,7 @@ def is_minor_change(upstream, downstream):
         downstream,
         ":!debian/changelog",
         ":!debian/apertis/*",
-        _return_cmd=True,
+        **RETURN_CMD,
         _ok_code=[0, 1],
     )
     return o.exit_code == 0
@@ -357,7 +361,7 @@ def main():
                     "--is-ancestor",
                     upstream_branch,
                     downstream_branch,
-                    _return_cmd=True,
+                    **RETURN_CMD,
                     _ok_code=[0, 1],
                 ).exit_code
                 == 0
@@ -440,7 +444,7 @@ def main():
                     "diff",
                     "--quiet",
                     f"HEAD..{downstream_branch}",
-                    _return_cmd=True,
+                    **RETURN_CMD,
                     _ok_code=[0, 1],
                 )
                 if o.exit_code == 0:
diff --git a/tools/apertis-pkg-pull-updates b/tools/apertis-pkg-pull-updates
index 9be3571605733f5d4735ba87e5e9160d7e560f1d..7f71c77806efae6eae7140dcbe2217c3363e3258 100755
--- a/tools/apertis-pkg-pull-updates
+++ b/tools/apertis-pkg-pull-updates
@@ -23,8 +23,11 @@ from itertools import chain
 import yaml
 from debian.changelog import Changelog
 from debian.debian_support import Version
+from sh import __version__ as sh_version
 from sh.contrib import git
 
+RETURN_CMD = {} if sh_version.startswith("1.") else {"_return_cmd": True}
+
 
 def debian_branch(suite):
     return "debian/" + suite
@@ -60,7 +63,7 @@ def is_ancestor(this: str, other: str):
             "--is-ancestor",
             this,
             other,
-            _return_cmd=True,
+            **RETURN_CMD,
             _ok_code=[0, 1],
         ).exit_code
         == 0
@@ -441,7 +444,7 @@ def main():
                     "merge",
                     "--ff-only",
                     local_version_branch,
-                    _return_cmd=True,
+                    **RETURN_CMD,
                     _out="/dev/stdout",
                     _err="/dev/stderr",
                 )