diff --git a/deriva/qt/auth_agent/ui/auth_widget.py b/deriva/qt/auth_agent/ui/auth_widget.py
index 05e7faf..90da677 100644
--- a/deriva/qt/auth_agent/ui/auth_widget.py
+++ b/deriva/qt/auth_agent/ui/auth_widget.py
@@ -65,6 +65,7 @@ def __init__(self, parent, config=None, credential_file=None, cookie_persistence
         self._session = requests.session()
         self.token = None
         self.default_profile = QWebEngineProfile("deriva-auth", self)
+        self.private_profile = QWebEngineProfile(self)
 
         logging.getLogger().setLevel(log_level)
         info = "%s v%s [Python: %s (PyQt: %s), %s]" % (
@@ -125,12 +126,14 @@ def login(self):
         logging.info("Authenticating with host: %s" % self.auth_url.toString())
         qApp.setOverrideCursor(Qt.WaitCursor)
         self._cleanup()
-        self.authn_session_page = \
-            QWebEnginePage(QWebEngineProfile(self), self.parent) \
+        self.authn_session_page = QWebEnginePage(self.private_profile, self.parent) \
             if not self.cookie_persistence else QWebEnginePage(self.default_profile, self.parent)
         self.authn_session_page.profile().setPersistentCookiesPolicy(
             QWebEngineProfile.ForcePersistentCookies if self.cookie_persistence else
             QWebEngineProfile.NoPersistentCookies)
+        if self.cookie_persistence:
+            logging.debug("QTWebEngine persistent storage located at: %s" %
+                          self.authn_session_page.profile().persistentStoragePath())
         self.authn_session_page.profile().cookieStore().cookieAdded.connect(self._onCookieAdded)
         self.authn_session_page.profile().cookieStore().cookieRemoved.connect(self._onCookieRemoved)
         self.authn_session_page.loadProgress.connect(self._onLoadProgress)
@@ -142,21 +145,20 @@ def login(self):
     def logout(self, delete_cookies=False):
         if not (self.auth_url and (self.auth_url.host() and self.auth_url.scheme())):
             return
-        if not self.authenticated():
-            return
-        try:
-            logging.info("Logging out of host: %s" % self.auth_url.toString())
-            if delete_cookies and self.cookie_persistence:
-                self.authn_session_page.profile().cookieStore().deleteAllCookies()
-            self._session.delete(self.auth_url.toString() + "/authn/session")
-            if self.credential_file:
-                creds = read_credential(self.credential_file, create_default=True)
-                host = self.auth_url.host()
-                if creds.get(host):
-                    del creds[host]
-                write_credential(self.credential_file, creds)
-        except Exception as e:
-            logging.warning("Logout error: %s" % format_exception(e))
+        if self.authenticated():
+            try:
+                logging.info("Logging out of host: %s" % self.auth_url.toString())
+                if delete_cookies and self.cookie_persistence:
+                    self.authn_session_page.profile().cookieStore().deleteAllCookies()
+                self._session.delete(self.auth_url.toString() + "/authn/session")
+                if self.credential_file:
+                    creds = read_credential(self.credential_file, create_default=True)
+                    host = self.auth_url.host()
+                    if creds.get(host):
+                        del creds[host]
+                    write_credential(self.credential_file, creds)
+            except Exception as e:
+                logging.warning("Logout error: %s" % format_exception(e))
         self._cleanup()
 
     def setSuccessCallback(self, callback=None):
@@ -244,6 +246,7 @@ def _onLoadFinished(self, result):
             self.authn_session_page.toPlainText(self._onSessionContent)
         else:
             if self.page() != self.authn_session_page:
+                self.page().deleteLater()
                 self.setPage(self.authn_session_page)
 
     def _onLoadProgress(self, progress):
@@ -300,7 +303,5 @@ def _cleanup(self):
             self.authn_session_page.loadFinished.disconnect(self._onLoadFinished)
             self.authn_session_page.profile().cookieStore().cookieAdded.disconnect(self._onCookieAdded)
             self.authn_session_page.profile().cookieStore().cookieRemoved.disconnect(self._onCookieRemoved)
-            if self.default_profile != self.authn_session_page.profile():
-                self.authn_session_page.profile().deleteLater()
             self.authn_session_page.deleteLater()
             self.authn_session_page = None
diff --git a/deriva/qt/auth_agent/ui/auth_window.py b/deriva/qt/auth_agent/ui/auth_window.py
index 72e8cc8..a8515b6 100644
--- a/deriva/qt/auth_agent/ui/auth_window.py
+++ b/deriva/qt/auth_agent/ui/auth_window.py
@@ -310,20 +310,19 @@ def changeEvent(self, event):
         super(AuthWindow, self).changeEvent(event)
 
     def closeEvent(self, event):
-        if not self.authenticated():
-            return
+        if self.authenticated():
+            msg = QMessageBox()
+            msg.setIcon(QMessageBox.Warning)
+            msg.setWindowTitle("Confirm Action")
+            msg.setText("Are you sure you wish to exit?")
+            msg.setInformativeText(
+                "If you close the application, your credentials will be invalidated once the application has exited.")
+            msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
+            ret = msg.exec_()
+            if ret == QMessageBox.No:
+                event.ignore()
+                return
 
-        msg = QMessageBox()
-        msg.setIcon(QMessageBox.Warning)
-        msg.setWindowTitle("Confirm Action")
-        msg.setText("Are you sure you wish to exit?")
-        msg.setInformativeText(
-            "If you close the application, your credentials will be invalidated once the application has exited.")
-        msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
-        ret = msg.exec_()
-        if ret == QMessageBox.No:
-            event.ignore()
-            return
         self.logout()
         self.systemTrayIcon.hide()
         self.deleteLater()