False-positive Usage Policy blocks on legitimate academic sessions: safety classifier fires mid-session on accumulated biomedical vocabulary

Resolved 💬 2 comments Opened Jun 5, 2026 by AlexBugeac Closed Jul 12, 2026

Summary

Claude Code (Opus 4.8) throws a mid-session API Error: ... appears to violate our Usage Policy on legitimate academic research sessions. The classifier fires not because the current turn is harmful, but because the accumulated context over many turns crosses a vocabulary threshold. Restarting or switching models clears it immediately.

Incidents

Incident 1 — Pharmaceutical chemistry thesis (2026-06-05)

  • Session type: Helping a pharmacy student fact-check a bachelor's thesis on a multi-component organic reaction (purely academic, named reaction in common use since 1893)
  • Trigger: Reading a 127-line fact-check report containing verbatim quotes from journal abstracts about enzyme inhibition, antiviral activity, and drug candidates
  • Request ID: req_011Cbjjf71zmiuiVBtoM8dAf
  • Model: claude-opus-4-8
  • Recovery: /model sonnet + fresh session — resolved immediately

Incident 2 — Structural biology / vaccine research (2026-06-03)

  • Session type: Reviewing personal research notes on HCV glycoprotein structure and conformation for a PhD project (legitimate academic structural biology)
  • Trigger: SessionStart hook was injecting a dense context block with domain-specific vocabulary from the project index file; accumulated over turns until classifier fired
  • Model: claude-opus-4-8
  • Recovery: claude --resume <session-id> after switching model

Root cause (observed behavior)

The safety classifier appears to re-score the full accumulated payload on each turn, not just the new turn. As a session progresses and more domain literature is read into context, the classifier eventually crosses a threshold even though:

  1. No individual turn is harmful
  2. The content is published academic literature / personal research notes
  3. The intent is entirely educational

Impact

  • Forces model switches or session restarts mid-workflow, losing context
  • Disproportionately hits legitimate scientific users (pharmacology, structural biology, virology) whose vocabulary overlaps with regulated domains
  • The error message ("violates our Usage Policy") is alarming and misleading for users doing nothing wrong

Requested improvement

  1. Classify the current turn, not the cumulative context — or at minimum increase the cumulative threshold significantly for academic vocabulary
  2. Better error message when the classifier fires: distinguish "this turn is harmful" from "session context accumulated trigger vocabulary" — the latter should suggest /clear or context reduction rather than implying a policy violation
  3. Anchor awareness: if the session contains a clear benign-intent statement early ("this is academic thesis review"), weight that against later vocabulary accumulation

Workarounds (for documentation)

  • Lead sessions with an explicit benign-intent anchor sentence
  • Read dense domain literature last / in chunks rather than early
  • Use claude --resume <session-id> if the session is still alive
  • Switch to Sonnet when Opus blocks; Sonnet classifier appears less sensitive

---
Both incidents involved unambiguously academic material with no harmful intent.

View original on GitHub ↗

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