diff --git a/resources/static/dialog/controllers/dialog_controller.js b/resources/static/dialog/controllers/dialog_controller.js
index 7e0af554a29e7489762926c6030f748596e598cf..3386e7f0b4671ed661b1be3eba1a50907186c72f 100644
--- a/resources/static/dialog/controllers/dialog_controller.js
+++ b/resources/static/dialog/controllers/dialog_controller.js
@@ -95,6 +95,7 @@
         var self=this;
         self.onsuccess = onsuccess;
         self.onerror = onerror;
+        self.allowPersistent = true; // XXX We need to get this info from somewhere.
 
         if('onLine' in navigator && !navigator.onLine) {
           self.doOffline();
@@ -217,11 +218,13 @@
       },
 
       doPickEmail: function() {
-        this.element.pickemail({
+        var self=this;
+        self.element.pickemail({
           // XXX ideal is to get rid of this and have a User function
           // that takes care of getting email addresses AND the last used email
           // for this site.
-          origin: user.getHostname()
+          origin: user.getHostname(),
+          allow_persistent: self.allowPersistent
         });
       },
 
diff --git a/resources/static/dialog/controllers/pickemail_controller.js b/resources/static/dialog/controllers/pickemail_controller.js
index 01cea06fa081d06c60431a99c3fbfcc52031075d..e60ca3099107fb7b92489554deb4d9005513f6d8 100644
--- a/resources/static/dialog/controllers/pickemail_controller.js
+++ b/resources/static/dialog/controllers/pickemail_controller.js
@@ -65,7 +65,7 @@
 
     var self=this;
     animateSwap("#addEmail", "#selectEmail", function() {
-      if(!self.find("input[type=radio]:checked").length) {
+      if (!self.find("input[type=radio]:checked").length) {
         // If none are already checked, select the first one.
         self.find('input[type=radio]').eq(0).attr('checked', true);
       }
@@ -86,7 +86,7 @@
 
   function checkEmail(email) {
     var identity = user.getStoredEmailKeypair(email);
-    if(!identity) {
+    if (!identity) {
       alert("The selected email is invalid or has been deleted.");
       this.close("assertion_generated", {
         assertion: null
@@ -97,7 +97,7 @@
   }
 
   function tryClose() {
-    if(typeof assertion !== "undefined" && animationComplete) {
+    if (typeof assertion !== "undefined" && animationComplete) {
       this.close("assertion_generated", {
         assertion: assertion
       });
@@ -116,7 +116,7 @@
 
   function startAnimation() {
     var self=this;
-    if(!animationComplete) {
+    if (!animationComplete) {
       $("#signIn").animate({"width" : "685px"}, "slow", function () {
         // post animation
          body.delay(500).animate({ "opacity" : "0.5"}, "fast", function () {
@@ -140,7 +140,11 @@
     if (valid) {
       var origin = user.getOrigin();
       storage.site.set(origin, "email", email);
-      storage.site.set(origin, "remember", $("#remember").is(":checked"));
+
+      if (self.allowPersistent) {
+        storage.site.set(origin, "remember", $("#remember").is(":checked"));
+      }
+
       getAssertion.call(self, email);
     }
   }
@@ -151,12 +155,12 @@
 
     cancelEvent(event);
 
-    if(!bid.Validation.email(email)) {
+    if (!bid.Validation.email(email)) {
       return;
     }
 
     user.isEmailRegistered(email, function onComplete(registered) {
-      if(registered) {
+      if (registered) {
         bid.Tooltip.showTooltip("#already_taken");
       }
       else {
@@ -179,29 +183,35 @@
 
   PageController.extend("Pickemail", {}, {
     init: function(el, options) {
-      var origin = user.getOrigin();
-      this._super(el, {
+      var origin = user.getOrigin(),
+          self=this;
+
+      options = options || {};
+
+      self.allowPersistent = options.allow_persistent;
+
+      self._super(el, {
         bodyTemplate: "pickemail",
         bodyVars: {
           identities: user.getStoredEmailKeypairs(),
-          // XXX ideal is to get rid of this and have a User function
+          // XXX ideal is to get rid of self and have a User function
           // that takes care of getting email addresses AND the last used email
-          // for this site.
+          // for self site.
           siteemail: storage.site.get(origin, "email"),
+          allow_persistent: options.allow_persistent || false,
           remember: storage.site.get(origin, "remember") || false
         }
       });
-
       body.css("opacity", "1");
 
-      if(dom.getElements("#selectEmail input[type=radio]:visible").length === 0) {
+      if (dom.getElements("#selectEmail input[type=radio]:visible").length === 0) {
         // If there is only one email address, the radio button is never shown,
         // instead focus the sign in button so that the user can click enter.
         // issue #412
         $("#signInButton").focus();
       }
 
-      pickEmailState.call(this);
+      pickEmailState.call(self);
     },
 
     "#useNewEmail click": addEmailState,
diff --git a/resources/static/dialog/views/pickemail.ejs b/resources/static/dialog/views/pickemail.ejs
index e14c07fe17753f2a5f8c6faeab0ba587549e6857..0a0319b02df1b25a00b7fdf848758c6ccd5a1d49 100644
--- a/resources/static/dialog/views/pickemail.ejs
+++ b/resources/static/dialog/views/pickemail.ejs
@@ -17,10 +17,12 @@
 
       <div class="submit add cf">
 
-          <label for="remember" class="selectable">
-            <input type="checkbox" id="remember" name="remember" <% if (remember) { %> checked="checked" <% } %> />
-            Always sign in using this email
-          </label>
+          <% if (allow_persistent) { %>
+            <label for="remember" class="selectable">
+              <input type="checkbox" id="remember" name="remember" <% if (remember) { %> checked="checked" <% } %> />
+              Always sign in using this email
+            </label>
+          <% } %>
 
           <button id="signInButton">sign in</button>
 
diff --git a/resources/static/test/qunit/controllers/pickemail_controller_unit_test.js b/resources/static/test/qunit/controllers/pickemail_controller_unit_test.js
index 75390108f736adca6113bbde3c45e3913031aaed..1a88f607c5e1a41c29abca1b99414aebbc11e44a 100644
--- a/resources/static/test/qunit/controllers/pickemail_controller_unit_test.js
+++ b/resources/static/test/qunit/controllers/pickemail_controller_unit_test.js
@@ -95,29 +95,38 @@ steal.plugins("jquery").then("/dialog/controllers/page_controller", "/dialog/con
     equal(label.hasClass("preselected"), false, "the label has no class");
   });
 
-  function testRemember(remember) {
+  function testRemember(allowPersistent, remember) {
     storage.site.set(testOrigin, "remember", remember);
 
-    controller = el.pickemail().controller();
+    controller = el.pickemail({
+      allow_persistent: allowPersistent
+    }).controller();
     ok(controller, "controller created");
 
-    equal($("#remember").is(":checked"), remember, "appropriate checkbox check");
+    // remember can only be checked if allowPersistent is allowed
+    equal($("#remember").is(":checked"), allowPersistent ? remember : false, "appropriate checkbox check");
   }
 
-  test("pickemail controller with remember set to false", function() {
-    testRemember(false);
+  test("pickemail controller with allow_persistent and remember set to false", function() {
+    testRemember(false, false);
+  });
+
+  test("pickemail controller with allow_persistent set to false and remember set to true", function() {
+    testRemember(false, true);
   });
 
-  test("pickemail controller with remember set to true", function() {
-    testRemember(true);
+  test("pickemail controller with allow_persistent and remember set to true", function() {
+    testRemember(true, true);
   });
 
 
-  test("signIn saves email, remember status to storage", function() {
+  test("signIn saves email, remember status to storage when allow_persistent set to true", function() {
     storage.addEmail("testuser@testuser.com", {priv: "priv", pub: "pub"});
     storage.addEmail("testuser2@testuser.com", {priv: "priv", pub: "pub"});
 
-    controller = el.pickemail().controller();
+    controller = el.pickemail({
+      allow_persistent: true 
+    }).controller();
 
     $("input[type=radio]").eq(1).click();
     $("#remember").attr("checked", true);
@@ -136,5 +145,31 @@ steal.plugins("jquery").then("/dialog/controllers/page_controller", "/dialog/con
     equal(storage.site.get(testOrigin, "remember"), false, "remember saved correctly");
   });
 
+  test("signIn saves email, but not remember status when allow_persistent set to false", function() {
+    storage.addEmail("testuser@testuser.com", {priv: "priv", pub: "pub"});
+    storage.addEmail("testuser2@testuser.com", {priv: "priv", pub: "pub"});
+    storage.site.set(testOrigin, "remember", false);
+
+    controller = el.pickemail({
+      allow_persistent: false
+    }).controller();
+
+    $("input[type=radio]").eq(1).click();
+    $("#remember").attr("checked", true);
+
+    controller.signIn();
+
+    equal(storage.site.get(testOrigin, "email"), "testuser2@testuser.com", "email saved correctly");
+    equal(storage.site.get(testOrigin, "remember"), false, "remember saved correctly");
+
+    $("input[type=radio]").eq(0).click();
+    $("#remember").removeAttr("checked");
+
+    controller.signIn();
+
+    equal(storage.site.get(testOrigin, "email"), "testuser@testuser.com", "email saved correctly");
+    equal(storage.site.get(testOrigin, "remember"), false, "remember saved correctly");
+  });
+
 });