diff --git a/libempathy-gtk/empathy-protocol-chooser.c b/libempathy-gtk/empathy-protocol-chooser.c
index 9f57d92..852f381 100644
--- a/libempathy-gtk/empathy-protocol-chooser.c
+++ b/libempathy-gtk/empathy-protocol-chooser.c
@@ -178,6 +178,11 @@ protocol_choosers_add_cm (EmpathyProtocolChooser *chooser,
          * should use Gabble */
         continue;
 
+      if (!tp_strdiff (cm->name, "haze") &&
+          !tp_strdiff (proto->name, "sip"))
+        /* Haze's SIP implementation is pretty useless (bgo #629736) */
+        continue;
+
       if (tp_strdiff (cm->name, "haze") && !tp_strdiff (saved_cm_name, "haze"))
         {
           GtkTreeIter titer;
