cross-posted from: https://lemmy.world/post/49778353
Also
/c/modabuse. Also/c/yepowertrippinbastards. Alsolemmy.ml/c/worldnews,comrade,ACAB, and 552 individual accounts across 67 instances, about half of them on lemmy.world.None of this is in the source code. It’s downloaded at runtime from a file nobody has ever looked at.
If you’re just tuning in
Tesseract is a third-party web frontend for Lemmy, maintained by asimons04 and licensed AGPL-3.0. Admins deploy it on their own servers alongside or instead of lemmy-ui, and there are public instances of it people use to browse Lemmy generally. If you’ve used a Lemmy site that didn’t look like stock Lemmy, there’s a fair chance it was this.
Last week db0 posted a PSA: Tesseract contains a blacklist of instance domains compiled directly into the application. 32 of them. Admins can’t see it, can’t configure it, and aren’t told it’s there. Connect to a listed instance and the app tells you it’s “incompatible,” which is not true.
I went through the code to see how that was implemented. The hardcoded list turns out to be the small half of the system.
There’s a second filter policy fetched over HTTP every time the app loads. It isn’t in the git repository. It’s unauthenticated and world-readable, so anyone can pull it. Right now it carries 552 user accounts, 2,275 username patterns, 54 instances, 97 communities, 289 keyword patterns and 351 domains, with every category set to hide matches rather than flag them. Not collapsed behind a click. Simply absent, with no indication anything was removed.
Verify all of it in ten seconds
curl -s https://tesseract.dubvee.org/tesseract/api/system/policy \ | base64 -d | gunzip > policy.jsonThat’s the live policy, base64-wrapped gzip, 111KB of JSON when it unpacks. There’s a stale fallback copy at
/data/policy.datas well.It filters criticism of moderators
lemmy.sdf.org/c/modabuse— listedlemmy.dbzer0.com/c/yepowertrippinbastards— listedlemmy.dbzer0.com/c/YPTBcirclejerk— listed- community regex
power ?tripping?- keyword
censoring meCall the rest of it whatever you like. This part is not spam defence.
It filters words
The 32 community name patterns include
Communis(t|m),Conservativ(e|es|ism),Leftis(t|m),Libertarian(ism)?,^Green Part(y|ies),Zionis(t|m),(Police|Cops),guillotineandbillionaire.Keywords include
comrade,ACAB,neoliberal,proletaria(n|t)anddeath to.Filtered communities on instances that aren’t blocked:
lemmy.ml/c/worldnews,lemmy.today/c/news,lemmy.ca/c/politicalnewscanada,lemmy.ca/c/usa,infosec.pub/c/strategic_unions.The 552 users aren’t bots
67 instances. 272 on lemmy.world alone, 40 on sh.itjust.works, 19 on lemmy.ca, and 28 instances contributing exactly one person each.
355 of the 552 usernames are plain alphabetic, twelve characters or under, median length eight. Only 36 look like spam registrations. A bot list looks like the opposite of that.
Seven of them aren’t even Lemmy. There are Mastodon and Friendica accounts in there: people who have never used Lemmy, hidden by a Lemmy frontend, with no possible way of finding out.
I have the list and I’m not posting it. Most of these are ordinary people who got pattern-matched, and 552 names on this comm is a harassment target inside an hour. Run the command above and grep for yourself.
And it lies about it
When the instance block fires you get: “Incompatible Instance. Not Supported. $instance is not compatible with Tesseract.”
Nothing is incompatible. It’s a policy decision dressed as an API error, and it’s what had db0 chasing a version mismatch that never existed.
For the hidden users, communities and keywords, you get no message at all.
Admins can’t switch it off
Tesseract has env vars for
PUBLIC_DOMAIN_BLACKLIST,PUBLIC_FAKE_NEWS_BLACKLISTand the shortener lists. There is none for either blocklist.enableToxicModebypasses the other filters and explicitly not this one.Self-host it and you cannot disable this, nothing in your config admits it exists, and the contents can change without you pulling a commit.
Before someone says it
A lot of that domain list is real spam defence. It filters conservatism as well as communism. “It targets the left” doesn’t survive the data and I’m not going to pretend it does.
The problem is that spam filtering and political editorial got welded into one undocumented, remotely-updatable blob, shipped hidden, to admins who’ve never read it and users who don’t know it’s there. The spam work is what makes the rest unauditable: “it’s a spam list” answers every individual question and none of the whole.
And
/c/modabuseis not spam.Asks
- Publish the runtime policy in the repo, or kill the endpoint.
- Stop reporting a policy block as a technical incompatibility.
- Tell users when something’s been hidden. One line.
- Give operators an off switch, like every other blacklist in the codebase has.
It’s AGPL-3.0 and db0 already forked it. That’s the licence working as designed. But forking isn’t disclosure, and the admins who need this are precisely the ones with no reason to go looking.
If you run Tesseract, you are relaying a 111KB moderation policy you have never read, under your instance’s name, to users who don’t know it exists.
Full contents of every list, unedited, in the comments.
“Stop it Patrick you’re scaring him”

itch.io, replit, xcancel, and various archives such as .today and ghostarchive are in the blocked domains???
Are we all just supposed to know what Tesssract is
I wonder if this is someone taking their personal block list and just slapping it into their app? I’ve blocked a lot of users/communities/instances, but I certainly don’t want to block them for anyone else.
ive archived it
- codeberg repo about this and with the file: https://codeberg.org/thethunderwolf/tesseract-blocklist-archive
- decoded file: https://drive.proton.me/urls/F12YB7W52C#27AP8fGZ2xdp
- raw encoded file: https://ghostarchive.org/archive/rbdn2
I was in the blocklist
boringdystopia blocked lmao

this incident is dystopian but not boring for once
immensely disappointed that im not on the list
what the actual fuck
fucking malware
Everyone on the list should get some special flair.
This is very upsetting. I could see an argument if it was made a user toggle for a “more friendly experience” or something like that (Like the enable toxic mode toggle), but hiding the blacklist and then an opaque error message is cowardly. Having it be pulled every time from another website instead of built into the software is also a very clear accountability dodge.
Also reading over the file, I think it’s biased, especially towards unfairly heavy moderation.
Edit: Just noticed I’m on the blocklist. What he said fuck me for?
It’s just liberalism. The whole thing is just doing liberalism.
I’m a ‘liberal’ by your standards, and I’m on the blocklist. Explain this, atheist.
I’m curious what makes them liberal not conservative? Why do you immediately jump to liberal, when every thing I’ve seen that’s been blocked has been shit that triggers conservatives.
I get that you have to shoe horn your “everything bad is liberal” shit into everything, but this ain’t it chief.
Before you accuse me of the same bullshit, I’m on the block list.
Liberals are a kind of conservative. This ain’t the 17th century.
Liberals are a kind of conservative
It’s funny because a statement like this would simply break the brains of my Fox News drip-fed parents lol
Doubt. Modern understandings of physics say you can’t get fragments smaller than 2.6121×10−70 m²
I would say they’re more centrist.
Sure, right between Ronald Reagan and the Thule society.
Lol
Where I live that’s still center left.
No, it’s a particular type of liberalism. Freedom of speech is actually a core liberal value, and while some who think themselves liberal will use censorship, (usually political hacks doing it for political ratfuckery, like the dev of Tesseract) most do not.
No. They say that shit, they say they have values beyond the class system and terror and feeling good about themselves for doing it, but shitlibs are liars.
Every single one, when pressed, is an authoritarian first. They fucking fetishize that shit. Everything else is just painted on.
No. They say that shit, they say they have values beyond the class system and terror and feeling good about themselves for doing it, but shitcommies are liars. Every single one, when pressed, is an authoritarian first. They fucking fetishize that shit. Everything else is just painted on.
I know you are bit what am I? Seriously? You’ve got nothing else? Is your position really so hollow and hypocritical that you can’t even criticize anything I actually believe?
Are your beliefs not reflected in what you’re writing here? Oy vey.
Which beliefs might be reflected?
Liberals are nothing more then centrists and can suck eggs for all I care but jeez, could you offer comments that were any more useless and rage-baity then this?
Ikept getting told to ‘shut up cunt’ in this thread and mods seemed fine with it. So I’m explaining myself in detail.
And libs aren’t centrists, except maybe between Ronald Reagan and the Thule society.
Why do you keep repeating this throughout these comments chief?
Being self important is not a political act and so far there is no indication of a political motivation, just that the dev somehow got the idea of appointing themselves secret online discourse admin. If it turns out there is some financial goal behind it i’m with you tho.
being self important is not a political act
Citation needed.
financial goal
I didn’t say capitalism I said liberalism.
Liberalism = Liberty
so you hate liberty?
American style “liberalism” (aka Neoliberalism) is exactly the opposite of that:
- Everything must be behind a money-gate (everything must be private, nothing public) and only if you have enough money can you pass such a gate
- Unless you’re born on the right side of the gate or from parents with enough money, you can only get the money to pass most money-gates (even just the ones for food and for shelter) by working for the people with enough money to pass ownership-of-means-of-production & land-ownership money-gates.
It’s a structure to heavilly reduce freedom in the most important aspects of one’s life including things necessary for survival (like food and shelter), not to increase it, so it’s the very opposite of increasing Liberty or Freedom.
I reckon that’s the kind of “Liberalism” (which is the only one with political power anywhere in the World at the moment as far as I can tell, since there sure aren’t any politicians in power anywhere which both claim to be Liberal and are against core liberty-reducing legislation such as Private Land Ownership) that the previous poster is talking about.
Mainstream politicians out there who call themselves “Liberal” are 100% liars and frauds.
DPRK = Democratic People’s Republic of Korea
so you hate democracy?
Edit: Just noticed I’m on the blocklist. What he said fuck me for?
Figuring this out has been interesting, but then again based on that user could have just said something they didn’t like in a random thread so they put you on the list
The developer behind Tesseract is the same user who has displayed the habit of preemptively banning users who have never participated in or even visited his communities, particularly those that were on dubvee.org. Apparently for ideological reasons, or simply for being associated with a particular Lemmy instance.
So at the risk of stirring up even more Fediverse drama by saying it, it seems like the findings above are squarely on brand.
Not to come over all Graham Chapman about it or anything, but I always found that type of behavior to be very silly.
Ohhh that’s why I have some community bans!
Maybe he just really hates tomatoes?
is the same user
Which user specifically
Based on the comment chain above, https://mander.xyz/u/AdmiralPatrick@dubvee.org
Their DubVee account was @ptz@dubvee.org. “Admiral Patrick” was just the display name for that account.
dubvee has insane ban policies. Like they find people to ban based on posts in coms that have nothing to do with them. It’s almost like SRS on reddit.
Sounds almost like a compulsion
I’m somewhat disappointed that i am not on the list. But i rarely post even if i do comment on the regular, and i tend to be not attracting drama (deserved or not) while doing so.
Still, i would have found it great if a leftist chump like me made the list lol. I am in awe of your popularity mate ;-)
Yes, I have no idea what the rationale is. My posts are largely about silly knives, birds, motorcycles, and occasionally cameras. Other than very occasionally engaging with idiots in the comments until I inevitably remember that it’s a waste of time, I don’t think I’ve incited or attracted too much if any drama around here.
My site itself does not have a hardcoded ban in the list, though!
Other than very occasionally engaging with idiots in the comments until I inevitably remember that it’s a waste of time,
awwww you remember meeeeee :3333
WAIT silly knives? hold on
edit i think i might have just talked the wife into a gardening sword. she is pretty cool.
Thanks to the GOAT who found this!
Well, and GemAlarm.
Tbf @NounsTheVerb@lemmy.dbzer0.com was the one that found the original commit. I just discovered something was initially wrong, then did the fork and the PSA
<3 Btw I love that you already added the warning as a tagline lol
It looks like there is an ‘enable toxic mode’ setting that DOES switch off the auto-updating blocklist. The LLM that wrote this post claimed that there is no way to turn it off.
from src/lib/policies/system.ts:
export async function updateSystemFilterPolicy() { if (SBDisabled && get(userSettings).enableToxicMode) { SYSTEM_POLICY.set(BLANK_SYSTEM_FILTER_POLICY) return } // auto-update of blocklist continues belowThe original post was written using AI so it’s going to have a lot of inaccuracies like that.
Overall though, this does seem poorly documented, too opaque and overly prescriptive. And needlessly encrypting the payload looks shifty.
Yeah it’s the trans people who simply want to exist who are toxic
Edit: no indication any of that post was LLM, but would love to hear why you think that.
Though I suspect that’s just a tactic to get people to shift their ire.
Hi, not the person you replied to, and (edit: not*) agreeing with any of this blocklist shit, AND my ire is firmly not shifted away from Tesseract, but just wanted to break down the characteristics of the OP that suggest (to me) it was composed mostly with an LLM and fine tuned after. (Though to be clear, that’s a pretty unimportant characteristic of the post considering the actual content)
-
The division of the text into small “sections” of five or fewer short paragraphs separated by headers is probably the most obvious hallmark.
-
Kind of difficult to put into words, but abrupt / awkward / overly poetic metaphor and… “overconfident”? “sensationalized”? phrasing both give me an LLM vibe. examples:
It’s a policy decision dressed as an API error, and it’s what had db0 chasing a version mismatch that never existed.
I went through the code to see how that was implemented. The hardcoded list turns out to be the small half of the system.
The spam work is what makes the rest unauditable: “it’s a spam list” answers every individual question and none of the whole.
It’s downloaded at runtime from a file nobody has ever looked at.
spam filtering and political editorial got welded into one undocumented, remotely-updatable blob, shipped hidden
That’s the licence working as designed. But forking isn’t disclosure, and the admins who need this are precisely the ones with no reason to go looking.
- Overuse of the rule of three. This one is probably the most tenuous, because genuine human writing does make frequent use of the rule of three. But when LLMs do it, it’s usually at a high enough density where it starts sounding like it’s trying too hard, or it’s clickbaity.
Admins can’t see it, can’t configure it, and aren’t told it’s there.
That’s the live policy, base64-wrapped gzip, 111KB of JSON when it unpacks.
There are Mastodon and Friendica accounts in there: people who have never used Lemmy, hidden by a Lemmy frontend, with no possible way of finding out.
355 of the 552 usernames are plain alphabetic, twelve characters or under, median length eight.
For the hidden users, communities and keywords, you get no message at all.
Self-host it and you cannot disable this, nothing in your config admits it exists, and the contents can change without you pulling a commit.
If you run Tesseract, you are relaying a 111KB moderation policy you have never read, under your instance’s name, to users who don’t know it exists.
- Tonally inconsistent with the intended audience. I realize Lemmy/Fediverse users are more technically savvy than usual, but even then… consider the claim “I went through the code to see how that was implemented.” early in the post. A lot of plausible technical jargon is used, and there are plenty examples of the actual filters and filter patterns themselves, but the post makes claims about what is happening without really being specific at all about how.
Could be explained by me just not being familiar enough with the technical side, but saying stuff like “There’s a second filter policy fetched over HTTP every time the app loads” without breaking it down any further seems a bit suspicious to me? It doesn’t actually call out any function, file, or… i dunno, a logical starting point, for a competent reader to dig into the source themselves. Reads like it’s written for either an expert who doesn’t need any details, or for an audience with zero skepticism whatsoever.
- And least importantly, because my focus is on the presentation of the post moreso than the accuracy, IF rimu’s read of the code is correctly calling out a factual error in the OP (and let me be clear that I’m not enough of a programmer to evaluate whether it is), that is pretty strong evidence of an LLM getting something wrong.
Again… this wall of text isn’t meant as a refutation of anything you’re saying, or a reason to dismiss the contents of the OP uncritically. Seems pretty clear after reading through db0’s posts about it that this is seriously fucked up. I hope I’ve been clear enough about that.
Could be explained by me just not being familiar enough with the technical side, but saying stuff like “There’s a second filter policy fetched over HTTP every time the app loads” without breaking it down any further seems a bit suspicious to me? It doesn’t actually call out any function, file, or… i dunno, a logical starting point, for a competent reader to dig into the source themselves. Reads like it’s written for either an expert who doesn’t need any details, or for an audience with zero skepticism whatsoever.
It gives you the file directly
curl -s https://tesseract.dubvee.org/tesseract/api/system/policy
| base64 -d | gunzip > policy.jsonYeah… but not where in the source code it’s actually loaded.
./Dockerfile:14:COPY --chown=node:node static/data/policy.dat /app/system/policy/policy.dat
./src/lib/policies/system.ts:105: res = await fetch(‘/data/policy.dat’)
./src/server/system.ts:27: let file = await open(${policyDir}/policy.dat)
./src/server/system.ts:71: await writeFile(${policyDir}/policy.dat, policy)But none of those are the remotely fetched file.
There seems to ALSO be a statically included policy file with a bunch of stuff. That he updates periodically.
Give them a little credit, they were only five lines away from a bullseye in their second example. That’s much closer to accurate than their overall comprehension of my post was
Thanks, but I’m not sure what value you think you’re adding by actually going and finding that - if you had understood my post, you would know that my critique of the lack of specifics in the OP was a reason to doubt it was written by a human, not anything to do with whether or not the details of the post were credible or not.
I found that because OPs post lead me to it.
-
That’s typical for a transphobe like Rimu
5 month old account on a free-registration instance that actively and only downvotes.
Or what we like to call, the cowards alt.
I didn’t know they were an established transphobe, so I wanted to give some benefit of the doubt.
But yeah, all signs pointed to that fact.
On the LLM thing, there are tools that can say the likelihood that any given text was written by an LLM. Apparently, they’re a necessity for English teachers these days. So, it’s possible that Rimu used a tool like that.
Unfortunately (or hilariously depending on your perspective) those tools are notoriously inaccurate and often driven by LLMs themselves.
Those tools are themselves, LLMs. They’re not trustworthy at all.
You know you’ve lost when even Rimu thinks it’s too prescriptive
shame that piefed has similar block lists.
I wish developers would try not to play fedi-police
The question is how to prevent toxic material that brainwashes people like Facebook did. It irreparably damaged the social fabric in my country.
(Don’t know the answer)
So a system named after a hypothetical, hyper-dimensional solid turns out to have hidden depths, secret facets that we can’t see from our universe?


















