[BUG] The API content filter is blocking legitimate pastoral and theological writing
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Product: Claude Code 2.1.98 (confirmed latest as of 2026-04-10)
Model: Claude Sonnet 4.6 (claude-sonnet-4-6)
Date: 10 April 2026
---
Summary
The API content filter is blocking legitimate pastoral and theological writing with repeated 400 errors ("Output blocked by content filtering policy"). Three incidents across two sessions, all false positives. The content in question is a narrative retelling of John 21:1-14 — Jesus appearing to his disciples on a beach, directing a fishing cast, and cooking breakfast. No violent, explicit, or harmful content.
---
Request IDs
req_011CZtwcyu4HdnywXz8X7NkG— Session 1, first attempt (full chapter draft)req_011CZtx6o9BR21a1riGo5Yzw— Session 1, second attempt (narrative section only)req_011CZtxxLxUiGT11uEzGiDhz— Session 2, fired before any draft output was generated
---
Steps to Reproduce
Session 1:
- Load project charter, sermon source material (multiple files including Luke 22 Peter denial narrative), research report for John 21, prior chapter drafts (including Thomas chapter containing language about wounds, death, crucifixion), and voice profiles
- Ask model to draft Chapter 5 of a Christian non-fiction book (narrative retelling of John 21:1-14)
- Filter fires — 400 error
Session 2 (fresh session, attempted fix):
- Start a new session
- Load Ruth persona, ontology, conventions, daily log, Tom persona and processes, project charter, inbox, full research report, two sermon source files (including Peter denial narrative), Thomas chapter (wounds, death, grief, crucifixion content), two voice profiles
- Invoke
/tomskill - Filter fires during Tom's initial response — before any chapter content is generated — while the model is reading a prior chapter draft
---
Observed Behaviour
- 400 error:
{"type":"error","error":{"type":"invalid_request_error","message":"Output blocked by content filtering policy"}} - In Session 2, the block occurred before any draft output was produced. The model was mid-load (reading a prior chapter) when the filter fired. This is not a case of the draft content triggering the filter — the filter triggered on the accumulated context alone.
---
Expected Behaviour
No block. The content is a pastoral narrative retelling of a canonical gospel text (John 21:1-14), written for a mainstream Christian non-fiction audience. It contains no violence, no explicit content, and nothing harmful.
---
Diagnosis
The filter appears to be context-sensitive and probabilistic. The accumulated theological content across sessions (wounds, death, denial, crucifixion, resurrection language from prior chapters and source material) appears to push the probability estimate above the filter threshold, even when no individual piece of content is problematic.
The Session 2 incident is particularly significant: the filter fired before any draft output was generated, suggesting the trigger is on the input context, not the generated output.
---
Workaround
Confirmed working in a third session: load only the project charter, John 21 research report, and a two-sentence chapter brief. Omit all prior chapters, sermon sources, and voice profiles. Draft the narrative section only before adding any additional context. This kept the session below the filter threshold.
This workaround is disruptive. It required three sessions across two days and forced the user to manually manage context loading to avoid a false positive on legitimate creative work.
---
Request
Review of filter calibration for pastoral and theological writing. The current threshold is producing false positives on mainstream Christian non-fiction content that any Christian publisher would consider entirely appropriate. If a content category whitelist or per-project configuration is available, that would be the preferred resolution.
---
Additional Context
This is a book manuscript project: Jesus the Bridge Builder, a Christian non-fiction work examining ten post-resurrection encounters between Jesus and individuals in the gospels and Acts. All content is derived from canonical gospel texts. The three blocked requests were all attempts to draft a narrative retelling of John 21:1-14 (Jesus appearing to disciples on a beach after a failed night of fishing).
What Should Happen?
Expected Behaviour
No block. The content is a pastoral narrative retelling of a canonical gospel text (John 21:1-14), written for a mainstream Christian non-fiction audience. It contains no violence, no explicit content, and nothing harmful.
Error Messages/Logs
Steps to Reproduce
Request IDs
req_011CZtwcyu4HdnywXz8X7NkG— Session 1, first attempt (full chapter draft)req_011CZtx6o9BR21a1riGo5Yzw— Session 1, second attempt (narrative section only)req_011CZtxxLxUiGT11uEzGiDhz— Session 2, fired before any draft output was generated
---
Steps to Reproduce
Session 1:
- Load project charter, sermon source material (multiple files including Luke 22 Peter denial narrative), research report for John 21, prior chapter drafts (including Thomas chapter containing language about wounds, death, crucifixion), and voice profiles
- Ask model to draft Chapter 5 of a Christian non-fiction book (narrative retelling of John 21:1-14)
- Filter fires — 400 error
Session 2 (fresh session, attempted fix):
- Start a new session
- Load Ruth persona, ontology, conventions, daily log, Tom persona and processes, project charter, inbox, full research report, two sermon source files (including Peter denial narrative), Thomas chapter (wounds, death, grief, crucifixion content), two voice profiles
- Invoke
/tomskill - Filter fires during Tom's initial response — before any chapter content is generated — while the model is reading a prior chapter draft
---
Observed Behaviour
- 400 error:
{"type":"error","error":{"type":"invalid_request_error","message":"Output blocked by content filtering policy"}} - In Session 2, the block occurred before any draft output was produced. The model was mid-load (reading a prior chapter) when the filter fired. This is not a case of the draft content triggering the filter — the filter triggered on the accumulated context alone.
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
I've only used 2.1.98
Claude Code Version
v2.1.09
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
_No response_
This issue has 9 comments on GitHub. Read the full discussion on GitHub ↗