Content Filter & Moderation Errors Across All AI Providers (2026) — AI Error Hub
AI Error Hub / Categories / Content Filter
Category hub · Cross-provider · Content filter

Content Filter & Moderation Errors Across All AI Providers — 2026 Guide

Content filter false positives cost teams more than any other quiet failure mode — legitimate customer messages silently refused, retry loops burning budget, users abandoning to competitors. Every provider handles moderation differently, with different appeals and different override options. This is the cross-provider directory: every content filter pattern grouped by provider and mechanism.

Content filter false positives cost teams more than any other quiet failure mode we've documented. A pharmacy chatbot triggers medical safety filters discussing drug interactions. A legal AI triggers violence filters citing case precedent. A security research tool triggers hacking filters explaining exploit patterns. Every provider handles moderation differently — some let you turn it off (with approval), some don't. This page is the cross-provider directory: every content filter, moderation, and refusal pattern we've documented across every provider, IDE tool, and gateway, grouped so you can find your specific error in seconds.

For the editorial angle on why content filter false positives are one of the most underreported failure modes in production AI, see The AI Errors Nobody Talks About — content filter refusals section. For related failure modes, see the Rate Limits, Authentication, Context Window, and Timeouts category hubs.

2026 content filter mechanisms at a glance

Every provider has a different philosophy on content moderation. Some enforce broad implicit filters (Claude); others give you fine-grained per-category control (Gemini). Here's the 2026 landscape at a glance.

ProviderDefault stateConfigurabilityCategoriesOverride method
Anthropic ClaudeOn (implicit)Not configurableUndocumented (broad safety)System prompt refinement
OpenAI (Chat Completions)On + Moderation API optionalLimited via safety settings11 categories (sexual, violence, hate, self-harm, etc.)Prompt engineering only
OpenAI Moderation APIStandalone endpointThreshold-basedSame 11 categoriesYou decide action from scores
Google GeminiOn (4 harm categories)Highly configurable via safetySettingsHARASSMENT, HATE_SPEECH, SEXUALLY_EXPLICIT, DANGEROUS_CONTENTBLOCK_NONE per category (Vertex)
AWS Bedrock GuardrailsOpt-in (must be applied)Highly configurableCustom policies + built-inDon't apply guardrail on request
Azure OpenAIOn (4 severity levels)Configurable per deployment4 categories (hate, self-harm, sexual, violence)Content Filter config in Foundry
Azure OpenAI (Enterprise)Configurable filtersFull override with approvalAll + protected material + jailbreakFilter config + Modified Content Filter approval
Portkey GuardrailsOpt-in per config50+ built-in + integrationsPII, prompt injection, jailbreak, customConfig-level enable/disable
LiteLLMCallback-basedCustom callbacksWhatever you implementCallback logic

Anthropic Claude

Claude's content filtering is implicit — you cannot turn it off or configure category thresholds. Refusals appear as regular assistant messages (not error codes) with content explaining the refusal, or as stop_reason: 'refusal' in the API response. This makes false positives harder to detect programmatically than in providers with explicit content-filter response fields.

OpenAI

OpenAI's chat completion returns finish_reason: 'content_filter' on triggered refusals. Separately, the Moderation API is a standalone endpoint (free) that returns category scores — you decide the action. Combining pre-request moderation with post-generation filtering is the pattern for high-stakes applications like customer support.

Google Gemini

Gemini has the most explicit safety controls of any major provider. Four harm categories (HARASSMENT, HATE_SPEECH, SEXUALLY_EXPLICIT, DANGEROUS_CONTENT) each with configurable thresholds (BLOCK_NONE, BLOCK_LOW, BLOCK_MEDIUM, BLOCK_HIGH). BLOCK_NONE requires Vertex AI (not AI Studio) and enterprise approval for some categories.

AWS Bedrock Guardrails

Bedrock Guardrails is opt-in — the underlying model has its own filters (Claude-on-Bedrock behaves the same as direct Claude), and Guardrails adds AWS-managed policies on top. Highly configurable: denied topics, sensitive information (PII), content filters, word filters, contextual grounding checks. Enterprise-focused with detailed audit logs.

Azure OpenAI

Azure OpenAI has the most enterprise-friendly content filtering — 4 severity levels (Safe, Low, Medium, High) per category, configurable per deployment. Modified content filter approval is available for regulated industries (medical, security research) — a formal process to request lower thresholds with justification.

Content filtering at other layers of the stack

Content moderation isn't only a provider-layer concern. IDE tools have their own code-generation policies, gateways can add moderation layers (Portkey has 50+ built-in guardrails), frameworks integrate post-generation filters. Each layer can block content the underlying provider would have allowed.

IDE Tools

IDE tools inherit their underlying model's content filtering — Cursor with Claude has Claude's refusal patterns; Copilot with GPT-5.6 has OpenAI's. Additionally, tools have their own policies around code generation (no malware, no exploits). Refusals in IDE tools often appear as failed edits or partial completions rather than clear error messages.

Gateway Layer

Gateways add their own content moderation layer above the underlying provider — this is Portkey's biggest differentiator (50+ built-in guardrails). LiteLLM supports moderation via callback hooks. OpenRouter passes through provider filters unchanged. Gateway-layer moderation runs before the request reaches the provider, saving cost on rejected requests.

Framework Layer

Frameworks integrate with provider filters via response inspection — LangChain's guardrails wrappers, LangGraph's interrupt-on-safety-flag, LlamaIndex's response synthesizer post-processing. Framework-layer moderation is typically post-generation (inspect the model output before returning to user), adding a second check on top of provider filters.

Frequently asked questions

Why is my legitimate business content being blocked?
Content filters are trained to be broadly cautious — they flag categories, not specific intent. A pharmacy chatbot discussing drug interactions triggers medical safety filters. A legal AI discussing precedent for violent crime triggers violence filters. A security firm's pen-test tool triggers hacking content filters. The block is a false positive relative to intent, but a true positive relative to the pattern the filter is designed to catch. Fixes: refine prompts to make context explicit, use providers with configurable thresholds (Gemini, Azure OpenAI, Bedrock Guardrails), or request approval processes (Azure Modified Content Filter).
Can I turn off content filtering entirely?
Depends on the provider. Anthropic: no. OpenAI: no on chat completions; can use Moderation API separately and ignore results. Google Gemini: yes via BLOCK_NONE on safetySettings (Vertex AI only, enterprise approval for some categories). AWS Bedrock: don't apply Guardrails on the request (underlying model still filters). Azure OpenAI: yes via Modified Content Filter with formal approval. Enterprise use cases (medical, security research) are the primary reason approvals exist.
What's the difference between a refusal and a content filter block?
Refusal = model decides not to answer, returns a message explaining why. Appears as normal response with stop_reason indicating refusal. Content filter block = external classifier flags the request or response, returns error or empty completion. Two different mechanisms: refusals come from the model's training; content filter blocks come from a separate classifier. Some providers (Claude) rely primarily on refusal; others (Azure) rely primarily on content filter blocks.
How do I appeal a false positive?
Provider-specific. Anthropic: no formal appeal process; refine prompts. OpenAI: Trust & Safety team via support; usage-tier-dependent responsiveness. Google Gemini: file bug via Google Cloud support (Vertex tier). AWS Bedrock: Guardrail policy edits are self-service; underlying model filters via AWS support. Azure OpenAI: Modified Content Filter application is the formal process. In practice, refining prompts to make legitimate intent explicit resolves 80% of false positives faster than any appeals process.
How do I design prompts to avoid triggering filters?
Make context explicit. Instead of 'Write a story about a poison,' write 'Write a mystery novel scene where a detective explains how a fictional poisoning was carried out for the plot.' The added context signals fiction and educational intent. For technical content (security, medical), include the professional context: 'For a licensed pen-tester with authorization, explain the pattern of...'. Filters catch patterns, not narratives — patterns embedded in clear professional or fictional context often pass.
Are content filters free or do they cost me?
Depends. OpenAI's Moderation API is free. Provider-embedded filters (Claude, Gemini default, Azure OpenAI) are included in the model call. AWS Bedrock Guardrails are separately billed per text unit processed. Portkey guardrails are included in subscription (Developer tier+). Portkey's third-party guardrail integrations (Aporia, SydeLabs, Pillar) have their own pricing. Budget guardrail costs separately if using Bedrock or third-party integrations.
Do content filters differ by region or jurisdiction?
Yes, meaningfully. EU deployments often have stricter default thresholds due to Digital Services Act (DSA) requirements. China-hosted models (Baidu, Alibaba) enforce categories not in Western models. US-hosted major providers apply consistent policies globally but may vary based on account country. For multi-region deployments, document per-region behavior and test refusal patterns in each region separately.
How do I test my content filter behavior systematically?
Build a test suite of realistic edge cases — content that's borderline but should pass, content that's clearly out of policy that should fail, and content that reveals asymmetry (e.g., discussing weapons for legal collector vs illegal use). Run the suite monthly against your production model. Track false positive rate and false negative rate separately. Rising false positive rate often indicates provider filter tightening; take it as an early warning to communicate with your account team.
What is Prompt Shield / jailbreak detection?
Azure OpenAI Prompt Shield (and equivalent in other providers) detects prompt injection attempts — user input trying to override system prompts or extract sensitive information. Common patterns: 'ignore previous instructions,' 'you are now DAN,' base64-encoded instruction attacks. Prompt Shield flags these before the model processes them. For legitimate use cases like security research, request an exemption. For most applications, keep it enabled.
What's Bedrock Guardrails contextual grounding?
A Guardrail feature that checks whether the model's response is grounded in provided source documents (RAG context). If the model hallucinates content not in the source, Guardrails blocks the response. Useful for RAG applications where factual grounding matters (customer support, legal, medical). The grounding threshold is configurable. Trade-off: higher thresholds catch more hallucinations but also block more legitimate responses that legitimately synthesized information not word-for-word in sources.