PROHIBITED_CONTENT
The message
PROHIBITED_CONTENTWhat it means
Gemini returns PROHIBITED_CONTENT either as a block reason, when the prompt never ran, or as a finish reason, when generation stopped partway. It belongs to the built-in protections, so safety settings can't switch it off.
What to do
Check whether it arrived in promptFeedback or in the candidate's finishReason, then change the prompt or narrow what you asked the model to produce. Thresholds won't help: this isn't one of the four adjustable categories.
Gemini uses PROHIBITED_CONTENT in two places, and they don't mean the same thing. In promptFeedback it's a block reason: the prompt was refused and no candidates came back at all. In a candidate's finishReason it means generation had started and then stopped.
- Where it appears
- In promptFeedback and in a candidate's finishReason
- Prompt blocked
- Prompt was blocked due to prohibited content
- Output stopped
- Token generation stopped for potentially containing prohibited content
- Adjustable
- No, these types of harm are always blocked
What the API reference says
The block reason entry is one line, and it's about your input.
Prompt was blocked due to prohibited content.
The finish reason carrying the same label is hedged, and the hedge is the useful part of it.
Token generation stopped for potentially containing prohibited content.
Why turning the safety settings down doesn't clear it
The safety settings page lists four categories you can adjust: harassment, hate speech, sexually explicit and dangerous content. Each one takes a threshold, from Block none up to Block most. Prohibited content isn't among them, because "the Gemini API has built-in protections against core harms" that sit outside that system.
These types of harm are always blocked and cannot be adjusted.
A request that comes back with this label comes back the same way with every adjustable filter set to Block none. Google's example of a core harm is content that endangers child safety.
Labels that look like it
SAFETY is the adjustable one. Its candidate text reads "The response candidate content was flagged for safety reasons", and the safetyRatings field tells you which category did it. BLOCKLIST means "Token generation stopped because the content contains forbidden terms", which is your own terminology list rather than Google's. SPII covers Sensitive Personally Identifiable Information, and IMAGE_SAFETY and the image labels beside it apply to generated pictures.
What to do with it
Look at which field carried the label before you change anything. A block reason points at your prompt. A finish reason points at where the answer was heading, so the thing to narrow is what you asked the model to produce.
The docs name no setting that turns this one off. That makes a rewrite the only lever you have, and sending the same text again won't move it.