On Beta clients, chat bubbles seem to have a child frame which is forbidden even outside of instances - while the chat bubble frame itself isn't:
/say s
/run C_Timer.After(1.5, function() for _, b in ipairs(C_ChatBubbles.GetAllChatBubbles()) do print(b:IsForbidden(), b:GetNumChildren(), b:GetChildren():IsForbidden()); end; end)
The above if placed in a macro and executed outside of an instance will print "false 1 true" to the chat frame, indicating that the chat bubble wasn't forbidden, had 1 child, and the child was forbidden.
On Live clients, chat bubbles don't have a child frame but themselves aren't forbidden outside of instances:
/say s