diff --git a/lib/hgaster/hooks/generic.py b/lib/hgaster/hooks/generic.py
index f15ce050885b9d839312ab59ef1be81c69c308c0..eff1d15cf0ddf9b8ae93f754c20d3b2b7fa49324 100644
--- a/lib/hgaster/hooks/generic.py
+++ b/lib/hgaster/hooks/generic.py
@@ -6,7 +6,7 @@ Define generic functions to define hooks.
 
 import re
 
-from mercurial import ui, util
+from mercurial import hg, ui, util
 
 from aslint.baseutils import force_list
 
@@ -180,7 +180,8 @@ def single_head_per_branch_hook(in_branch=None):
         for branch, heads in repo.branchmap().items():
             if in_branch and not re.search(in_branch, branch):
                 continue
-            if node.branch() != branch:
+            node = repo[node]
+            if node.branch() != branch or node.phase() == hg.phases.secret:
                 continue
             unclosed = [head for head in heads
                         if not repo[head].extra().get("close")]
diff --git a/share/test/hgaster/test_hooks.py b/share/test/hgaster/test_hooks.py
index 53d6c6ee8d637a2d21ecc985b6c7bae90695c04f..f4d48d50dd25da3e688057178a98021f88928d51 100644
--- a/share/test/hgaster/test_hooks.py
+++ b/share/test/hgaster/test_hooks.py
@@ -91,6 +91,7 @@ class FakeCset(object):
         self.hex = lambda: str(rev) * 10
         self.user = lambda: user
         self.branch = lambda: branch
+        self.phase = lambda: 0
         self.description = lambda: "[#0123] changeset description"
         self._head = head
         self.extra = lambda: dict(close=not head)