Index: src/assets/js/guardian.js
===================================================================
--- src/assets/js/guardian.js	(revision f1c50f9e8909d1873e736e05e5b2cb0c167154ba)
+++ src/assets/js/guardian.js	(revision c628dcd4f42ed9edff0a903d425080e963484659)
@@ -118,5 +118,11 @@
       row.appendChild(wave);
       var btn = el('button', 'quiet small', T.release);
-      btn.addEventListener('click', function () { remove(w.other_uri, btn); });
+      // Releasing a ward is heavy and hard to undo (coming back needs a fresh
+      // offer the ward accepts), so it asks first and spells out what changes.
+      btn.addEventListener('click', function () {
+        var who = handleOf(w.other_uri, w.other_handle);
+        var msg = (T.release_confirm || 'Release {who}?').replace('{who}', who);
+        if (window.confirm(msg)) remove(w.other_uri, btn);
+      });
       row.appendChild(btn);
       card.appendChild(row);
