diff --git a/pytest.ini b/pytest.ini
index 7a1413f25a9b86df6fe419a1cd09eb6f74d90b9c..9fa2d75a39cb3c34a52416c06d11f80d11abb1fd 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -1,5 +1,5 @@
 [pytest]
-addopts = --doctest-modules
+addopts = --doctest-modules -p no:pytest_swh_core
 norecursedirs = docs .*
 markers =
     fs: tests that involve filesystem ios
diff --git a/requirements-cli.txt b/requirements-cli.txt
index 7365d1f9c6169a1f81b7a2272b8fe543e524297a..8564d0090a8429bb78e1e5f90d36a424567f198f 100644
--- a/requirements-cli.txt
+++ b/requirements-cli.txt
@@ -1,3 +1,3 @@
-swh.core
+swh.core >= 0.3
 Click
 dulwich
diff --git a/setup.py b/setup.py
index f42058ca01a4bdd9cd25e6eda6dd07b77db5db54..8f9d32fdcec61b2ac22ea9928cfe8ebabca8cd8a 100755
--- a/setup.py
+++ b/setup.py
@@ -54,14 +54,14 @@ setup(
     ),
     extras_require={
         "cli": parse_requirements("cli"),
-        "testing": parse_requirements("test"),
+        "testing": parse_requirements("test") + parse_requirements("cli"),
     },
     include_package_data=True,
     entry_points="""
         [console_scripts]
         swh-identify=swh.model.cli:identify
         [swh.cli.subcommands]
-        identify=swh.model.cli:identify
+        identify=swh.model.cli
     """,
     classifiers=[
         "Programming Language :: Python :: 3",
diff --git a/swh/model/cli.py b/swh/model/cli.py
index 68a368050825a86926f0ccba39c2bc01cc22c9b0..4c8b7c17c4a4ddd49987d4e00db3938d05f57feb 100644
--- a/swh/model/cli.py
+++ b/swh/model/cli.py
@@ -9,6 +9,8 @@ import sys
 # WARNING: do not import unnecessary things here to keep cli startup time under
 # control
 import click
+from swh.core.cli import swh as swh_cli_group
+
 
 CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"])
 
@@ -138,7 +140,7 @@ def identify_object(obj_type, follow_symlinks, obj):
     return (obj, swhid)
 
 
-@click.command(context_settings=CONTEXT_SETTINGS)
+@swh_cli_group.command(context_settings=CONTEXT_SETTINGS)
 @click.option(
     "--dereference/--no-dereference",
     "follow_symlinks",