diff --git a/arkindex/dataimport/models.py b/arkindex/dataimport/models.py
index 29c91598dd19e2af289b857708eafa007c5cf67a..754059443e0eafb70f74fbc1f2a3a0d53123b0ca 100644
--- a/arkindex/dataimport/models.py
+++ b/arkindex/dataimport/models.py
@@ -3,6 +3,7 @@ from django.contrib.postgres.fields import JSONField
 from django.template.defaultfilters import slugify
 from django.conf import settings
 from django.utils.functional import cached_property
+from rest_framework.exceptions import ValidationError
 from enumfields import EnumField, Enum
 from arkindex.project.models import IndexableModel
 from arkindex.documents.models import Element, ElementType
@@ -51,6 +52,8 @@ class DataImport(IndexableModel):
         Create a ponos workflow with a recipe according to configuration
         '''
         assert self.workflow is None, 'A workflow is already setup'
+        if self.mode == DataImportMode.Repository and self.revision is not None and not self.revision.repo.enabled:
+            raise ValidationError('Git repository does not have any valid credentials')
 
         # Import data in Arkindex, then do the ML analysis
         tasks = {
@@ -75,6 +78,8 @@ class DataImport(IndexableModel):
         self.save()
 
     def retry(self):
+        if self.mode == DataImportMode.Repository and self.revision is not None and not self.revision.repo.enabled:
+            raise ValidationError('Git repository does not have any valid credentials')
         if self.workflow:
             self.workflow.retry()
         else:
diff --git a/arkindex/dataimport/tests/test_imports.py b/arkindex/dataimport/tests/test_imports.py
index 1787d5ffe980532daaf138b9091b71a15ad91631..2fe9e385a7791bac92e56e2e902109f6e26c749d 100644
--- a/arkindex/dataimport/tests/test_imports.py
+++ b/arkindex/dataimport/tests/test_imports.py
@@ -172,6 +172,19 @@ class TestImports(FixtureAPITestCase):
         self.dataimport.refresh_from_db()
         self.assertEqual(self.dataimport.state, State.Unscheduled)
 
+    def test_retry_repo_disabled(self):
+        self.client.force_login(self.user)
+        self.dataimport.mode = DataImportMode.Repository
+        self.dataimport.revision = self.rev
+        self.dataimport.save()
+        self.dataimport.start()
+        self.dataimport.workflow.tasks.all().update(state=State.Error)
+        self.assertEqual(self.dataimport.state, State.Error)
+        self.creds.delete()
+        response = self.client.post(reverse('api:import-retry', kwargs={'pk': self.dataimport.id}))
+        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
+        self.creds.save()
+
     def test_failures_requires_login(self):
         self.dataimport.failures.create(path='path/to/file', message='something')
         response = self.client.get(reverse('api:import-failures', kwargs={'pk': self.dataimport.id}))
diff --git a/arkindex/dataimport/tests/test_repos.py b/arkindex/dataimport/tests/test_repos.py
index 60caf2031e82612bdfcbc0e63730e50d929f3810..0d2b6d538489e7a0c0f2b5be2b5006a87ac15b90 100644
--- a/arkindex/dataimport/tests/test_repos.py
+++ b/arkindex/dataimport/tests/test_repos.py
@@ -1,6 +1,7 @@
 from arkindex.project.tests import FixtureTestCase
 from arkindex.dataimport.models import Repository, DataImport, DataImportMode
 from ponos.models import Workflow
+from rest_framework.exceptions import ValidationError
 
 
 class TestRepositories(FixtureTestCase):
@@ -29,13 +30,18 @@ class TestRepositories(FixtureTestCase):
         self.creds.delete()
         self.assertEqual(Workflow.objects.count(), 0)
 
-        with self.assertRaises(Exception):
-            DataImport.objects.create(
-                mode=DataImportMode.Repository,
-                revision=self.rev,
-                creator=self.superuser,
-                corpus=self.corpus,
-            ).start_import()
+        di = DataImport.objects.create(
+            mode=DataImportMode.Repository,
+            revision=self.rev,
+            creator=self.superuser,
+            corpus=self.corpus,
+        )
+
+        with self.assertRaises(ValidationError):
+            di.start()
+
+        with self.assertRaises(ValidationError):
+            di.retry()
 
         self.assertEqual(Workflow.objects.count(), 0)
         self.creds.save()