It is expected to change only if they revoke from your extension, but since you are not asking for their TwitchID then you won’t get a change, in theory.
An opaqueID should be considered as “the ID of a user, to let them play the demo of my game then after a level or two I would prompt them to login to save their progress”
Basically an opaqueID is not 100% safe to use in the way you are using it due to the many criteria it could reset.
Let alone, for example, a given Twitch user can have multiple opaqueID’s if they access via another browser or computer.
To save progress, you should ask for their real Twitch ID in order to save that progress against the real unchangeable ID
An OpaqueID should be treated as “user is not logged into my website sessionID”
It can change, and we don’t know all the criteria that could result in it changing, so if you want to save progress, get the definitely unchangeable ID rather than the might change ID.
Users may also feel safer using your extension if they share their real ID to save progress