[BUG] The API content filter is blocking legitimate pastoral and theological writing

Resolved 💬 9 comments Opened Apr 9, 2026 by TeleologicMatt Closed May 30, 2026

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:

  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
  2. Ask model to draft Chapter 5 of a Christian non-fiction book (narrative retelling of John 21:1-14)
  3. Filter fires — 400 error

Session 2 (fresh session, attempted fix):

  1. Start a new session
  2. 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
  3. Invoke /tom skill
  4. 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:

  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
  2. Ask model to draft Chapter 5 of a Christian non-fiction book (narrative retelling of John 21:1-14)
  3. Filter fires — 400 error

Session 2 (fresh session, attempted fix):

  1. Start a new session
  2. 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
  3. Invoke /tom skill
  4. 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_

View original on GitHub ↗

This issue has 9 comments on GitHub. Read the full discussion on GitHub ↗