diff --git a/stack/smp/smp_api.cc b/stack/smp/smp_api.cc
index 07d7f1e..b897c9c 100644
--- a/stack/smp/smp_api.cc
+++ b/stack/smp/smp_api.cc
@@ -243,35 +243,40 @@
 void SMP_SecurityGrant(const RawAddress& bd_addr, uint8_t res) {
   SMP_TRACE_EVENT("SMP_SecurityGrant ");
 
-  // If JUSTWORKS, this is used to display the consent dialog
-  if (smp_cb.selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS) {
-    if (res == SMP_SUCCESS) {
-      smp_sm_event(&smp_cb, SMP_SC_NC_OK_EVT, NULL);
-    } else {
-      SMP_TRACE_WARNING("%s() - Consent dialog fails for JUSTWORKS", __func__);
-      /* send pairing failure */
-      uint8_t failure = SMP_NUMERIC_COMPAR_FAIL;
-      smp_sm_event(&smp_cb, SMP_AUTH_CMPL_EVT, &failure);
-    }
-  } else if (smp_cb.selected_association_model == SMP_MODEL_ENCRYPTION_ONLY) {
-    if (res == SMP_SUCCESS) {
-      smp_cb.sec_level = SMP_SEC_UNAUTHENTICATE;
+  // If just showing consent dialog, send response
+  if (smp_cb.cb_evt == SMP_CONSENT_REQ_EVT) {
+    // If JUSTWORKS, this is used to display the consent dialog
+    if (smp_cb.selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS) {
+      if (res == SMP_SUCCESS) {
+        smp_sm_event(&smp_cb, SMP_SC_NC_OK_EVT, NULL);
+      } else {
+        SMP_TRACE_WARNING("%s() - Consent dialog fails for JUSTWORKS",
+                          __func__);
+        /* send pairing failure */
+        uint8_t failure = SMP_NUMERIC_COMPAR_FAIL;
+        smp_sm_event(&smp_cb, SMP_AUTH_CMPL_EVT, &failure);
+      }
+    } else if (smp_cb.selected_association_model == SMP_MODEL_ENCRYPTION_ONLY) {
+      if (res == SMP_SUCCESS) {
+        smp_cb.sec_level = SMP_SEC_UNAUTHENTICATE;
 
-      tSMP_KEY key;
-      tSMP_INT_DATA smp_int_data;
-      key.key_type = SMP_KEY_TYPE_TK;
-      key.p_data = smp_cb.tk;
-      smp_int_data.key = key;
+        tSMP_KEY key;
+        tSMP_INT_DATA smp_int_data;
+        key.key_type = SMP_KEY_TYPE_TK;
+        key.p_data = smp_cb.tk;
+        smp_int_data.key = key;
 
-      memset(smp_cb.tk, 0, BT_OCTET16_LEN);
-      smp_sm_event(&smp_cb, SMP_KEY_READY_EVT, &smp_int_data);
-    } else {
-      SMP_TRACE_WARNING("%s() - Consent dialog fails for ENCRYPTION_ONLY",
-                        __func__);
-      /* send pairing failure */
-      uint8_t failure = SMP_NUMERIC_COMPAR_FAIL;
-      smp_sm_event(&smp_cb, SMP_AUTH_CMPL_EVT, &failure);
+        memset(smp_cb.tk, 0, BT_OCTET16_LEN);
+        smp_sm_event(&smp_cb, SMP_KEY_READY_EVT, &smp_int_data);
+      } else {
+        SMP_TRACE_WARNING("%s() - Consent dialog fails for ENCRYPTION_ONLY",
+                          __func__);
+        /* send pairing failure */
+        uint8_t failure = SMP_NUMERIC_COMPAR_FAIL;
+        smp_sm_event(&smp_cb, SMP_AUTH_CMPL_EVT, &failure);
+      }
     }
+    return;
   }
 
   if (smp_cb.smp_over_br) {
