Forum Discussion

Murugates's avatar
Murugates
Copper Contributor
Mar 17, 2026

o3-deep-research is failed with the status incomplete with the reason as content filter

I working on an to do an deep research on internal data. I'm using currently the Azure OpenAI Responses API with MCP Tool. The underlying MCP server deployed into ACA with search and fetch tool with signatures in complaint with the specification (https://developers.openai.com/apps-sdk/build/mcp-server#company-knowledge-compatibility). OpenAI client created with 03-deep-research model with MCP tool, in a loop response status being checked. (https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/deep-research#remote-mcp-server-with-deep-research)

 

 Deep Research is being carried out for sometime, I could see in the log that handshake has been made, ListTools invoked, search tool is called post that fetch is called for the queries framed by the model.. But intermittently, the response status is becoming "incomplete" with incomplete reason as "content_filter".  Otherwise the deep research is working fine. 

 

 

Not able identify the root cause as there is seems to be no way to identify what caused the content filtration whether its the prompt or completion.  How to debug and check the root cause and rectify this ? Or is there known issue with the o3-deep-research model's intermediate reasoning completions Or search and fetch tool results are causing this ?

 

I had uploaded a file made it available to MCP server, the search and fetch tool uses an Azure OpenAI agent to search the data using File Search and fetch tool gets the content of the file based on the id passed. For same file and same research topic the issue is not occurring always but intermittently.

 

 

 

1 Reply

  • The status incomplete_details.reason = content_filter means a generated step was stopped by the deployment’s safety policy; it does not prove the original user prompt caused it. In deep research, user input, retrieved MCP content, and generated intermediate or final text can all participate. The model can choose different searches each run, which explains the intermittent behavior.

    Log the full response JSON, not just status or output_text, and inspect output items, annotations, content_filters, and every MCP search/fetch result. Then isolate systematically: run without MCP; run MCP with one small known-safe document; return short plain-text excerpts instead of whole files; remove embedded instructions or HTML; and add documents back in batches. Also inspect the filter configuration attached to the deployment, including Prompt Shields, protected-material filters, and custom blocklists.

    If no annotation identifies the category, the service may not expose the exact filtered intermediate text. Capture the response ID, request ID, timestamp, deployment, filter configuration, and MCP payload hashes for support. Retrying may work, but blind retries are not a root-cause fix.