Twitch has enabled Gen AI training on all accounts by
default. Viewers have no way of disabling this on streams
they're watching, so if a streamer has not turned this off,
all chat messages may be used for AI training.
Safe Badge does two things. For streamers, it gives you a
way of acknowledging that you've disabled Gen AI training.
You can disable Training for Generative AI here:
Hover over this link to make sure it does go to Twitch.
Internet safety is important.
Once you've done that, by clicking the following button and
completing Twitch authentication, you acknowledge that you
have disabled training.
For viewers, the browser extension shows a badge beside
every streamer who claims to have opted out of Gen AI
training. This is done in two ways:
-
A lookup is sent to the Safe Badge database, which
returns true if they have authenticated using the
button above.
-
A lookup is sent to Twitch to retrieve the streamer's
current tags. If any of them match one in the big list
of recognized tags (see the bottom of the FAQ), then
that is treated in the same manner.
Please keep in mind that Safe Badge operates on an honor
system. Twitch offers no way of verifying this, so a
streamer can lie about having opted out. It's not
ideal, but this is the best we as a community can do.
Other browsers?
I'm hoping to publish the extension for other browsers like
Edge and Opera soon! In the meantime, the Chrome version
should work just fine in them as they are Chromium-based.
Please be patient :c
What browser permissions does the extension need?
Since the extension needs to scan for streamer names and
modify the page to add the badges, it requires what's
called host permissions on twitch.tv and
dashboard.twitch.tv. This is required to do this sort of
thing -- see the Twitch pronouns extension for another
example of this.
What permissions does this need to authenticate me?
None! Safe Badge requires no OAuth scopes.
It uses Twitch OAuth only to confirm your Twitch user ID
and login. These are stored so that the browser extension
can verify that the badge should be added beside your name.
The temporary access token is revoked immediately after
confirmation.
As a more technical answer, it used to require the
openid OAuth scope. However, there is a
longstanding bug in Twitch's OAuth display, where it would
imply that I'm requesting your email address, profile
picture, and a bunch of other stuff. None of this stuff was
actually being requested, as the OAuth URL would need to
include a claims parameter in order to
explicitly request these (which it did not).
As a consequence, however, some people raised concerns
about the apparent broad permissions being requested. So,
I'm relying on undocumented Twitch OAuth behaviour that
lets me omit the scope parameter entirely.
Please be aware that this could stop working in the future,
as it is not a documented feature of the API.
Can I see the source code?
Yeah! I've finally published it here on
GitHub.
Yes, I know GitHub is questionable in terms of AI stuff,
but this is where all of my projects are hosted. I
might migrate away from GitHub eventually but it's
currently more effort than I have time for, due to real
life and adulting unfortunately being a thing.
I still don't trust this
That's okay! I've designed the browser extension to look
for a bunch of common Twitch tags or stream title hashtags.
As a streamer, if you just put one of these in your tags or
title, the extension should pick up on that and display the
badge for anyone who does use it. Some examples:
- AIOptedOut
- NoGenAI
- AIOptOut
- NoAITraining
- NoAI
- GenAIOff
- GenAIOptedOut
- GenAIIsOff
- GenAIOptOut
- GenAITrainingOff
- NoGenerativeAITraining
- NoGenerativeAI