diff --git a/swh/model/hypothesis_strategies.py b/swh/model/hypothesis_strategies.py
index 5433b2a7a80940da091173bb5ad5627b52361ca9..8d3923c76536fe7f0888b7e8be14693f9002f6a9 100644
--- a/swh/model/hypothesis_strategies.py
+++ b/swh/model/hypothesis_strategies.py
@@ -153,7 +153,7 @@ def skipped_contents(draw):
 
     return draw(builds(
         SkippedContent,
-        length=optional(integers(min_value=0, max_value=2**63-1)),
+        length=integers(min_value=-1, max_value=2**63-1),
         sha1=optional(sha1()),
         sha1_git=optional(sha1_git()),
         sha256=optional(binary(min_size=32, max_size=32)),
diff --git a/swh/model/model.py b/swh/model/model.py
index 8a60f1812ba61b0fb57ec49df774e44dbb2f2f65..215afdb25fb7922e99bd18889f6240994c75c993 100644
--- a/swh/model/model.py
+++ b/swh/model/model.py
@@ -406,7 +406,7 @@ class Content(BaseContent):
     @length.validator
     def check_length(self, attribute, value):
         """Checks the length is positive."""
-        if self.status != 'absent' and value < 0:
+        if value < 0:
             raise ValueError('Length must be positive.')
 
     def to_dict(self):
@@ -427,7 +427,7 @@ class SkippedContent(BaseContent):
     sha256 = attr.ib(type=Optional[bytes])
     blake2s256 = attr.ib(type=Optional[bytes])
 
-    length = attr.ib(type=Optional[int])
+    length = attr.ib(type=int)
 
     status = attr.ib(
         type=str,
@@ -451,7 +451,7 @@ class SkippedContent(BaseContent):
     @length.validator
     def check_length(self, attribute, value):
         """Checks the length is positive or -1."""
-        if value is not None and value < -1:
+        if value < -1:
             raise ValueError('Length must be positive or -1.')
 
     def to_dict(self):