here's exactly what happens. openai's moderation endpoint is one check, not storage. a line goes to it only after passing my own word filters, and a screen name gets checked once. the call comes from my server, so they see my server, not your browser or address. their docs list that endpoint with no retention and no training use. i can't audit their side, but that's the published policy.
on my end, posted lines stay in the room's history with how long ago they were said, until newer lines push them out. my filters get patched as edge cases show up, so i keep a small sample of refused lines for 48 hours to catch any that refuse normal chat.