A follow-up: There appear to be a couple of layers of bugs involved with this misbehavior.
What is happening: The configuration for an account (stored in a sqlite database) can/should have a boolean parameter named "savepass". If "savepass" is missing, the default value is "True". (See gajim/common/setting_values.py) In my config db, for reasons unknown to me, the "Local" account has no "savepass" parameter. Thus gajim treats it as "savepass == True" for this account, and that triggers the unstoppable kwallet dialogs. I do not actually use the Local account, so after a battle with the kwallet dialogs, I was able to turn off "Connect on startup" for this account. Upon a restart, gajim no longer tries to connect to that account and no longer insists on getting a password from a wallet. This lets me get on with using gajim. However, the Local account still has no savepass parameter, and I know of no way to provoke gajim to provision one. There appear to be (at least) three bugs involved here: 1) The default value for "savepass" should probably be False (or even None, with a code path that tries to solve the problem of whether or not there is a saved password involved). 2) If accessing a keystore/wallet fails, e.g. because someone hits a Cancel button, then gajim should take the hint and quit demanding access to a non-existent keystore. 3) There needs to be a mechanism to reset/clear the "savepass" parameter --- i.e., a mechanism to tell gajim to _stop_ storing the password in a keystore. -mm