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:
- No individual turn is harmful
- The content is published academic literature / personal research notes
- 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
- Classify the current turn, not the cumulative context — or at minimum increase the cumulative threshold significantly for academic vocabulary
- Better error message when the classifier fires: distinguish "this turn is harmful" from "session context accumulated trigger vocabulary" — the latter should suggest
/clearor context reduction rather than implying a policy violation - 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.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗