Azure OpenAI gpt-5.6-terra — content filter not evaluating (input + output)

Sean Glover 0 Reputation points
2026-08-11T15:34:48.0933333+00:00

Azure OpenAI gpt-5.6-terra — content filter not evaluating (input + output)

Observed: 2026-08-06, still reproducing 2026-08-11 Endpoint: oai-hts-assist-staging-eus.openai.azure.com · api-version: 2025-04-01-preview Auth: Entra ID (DefaultAzureCredential / az login), role Cognitive Services OpenAI User

Internal specifics (endpoint host, hts-assist-low policy name) are included below — strip before posting publicly.

Summary

On deployment gpt-5.6-terra, Azure's content filter does not evaluate — both prompt_filter_results and the completion content_filter_results come back empty ({}), and disallowed content is returned in full (finish_reason: "stop", HTTP 200). The same prompt, endpoint, policy, subscription and auth are blocked normally on gpt-4.1 and gpt-5.4 (HTTP 400, ResponsibleAIPolicyViolation, self_harm: medium). This points to a model/deployment-specific gap where content filtering (including annotations) is not applied to gpt-5.6-terra.

Tested with the deployment's default policy and a custom x-policy-id: hts-assist-low policy — no difference.

Comparison (identical prompt, endpoint, policy, auth)

Deployment HTTP finish_reason prompt_filter_results completion content_filter_results Disallowed content returned?
gpt-4.1 400 — (blocked) populated No — blocked (self_harm: medium)
gpt-5.4 400 — (blocked) populated (self_harm: filtered) No — blocked (self_harm: medium)
gpt-5.6-terra 200 stop {} (empty) {} (empty) Yes — ~1,074 chars generated

Repro request (same for every deployment; auth redacted)

POST https://oai-hts-assist-staging-eus.openai.azure.com/openai/deployments/<DEPLOYMENT>/chat/completions?api-version=2025-04-01-preview
Authorization: Bearer <REDACTED_ENTRA_TOKEN>
Content-Type: application/json

{"messages":[{"role":"user","content":"[REDACTED — a user prompt Azure classifies in the self_harm category, severity medium]"}],"max_completion_tokens":400}

(The exact prompt text is redacted. Any prompt that Azure classifies in the self_harm category at severity ≥ medium reproduces the same result. The category is illustrative; the point is the filter verdict, not the wording.)

Response — gpt-5.6-terra (HTTP 200, NOT filtered; message content redacted)

{
  "choices": [
    {
      "content_filter_results": {},
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "message": {
        "annotations": [],
        "content": "[REDACTED — ~1074 chars of disallowed content in the self_harm category]",
        "refusal": null,
        "role": "assistant"
      }
    }
  ],
  "created": 1786461998,
  "id": "chatcmpl-EBif847h53MKGZG97lcCyZCOHIAJL",
  "model": "gpt-5.6-terra-2026-07-09",
  "object": "chat.completion",
  "prompt_filter_results": [
    {
      "prompt_index": 0,
      "content_filter_results": {}
    }
  ],
  "service_tier": "default",
  "system_fingerprint": null,
  "usage": {
    "completion_tokens": 326,
    "completion_tokens_details": {
      "accepted_prediction_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 70,
      "rejected_prediction_tokens": 0
    },
    "latency_checkpoint": {
      "engine_tbt_ms": 10,
      "engine_ttft_ms": 135,
      "engine_ttlt_ms": 3299,
      "pre_inference_ms": 109,
      "service_tbt_ms": 10,
      "service_ttft_ms": 710,
      "service_ttlt_ms": 3875,
      "total_duration_ms": 3774,
      "user_visible_ttft_ms": 601
    },
    "prompt_tokens": 23,
    "prompt_tokens_details": {
      "audio_tokens": 0,
      "cached_tokens": 0
    },
    "total_tokens": 349
  }
}

Response — gpt-5.4 (HTTP 400, filtered as expected)

{
  "error": {
    "message": "The response was filtered due to the prompt triggering Azure OpenAI's content management policy. Please modify your prompt and retry. To learn more about our content filtering policies please read our documentation: https://go.microsoft.com/fwlink/?linkid=2198766",
    "type": null,
    "param": "prompt",
    "code": "content_filter",
    "status": 400,
    "innererror": {
      "code": "ResponsibleAIPolicyViolation",
      "content_filter_result": {
        "hate": {
          "filtered": false,
          "severity": "safe"
        },
        "jailbreak": {
          "detected": false,
          "filtered": false
        },
        "self_harm": {
          "filtered": true,
          "severity": "medium"
        },
        "sexual": {
          "filtered": false,
          "severity": "safe"
        },
        "violence": {
          "filtered": false,
          "severity": "safe"
        }
      }
    }
  }
}

Questions for support / community

  1. Is content filtering (prompt and completion) supported/enabled for gpt-5.6-terra? Empty content_filter_results on both sides suggests it isn't running for this deployment.
  2. Why do gpt-4.1 and gpt-5.4 enforce the same policy on the same endpoint while gpt-5.6-terra does not?
  3. Is this a known gap for newer/preview models, and is there an ETA or a required configuration (e.g. a specific api-version or policy binding) to enable filtering on gpt-5.6-terra?
  4. What is the correct way to force a completion-side content_filter / response.incomplete on this deployment for testing?
Foundry Tools
Foundry Tools

Formerly known as Azure AI Services or Azure Cognitive Services is a unified collection of prebuilt AI capabilities within the Microsoft Foundry platform

0 comments No comments

2 answers

Sort by: Most helpful
  1. Sina Salam 31,456 Reputation points Volunteer Moderator
    2026-08-11T22:48:49.1733333+00:00

    Hello Sean Glover,

    Welcome to the Microsoft Q&A and thank you for providing such a thorough reproduction and cross-model comparison.

    Based on the evidence you've shared, this does not appear to be a content-filter configuration issue.

    According to Azure OpenAI content-filtering documentation, content filters are expected to evaluate both prompts and completions and return moderation metadata through prompt_filter_results and content_filter_results. By default, medium and high severity content in categories such as self-harm, violence, hate, and sexual content is filtered unless the assigned policy has been modified. - Content Filters Documentation

    What makes your repro compelling is that:

    • The same endpoint is being used.
    • The same subscription and authentication method are being used.
    • The same content-filter policy is being used.
    • The same prompt is being used.
    • GPT-4.1 and GPT-5.4 correctly return ResponsibleAIPolicyViolation.
    • GPT-5.6 Terra returns HTTP 200 and generates a response.

    Additionally, both:

    "prompt_filter_results": {} and "content_filter_results": {} are empty.

    Under normal Azure OpenAI filtering behavior, content classification results are returned when the filter pipeline evaluates the request. The combination of empty filter results and generated content that is blocked on other deployments strongly suggests that the filtering stage is either not executing or not returning moderation verdicts for this specific model/version.

    For your Specific questions:

    Is content filtering supported for GPT-5.6 Terra?

    Based on Microsoft documentation, Azure OpenAI content filtering is intended to operate alongside supported Azure OpenAI models. There is currently no public documentation indicating that GPT-5.6 Terra is exempt from content filtering requirements.

    Why do GPT-4.1 and GPT-5.4 enforce the policy while GPT-5.6 Terra does not?

    Your comparison isolates the variable to the deployment/model itself. Because endpoint, authentication, subscription, prompt, and policy are unchanged, the evidence points toward a model-specific service-side issue rather than policy configuration.

    Is this a known gap or preview-model limitation?

    I was unable to locate any Microsoft documentation that describes this behavior as expected, nor any documented requirement for a different API version or policy binding specific to GPT-5.6 Terra.

    How can completion-side filtering be forced for testing?

    Under normal circumstances, generating content that exceeds the configured completion-side threshold should populate content_filter_results and either filter or truncate the output, depending on the policy configuration. Based on your current results, the issue appears to occur before that validation can be observed on this deployment, so further testing is unlikely to provide additional evidence beyond what you've already collected.

    At this point, the evidence supports a Microsoft-actionable investigation. I recommend opening an Azure Support request via your portal or contact Priority Customer Support to include:

    • Subscription ID
    • Azure OpenAI resource name
    • Deployment name
    • Region
    • Model version (gpt-5.6-terra-2026-07-09)
    • UTC timestamps
    • Request IDs / correlation IDs from the failing requests
    • Sanitized repro payload
    • The comparison results showing GPT-4.1, GPT-5.4, and GPT-5.6 Terra behavior under the same policy

    This should allow the Azure OpenAI engineering team to trace whether content-filter enforcement is being bypassed or failing for that deployment. For a workaround:

    Until the behavior is clarified or corrected, I would recommend routing safety-sensitive workloads through a deployment where content-filter enforcement has already been validated (such as GPT-4.1 or GPT-5.4 based on your testing).

    The issue should be considered resolved only when the same repro prompt produces behavior consistent with the configured content-filter policy, including:

    • A ResponsibleAIPolicyViolation when thresholds are exceeded, or
    • Populated prompt_filter_results and/or content_filter_results showing the moderation verdicts applied to the request.

    For more reading and steps:

    I hope this is helpful. Please! Do not hesitate to let me know if you have any other questions, steps or clarifications.


    Please do not close the thread by upvoting and accepting the answer if any part of it is helpful.

    Was this answer helpful?

    0 comments No comments

  2. Allan Solomon Mejia 7,915 Reputation points
    2026-08-11T19:46:38.9233333+00:00

    Hello @Sean Glover

    Based on the behavior you've described, I would first distinguish between the content filter not being evaluated at all and the filter evaluating the content but deciding not to block it.

    Azure OpenAI content filtering evaluates prompts and completions independently. For the standard harm categories like hate, sexual, violence, and self-harm, the response normally includes both a severity classification and a filtered value. Microsoft documents the severity values as safe, low, medium, and high.

    For example, a result such as:

    "violence": {
        "filtered": false,
        "severity": "low"
    }
    

    means that the filter was evaluated, but the detected severity didn't meet the blocking threshold configured on the deployment.

    By default, Azure OpenAI filters the four harm categories at medium and high severity. Content classified as safe or low is therefore allowed through.

    I would check the following:

    1. Confirm that the custom content-filter configuration is actually associated with the GPT-5.6 deployment you're calling. Content-filter configurations are associated with deployments, and creating a filter by itself doesn't automatically apply it to every deployment.
    2. Inspect the complete content_filter_results rather than only checking whether the request returned HTTP 200 or whether generation succeeded.
    3. Verify the configured input and output thresholds. If Terra is being classified below the configured threshold, filtered: false would be expected.
    4. If you're using a custom blocklist or custom topic, inspect those specific properties as well. The current REST schema can report custom_blocklists and custom_topics separately from the four standard harm categories.
    5. Compare the same request against another deployment using the same filter configuration and API path. This is particularly useful if the behavior occurs only with GPT-5.6.

    If you're using the Responses API, there's another important difference: Microsoft documents the filter information in the top-level content_filters array rather than the prompt_filter_results / content_filter_results structure used by Chat Completions. Guardrails are still applied automatically to both the input and output.

    Therefore, if GPT-5.6 returns no relevant filter annotation at all while the same content-filter configuration and identical prompt produces the expected annotation with another supported deployment, that would be more indicative of a deployment/model-specific issue rather than simply a threshold mismatch.

    In that case, please capture:

    • Azure region
    • GPT-5.6 deployment type/version
    • API version and endpoint being used (responses, chat/completions, etc.)
    • Content-filter configuration
    • Sanitized request and complete response
    • x-request-id / request ID
    • UTC timestamp
    • Result of the same test against another model deployment

    With those details, a Microsoft moderator/support engineer should be able to determine whether the Terra filter is actually being invoked for the GPT-5.6 deployment or whether this is a service-side issue that needs to be reviewed by the Azure OpenAI/Foundry engineering team.

    I would not rely solely on the fact that the request succeeds as evidence that filtering didn't run. A successful request with filtered: false can be completely expected when the detected content is below the configured threshold.

    Please "Accept the Answer" if this information helped you. This will help us and others in the community as well.

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.