diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index c215fed..bb8482b 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -3550,3 +3552,15 @@ gsm_manager_add_autostart_apps_from_dir (GsmManager *manager,
 
         return TRUE;
 }
+
+gboolean
+gsm_manager_is_session_running (GsmManager *manager,
+                                gboolean   *running,
+                                GError    **error)
+{
+        g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);
+
+        *running = (manager->priv->phase == GSM_MANAGER_PHASE_RUNNING);
+        return TRUE;
+}
+
diff --git a/gnome-session/gsm-manager.h b/gnome-session/gsm-manager.h
index e34308a..8f24a4a 100644
--- a/gnome-session/gsm-manager.h
+++ b/gnome-session/gsm-manager.h
@@ -182,6 +182,9 @@ gboolean            gsm_manager_is_autostart_condition_handled (GsmManager     *
                                                                 GError        **error);
 gboolean            gsm_manager_set_phase                      (GsmManager     *manager,
                                                                 GsmManagerPhase phase);
+gboolean            gsm_manager_is_session_running             (GsmManager     *manager,
+                                                                gboolean       *running,
+                                                                GError        **error);
 
 G_END_DECLS
 
diff --git a/gnome-session/org.gnome.SessionManager.xml b/gnome-session/org.gnome.SessionManager.xml
index b8bec4e..eaf1ef5 100644
--- a/gnome-session/org.gnome.SessionManager.xml
+++ b/gnome-session/org.gnome.SessionManager.xml
@@ -301,6 +301,21 @@
       </doc:doc>
     </method>
 
+    <method name="IsSessionRunning">
+      <arg name="running" direction="out" type="b">
+        <doc:doc>
+          <doc:summary>True if the session has entered the Running phase, false otherwise</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Allows the caller to determine whether the session manager
+          has entered the Running phase, in case the client missed the
+          SessionRunning signal.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+
     <!-- Signals -->
 
     <signal name="ClientAdded">
