This page can be used to request edit filters, or changes to existing filters. Edit filters are primarily used to address common patterns of harmful editing.
Private filters should not be discussed in detail. If you wish to discuss creating an LTA filter, or changing an existing one, please instead email details to wikipedia-en-editfilterslists.wikimedia.org.
Otherwise, please add a new section at the bottom using the following format:
== Brief description of filter ==
*'''Task''': What is the filter supposed to do? To what pages and editors does it apply?
*'''Reason''': Why is the filter needed?
*'''Diffs''': Diffs of sample edits/cases. If the diffs are revdelled, consider emailing their contents to the mailing list.
~~~~
Please note the following:
Edit filters are used primarily to prevent abuse. Contributors are not expected to have read all 200+ policies, guidelines and style pages before editing. Trivial formatting mistakes and edits that at first glance look fine but go against some obscure style guideline or arbitration ruling are not suitable candidates for an edit filter.
Filters are applied to all edits. Problematic changes that apply to a single page are likely not suitable for an edit filter. Page protection may be more appropriate in such cases.
Non-essential tasks or those that require access to complex criteria, especially information that the filter does not have access to, may be more appropriate for a bot task or external software.
Latest comment: 3 months ago19 comments6 people in discussion
Task: Identify mainspace edits that remove or otherwise disrupt the functioning of the short description template
Reason: Per Wikipedia:Short description, every mainspace article should have a short description. In other words, every article should either directly transclude Template:Short description or transclude it via another template. If an editor has a problem with an added short description, they should correct it rather than remove it. Ultimately, the template should never be removed from an article once it has been placed. The only three exceptions I can think of are:
Reversion of vandalism, though vandalism where a vandal both knows how to add a short description and does so despite other low hanging fruit is unlikely
Reverting to status quo when there is a disagreement/edit war as to what a page's short description should be (also rare)
Removing an override short description from a page that transcludes one from another template (also rare)
The reason for this filter is that removal or disruption of the short description template can serve as an indication of unconstructive edits, vandalism, or test edits, as the diffs below demonstrate.
Diffs:
Special:Diff/1169358517: unconstructive edit in which an IP user pasted text in place of the existing templates and lead
Special:Diff/1170711636: vandalism where an IP user replaced the short description template to soapbox
I can anecdotally say that I've come across many more instances of the template being removed or disrupted, hence this edit filter request, but I'm unable to provide more diffs at this time because of the difficulty locating them amongst my edit history of adding short descriptions.
I think something along these lines could work for the filter:
I'm not overly familiar with the filter rules syntax, so someone else could probably improve this. Basically we just need to check if an intact short description template was present on the previous version of the page and is now absent from the new version. Also, because of the exceptions above, I think it's probably best to exclude extended confirmed users.
Uhai (talk) 18:50, 15 September 2023 (UTC)Reply
Removing an override isn't that rare. I've reverted quite a few edits which override a bland but adequate SD provided by a template with a poor manual SD which has little to do with the topic. Certes (talk) 21:16, 15 September 2023 (UTC)Reply
Fair enough. Maybe the filter could trigger only for non-confirmed users instead of non-extended confirmed if false positives are a concern. Uhai (talk) 23:30, 15 September 2023 (UTC)Reply
@Suffusion of Yellow: Thanks! It's already caught some edits like Special:AbuseLog/36222921 and Special:AbuseLog/36222983 that are along the lines of what I was hoping to be able to identify, though additional exclusions for the overlaps you mentioned would be nice. My only concern is your regex may not catch more subtle changes like {{short description|Test}}to{{short descriptionTest}}or{{short description|Test} which would still break the template, though I don't have any diffs at the moment to evidence any frequency of this happening. Uhai (talk) 21:33, 26 October 2023 (UTC)Reply
The saved hits look pretty darn good in terms of FP rate and there's a good amount of them. I think with an exclusion for blankings/redirects and {{Short description|none}} (which doesn't produce any html) it'll do very well. I designed Special:AbuseFilter/957 before {{short description}} was as widespread as it is now, but now this filter would probably catch ~70-80% of 957's hits. Galobtter (talk) 23:36, 29 October 2023 (UTC)Reply
I concur that it's looking good. Fortunately, most of the saved hits are getting reverted quickly—how many of these are due to the existence of the filter is hard to say (probably very few since it doesn't have a descriptive name yet)—though I am finding an average of 2-3 out of every 50 saved hits that have been missed that I am going in and fixing, so it has been useful in that regard. Whether these stats justify permanent inclusion of the filter, I'll leave to others' opinions. I have since come up with the idea of doing a day-to-day delta of pages belonging to Category:Articles with short description on Toolforge to generate a report of pages that have had disruption or removal of the short description template, which may serve as a better alternative to this filter, or could just supplement it; I don't know.
@Suffusion of Yellow: My remaining concern is that the filter currently does not catch removal or disruption of a "none" short description because of line 8 and the fact that there's no HTML for this case, as Galobtter stated above, combined with line 7 checking for the existence of shortdescription in the HTML. There are currently 184,017 articles that have "none" as their SD, so it's not an insignificant number. I suppose I'm wondering at the reasoning for line 7 being
@Suffusion of Yellow Thoughts on how this has been doing? The hits have been looking good though there's still some co-triggering with Special:AbuseFilter/957 (which may be okay).
I'd like to suggest a change of the regex to \{\{\s*short[ _]description\s*\|(\s*1\s*\=[^\{\}\[\]\|]+|[^\{\}\[\]\|\=]+)\}\} since it turns out the equals sign doesn't break the template if the parameter name has been explicitly defined. The current pattern also does not match in this scenario which could be causing false negatives depending on how many transclusions there are out there doing as such. Uhai (talk) 23:40, 27 December 2023 (UTC)Reply
@Uhai: Now in 1285 (hist·log). I put the new_html check back (though it catches remove of "none" templates" now), because no regex is going to catch every edge case, and a catch-all should prevent any FPs. Zero false negatives is just not possible with any filter, and with a disallowing filter the focus should always be on preventing FPs. So the next step is creating a custom message. Rough draft:
An automated filter has identified this edit as potentially unconstructive, so it has been disallowed. Please do not remove the short description of this article. If you would like to experiment, please use the sandbox.
If you believe this page needs no short description, use {{Short description|none}} instead of removing the template. Otherwise, please report this error.
Looks good and all, but I would suggest replacing "If you believe this page needs no short description, use {{Short description|none}} instead of removing the template. Otherwise, please report this error." with "If you believe this page doesn't need a short description, please use {{Short description|none}} instead of removing the template. Otherwise, you may report this error." (or something similar like that). Also, we may or may not need to remove the report error button because the "Otherwise, you may report the error" notice makes it redundant. – 64andtim(talk)08:37, 5 January 2024 (UTC)Reply
@64andtim: The redundancy is intentional; there are many different editing interfaces, and I'm not sure if the "fancy" button will work from all of them, nor am I sure how clear it is to screen reader users. But I guess your wording flows a bit better, and I'll go with that. Will propose disallowing at EFN shortly. Suffusion of Yellow (talk) 20:12, 11 February 2024 (UTC)Reply
@Suffusion of Yellow It wasn't my initial intention when requesting this for this to be a disallow filter however I have gone through almost all of the ~1500 hits as of this post and have not seen a single false positive, so I also support changing it to disallow as this should reduce some of the burden on RC patrollers. Thanks for all your effort and iteration on this. Uhai (talk) 23:37, 11 January 2024 (UTC)Reply
There appears to be consensus in favor of setting to disallow at the EFN discussion. The sole oppose !vote was from 1AmNobody24 but they appear to have changed their opinion in the ensuing discussion. Uhai (talk) 14:00, 12 March 2024 (UTC)Reply
Latest comment: 3 months ago19 comments5 people in discussion
I’ve noticed that WP:RFPP/I/WP:RFPP/D seem to get an (at least slightly) noticeable number of requests to [un]protect the page Example Article Name (diffs from the start of 2024: [1], [2], [3], [4], [5], [6], [7], [8]). My assumption is that these come from submissions of the protection & unprotection forms where the default page name hasn’t been changed - either as a test, or because the requestor forgot to specify the page. Is it worth having an edit filter in place to catch these (which would hopefully prevent the test requests, while acting as a reminder to editors who’ve forgotten to enter a page name)? Will notify WT:RFPP of this request. All the best, —a smart kitten[meow]14:33, 9 February 2024 (UTC)Reply
Searching through the edits to the /Edit page with summaries "requesting an edit to" since the start of December shows no hits for "Example Article Name". On the other hand, the provided diffs indicate that this has been an issue for the increase and decrease pages. I'll use filter 1 to log any of these for a bit with the following conditions:
equals_to_any(
page_id,
59689745, /* [[Wikipedia:Requests for page protection/Increase]] */
59689765 /* [[Wikipedia:Requests for page protection/Decrease]] */
) &
action = 'edit' &
'=== [[Example Article Name]] ===' in added_lines
I understand, just wanted to let you know that it did get its first hit with a day or two of the change being added. I don't expect to notify you any more. Philipnelson99 (talk) 13:13, 16 February 2024 (UTC)Reply
It's been almost 2 weeks since this was added and it's gotten four hits, of those hits only one editor added a real report after the filter logged the action, the rest were cleared by another editor. Philipnelson99 (talk) 20:31, 27 February 2024 (UTC)Reply
The filter doesn't seem to get hits often, but I think that's expected. I would support making a new filter and setting it to tag or warn, because it works quite well. If it is set to warn, we'd need a new message to show of course. – PharyngealImplosive7(talk)01:48, 28 February 2024 (UTC)Reply
As the filter requester, my opinion is that warn would be better than tag in this instance; as the idea behind my original post was to prevent test requests, & remind editors to enter a page name when they've forgotten to. All the best, —a smart kitten[meow]03:12, 28 February 2024 (UTC)Reply
Okay, this seems to be an ongoing thing and while its just a few edits, no harm in adding a warn-only filter (especially since its actually valid to request decreasing protection for the example page so not disallowing, though unlikely to be intentional). I'm thinking something like
Your edit has triggered an automated edit filter because you appear to be requesting a change in the protection level for the example page Example Article Name, which is pre-loaded when you file a new request. Please replace that link (the [[Example Article Name]]) with a link to the article you actually wanted to make a request about, and be sure to provide a reason for the request.
If you're sure you still want to make this edit, go to the bottom of this page and click 'Publish changes' again, and it will be submitted as is. If you believe you received this message in error, you may report this error.
If you really meant to request a change in the protection level of Example Article Name, this message can be safely ignored.
Enabled and confirmed to work (triggered the filter for both the increase and decrease page, got warnings but was able to save) - disabled from filter 1. --DannyS712 (talk) 16:30, 11 March 2024 (UTC)Reply
Indeed, moving categories is already restricted to bots, page movers, and admins (per the move-categorypages right) and deletion is already only available to admins. Unless this has actually been a problem a filter isn't needed --DannyS712 (talk) 21:42, 14 February 2024 (UTC)Reply
Latest comment: 3 months ago10 comments5 people in discussion
Task: No knowledge of wikicodes, but it should apply to article namespaces, scanning for unautoconfirmed/IP edits, triggering when mentions of Israel/Hebrew is replaced with words like Palestine/Arabic/Levant.
Reason: There is a increase, likely due to recent events in the number of disruptive edits around Israel articles being replaced with irrelevant informations and Palestine mentions.
I personally don't think this a good candidate for an edit filter because while it's sometimes disruptive this can be contextually dependent and should probably not be disallowed automatically. Philipnelson99 (talk) 01:07, 1 March 2024 (UTC)Reply
I mean you're in the right place to request an edit filter, I'm just not sure this would be a good edit filter. If restricted to IPs/non-autoconfirmed that might reduce false positivess but I'm not convinced that would eliminate false positives altogether since it's hard to say if all replacements are disruptive. Happy to hear other opinions on it and it's really up to an EFM to decide to implement it. Philipnelson99 (talk) 01:47, 1 March 2024 (UTC)Reply
This is 1154 (hist·log). Note that it logs both Israel -> Palestine and Palestine -> Israel. As Philipnelson99 points out, setting this sort of filter to disallow would be a bad idea, and even warning might open up a can of worms. Suffusion of Yellow (talk) 02:59, 1 March 2024 (UTC)Reply
Suffusion of Yellow thanks for pointing out the logging filter, didn't realize it existed. I think logging is really the only reasonable course of action here. If an edit is indeed an issue, it will likely be reverted speedily. Setting a filter to warn when there's a chance that the edit was good faith and not intentionally disruptive seems unproductive to me. Philipnelson99 (talk) 03:09, 1 March 2024 (UTC)Reply
Probably could just be added with modification to 225, as that seems like the most relevant of the three, by adding to the end of line 3's string (included the last word in the code block for reference on where it probably should go), |(W|WANKA)KNIGHT|B+U+S+T|BUST A NUT"; . EggRoll97(talk) 18:54, 22 March 2024 (UTC)Reply
"Marville City Rail" has no mentions in the search bar, so it could be added to a new LTA filter, with marville\bcity\brail. I also dislike the idea of adding it to a public filter like 260. – PharyngealImplosive7(talk)14:48, 8 March 2024 (UTC)Reply
I've sent an email regarding a new private filter to track this vandal to EggRoll97, which in turn they've forwarded it to the edit filter mailing list. Codename Noreste 🤔 talk01:18, 5 April 2024 (UTC)Reply
Salt evasion
Latest comment: 4 months ago7 comments4 people in discussion
Task: Detect title containing "Dadasaheb Phalke International" or "Dada Saheb Phalke International" and disallow page creation.
equals_to_any(page_id, 0, 118) & equals_to_any(page_title, "Dadasaheb Phalke International", "Dada Saheb Phalke International" /* add more names of articles if needed */) & !"extendedconfirmed" in user_rights
This is a really basic version of what could be added if a whole new filter were to be created. I'd also suggest that this filter (if created of course) be private to stop users from being able to use their knowledge of regex/filter syntax to evade the filter. – PharyngealImplosive7(talk)20:50, 9 March 2024 (UTC)Reply
I concur that maintaining the filter's privacy is crucial to prevent gaming. Therefore, imo, only sysops should be granted creation privileges, particularly in light of the recent incident. GSS💬05:00, 10 March 2024 (UTC)Reply
Yeah. Also, for future cases like this, you should understand that there are only two levels of protection in the edit filter: public (everyone, registered or not) can see the filter, or just admins, EFHs, and EFMs can see it. – PharyngealImplosive7(talk)05:51, 10 March 2024 (UTC)Reply
It might be useful for this to not be a in-the-face notice but rather a filter that passively tags edits, atleast as a start. Sohom (talk) 05:27, 12 March 2024 (UTC)Reply
I checked this through batch testing, it already matched two redirects created and didn't show any false positives for the 2 edits it matched. Probably best to start on a filter with no actions rather than straight to tagging. EggRoll97(talk) 19:03, 22 March 2024 (UTC)Reply
@EggRoll97: You might want to change rcats := "\{\{.*(redirect|r from|r to).*\}\}|\{\{NASTRO comment\}\}"; into rcats := "\{\{.*(redirect|r from|r to|NASTRO comment).*\}\}" to condense the regex a bit more. – PharyngealImplosive7(talk)01:02, 5 April 2024 (UTC)Reply
One question: do we need the filter to log every single redirect creation without rcats, regardless if the user who created it is experienced or not? Codename Noreste 🤔 talk01:26, 5 April 2024 (UTC)Reply
It’s perfectly fine to ask and no offense taken. I am just a regular IP, and if you look back to my edits from January, it will look more clear. My IP just changed sometime in February to a vandal. 24.4.109.4 (talk) 02:12, 5 April 2024 (UTC)Reply
I've added in the regex and changed the deprecated variables out for page instead of article. As for user experience, it might be worthwhile to exclude bots, but other than that, it seems as though valid filter hits even occur on sysops, so given this is just a log-only filter, it may be best to keep it without exceptions for now. EggRoll97(talk) 04:30, 5 April 2024 (UTC)Reply
It might be worthwhile to add something like !("bot" in user_groups) but I know of no bot that creates redirect pages (though I could be mistaken as I don’t go into that part of Wikipedia often). – PharyngealImplosive7(talk)18:18, 5 April 2024 (UTC)Reply
@ToadetteEdit: No objections to limiting this a bit, though experienced users seem to be the main ones actually tripping this filter. If we limit it down to only new editors that are creating non-categorized redirects, there would indeed be a lower filter rate though, yes, though as far as I can tell the intent of the filter request was to catch all the uncategorized redirects. Will leave for feedback for a day or two before limiting though. Obligatory ping to @24.4.109.4, Codename Noreste, PharyngealImplosive7, and Geardona: as they were involved in creation. EggRoll97(talk) 21:41, 5 April 2024 (UTC)Reply
Exempting bots should do, although experienced editors do make redirects but sometimes forget to add rcats. My redirect creation (La Sultana del Norte) to Monterrey counts as one. Codename Noreste 🤔 talk21:44, 5 April 2024 (UTC)Reply
Pinging IPs doesn't do anything btw, though you might already know that. I just helped with the syntax. I want to point out though, that @Geardona said "[..]tell the editor to add some rcats", which sounds like they want a warn filter - pretty sure that would require community consensus, in whatever forum is most appropriate(i.e. likely not here). Unless just logging is sufficient?
Looking at it now, what would the issue with doing {{.*R.*}} that should hit every possible redirect template, as long as it stays only on #redirect pages. Geardona (talk to me?) 23:07, 5 April 2024 (UTC)Reply
I just realized that. See my next comment. I’m extremely worried about the amount of FPs though, as this will match huge numbers of different templates, many having nothing to do with rcats. – PharyngealImplosive7(talk)23:19, 5 April 2024 (UTC)Reply
Except {{NASTRO comment}} has an r in it so it would be included too by the filter. The amount of FPs might be concerning in here though, so maybe .*\br\b.* and code for NASTRO comment should work and minimize the amount of FPs. – PharyngealImplosive7(talk)23:18, 5 April 2024 (UTC)Reply
False negatives, you mean? And I don't think so, though admittedly I haven't checked, how common is it for people to create a redirect with a template that includes an R that isn't an rcat? Also this isn't looking for abuse or anything, so presumably no one is going to try to bypass the filter. – 2804:F14:8090:C501:8CF5:7412:F217:B3C2 (talk) 23:21, 5 April 2024 (UTC)Reply
Yeah. Look through all the times the filter was triggered and see if you find a false positive or negative. It’s tedious but the only method I know of. If the amount of templates with r in them is small enough, the regex could always be changed to \{\{.*r.*\}\} but someone should check the logs to understand how many false negatives we’re going to be dealing with, telling us whether we need something generic or to specify every variation individually. – PharyngealImplosive7(talk)23:39, 5 April 2024 (UTC)Reply
All right, we should get the regex ready and tested before going to any of the village pumps, if someone could set that up so we could review it that would be great. (log only, no warning) Geardona (talk to me?) 23:42, 5 April 2024 (UTC)Reply
@Geardona: I think the main question to you, before I pinged you because I was sure you wanted a warn filter, was what you think of Toadette's question about making the filter not go off on extended-confirmed edits *experienced users, which EggRoll97 then pinged you about.
Oh I am sorry, I would say that theres no reason to keep it to new users/ip's as its supposed to be a filter that gets rcats on every single new redirect. (sorry, I clearly need to focus) Geardona (talk to me?) 00:09, 6 April 2024 (UTC)Reply
I think that going through the list of rcat templates and seeing what doesn’t match the current regex, for example all the comic and middle earth templates could be the best thing us non EFMs can do. Otherwise an EFM could always use a test filter. My point about false positives and negatives still does stand though. – PharyngealImplosive7(talk)00:19, 6 April 2024 (UTC)Reply
I'll try to summarize:
0. The filter created for this was 1298 (hist·log);
1. Toadette asked "Shouldn't the filter exclude exoerienced users?[..]"
Comment by Geardona about that above (Geardona is the one who suggested the filter);
2. EggRoll97 also commented on the possibility of excluding bots (2 people agreed with that);
3. There are more rcat variants listed in WP:ALLRCATS (examples: link);
On that end it might be possible to just match \{\{.*r.*\}\}, discussion ongoing;
4. I point out and asked that Geardona appears to be asking for a warn filter, Geardona confirmed that.
I'm pretty sure this would require community consensus, though Geardona wants the regex ready and tested before starting any discussion about that (no one else besides Geardona commented on this yet);
Oh no, SoY is ranting again. Allow me to strenuously object to any sort of warning. Last night when I was bit tired, I decided to create a new redirect at maximal repeat. I usually don't bother with rcats, but this time I decided to do the "right" thing. It took me about five minutes to sift through the sea of tiny text at Template:R template index and figure that, no, even through I was redirecting from a phrase, the correct (?) template was {{r from related word}}. Or wait, was it {{r to related topic}}? Whatever, toss a coin. I can easily understand why people don't bother.
This is about edits that are unfinished, not harmful. A redirect without rcats is a net positive. A tagging filter is an excellent idea; it helps people who like categorizing redirects find the redirects to categorize. But a warning filter would be bitey to new users and irritating to experienced ones. Suffusion of Yellow (talk) 00:57, 6 April 2024 (UTC)Reply
Also not seeing any value in a warning filter. This filter is specifically designed to catch good-faith edits so someone else can come along and fix the redirect. I'm not a fan of tagging yet though until this whole idea of the r versus the current code is figured out. I did a couple of batch tests with that new \{\{.*r.*\}\} instead, and it seems to be working, but I'll hold off until the morning before I run it against a couple more edits and implement. Probably will go ahead and apply the tags at that point unless any objections arise overnight. EggRoll97(talk) 05:11, 6 April 2024 (UTC)Reply
@EggRoll97: Would it be better to check if the user is a bot after you check if it's a new page in article space? I think currently it's always checking if every user doing any action is a bot, probably why the average conditions are now 1.9 instead of 1.
Latest comment: 3 months ago8 comments4 people in discussion
Task: Warn and possibly disallow users attempting to add "Danny Duncan" or "dannyduncan69.com" to articles
Reason: Repeated addition of this non-notable YouTuber (per multipleAfDs) to articles, including recreations of his deleted article. I suspect this YouTuber (or one of his fans) is encouraging Wikipedia vandalism. One thing I will point out though is that this Forbes article establishes more WP:N than the subjects we cover in some articles have ever known, leading part of me to wonder if the AfD should be revisited.
PI7, the correction would be (?:daniel|danny) duncan|danny duncan69\.com, and I have tested the new regex under FilterDebugger. No false negatives or positives have happened. Codename Noreste 🤔 talk18:21, 28 March 2024 (UTC)Reply
@Codename Noreste: I think you may have made a mistake in the regex. The requester said that there isn’t any space in the website name that is being spammed, so correct me if I’m wrong but (?:daniel|danny)\bduncan|danny\b?duncan69\.com might work better, and allow all types of word-boundaries (if needed). – PharyngealImplosive7(talk)23:32, 1 April 2024 (UTC)Reply
Did you mean \s instead of \b there? The first \b can't match – it's between [ly] and d – and I've never seen \b? in the wild but logically it would have no effect. Certes (talk) 07:58, 2 April 2024 (UTC)Reply
Latest comment: 3 months ago5 comments2 people in discussion
Task: For the last few days I've found various IPs adding material about a Billy Flowers(see [28]) Examples are "(the Quora user who is a big rival of Billy Flowers}", "Billy Flowers, the world famous debunker of atheism, attended this university.", "He has engaged in debates with [https://www.quora.com/profile/Billy-Flowers-21 Billy Flowers before, such as when he created a YouTube video with a response to Billy Flowers's famous question about skydiving wit, h a Christian baby.", "* Billy Flowers – (born 1990), the man who debunked atheism"," Billy Flowers – (born 1990), the man who debunked atheism". See also the edit susmmaries, link to two IPs below.
Reason: to block the spam
Diffs: See [[29]]. Unfortunately I didn't keep samples from other IP addresses. ALso found [30].
Maybe we should add this to 614 (hist·log), with the regex billy?\sflowers, but the amount of false positives might be high due to legitimate uses of the name, so I would suggest that we test this out first on log only in a test filter to see how common these edits are and if the amount of false positives is manageable. – PharyngealImplosive7(talk)00:48, 3 April 2024 (UTC)Reply
Latest comment: 3 months ago4 comments4 people in discussion
Task: Prevent addition of Skibidi Toilet-related words to articles.
Reason: If you look in the filter log for edits blocked by filter "Memes and vandalism trends", a lot of them try to add "skibidi." This filter distinguishes users who trigger the "Memes and vandalism trends" filter who should be blocked from those that should be warned.
Diffs: Look in the filter log for edits blocked by filter "Memes and vandalism trends".
I suspect the change they wanted was to make that part of the filter affect autoconfirmed users. They mention "If you look in the filter log for edits blocked by filter[..]"(emphasis mine), so I assume that's just another way of saying disallowed edits - but the one obvious change they do make is !"extendedconfirmed" in user_groups, currently the filter starts with !("confirmed" in user_groups).