You can use a negative character class with those profane words to exclude matches that contain them:
/\b(?:query|mutation)\b(?:[^\s\S]?['"]?(?:(?:arsehole|ass|asshole|bastard|bitch|...)[^'"]))[\s\S]?{[\s\S]?}/g

I added [^\s\S]? to allow any number of non-word, non-whitespace characters ('"`]) before the exclusion list, in case any of the profane words were part of longer words.
The ... is just an ellipsis to represent the full list of excluded words you would insert.
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence