diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index b4c324b928..a9b0aa3018 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -76,9 +76,11 @@
+ runOnUiThread {
+ button.isEnabled = true
+ Toast.makeText(
+ this,
+ "Failed to clear session state: ${err.message}",
+ Toast.LENGTH_SHORT,
+ ).show()
+ }
+ }.onSuccess {
+ runOnUiThread {
+ finish()
+ }
+ }
+ }
+ }
+
+ private fun cancelAgentSession(
+ sessionId: String,
+ button: Button,
+ ) {
+ button.isEnabled = false
+ thread(name = "CodexSessionPopupCancel-$sessionId") {
+ runCatching {
+ sessionController.cancelSession(sessionId)
+ }.onFailure { err ->
+ runOnUiThread {
+ button.isEnabled = true
+ Toast.makeText(
+ this,
+ "Failed to clear session state: ${err.message}",
+ Toast.LENGTH_SHORT,
+ ).show()
+ }
+ }.onSuccess {
+ runOnUiThread {
+ finish()
+ }
+ }
+ }
+ }
+
+ private fun isTopLevelAgentSession(session: AgentSessionDetails): Boolean {
+ return session.anchor == AgentSessionInfo.ANCHOR_AGENT &&
+ session.parentSessionId == null
+ }
+
private fun isTopLevelHomeSession(session: AgentSessionDetails): Boolean {
return session.anchor == AgentSessionInfo.ANCHOR_HOME &&
session.parentSessionId == null
diff --git a/android/app/src/main/res/layout/activity_session_result_popup.xml b/android/app/src/main/res/layout/activity_session_result_popup.xml
index 0a7653aaf9..043951ea54 100644
--- a/android/app/src/main/res/layout/activity_session_result_popup.xml
+++ b/android/app/src/main/res/layout/activity_session_result_popup.xml
@@ -14,9 +14,8 @@