stop_reason=refusal on legitimate regulatory document classification of public clinical trial protocols
Summary
claude-sonnet-4-6 returns stop_reason=refusal with empty response.content when classifying sections of publicly available clinical trial protocols (ClinicalTrials.gov) against ICH E6(R3) Appendix B taxonomy. The task is document indexing — the model outputs only a numeric similarity score (0.0-1.0) in JSON. No medical advice, treatment recommendations, or patient-facing content is generated.
Use Case
Regulatory document transformation pipeline for ICH E6(R3) GCP compliance:
- Extracts sections from clinical trial protocol PDFs from ClinicalTrials.gov (public domain)
- Classifies each section against ICH Appendix B categories using LLM similarity scorer
- Assembles structured protocol template for regulatory review
The LLM only outputs {"score": 0.85, "rationale": "one sentence"} — a document-to-taxonomy similarity score.
Reproduction
Protocol NCT03963895 (Phase 2, E-WE thrombin in ESRD/hemodialysis). Three sections deterministically refused:
- 8.2.1.1 Pharmacokinetics (nonclinical PK data) — 3/3 refused
- 8.2.2.2 Pharmacodynamic Data (clinical PD biomarker data) — 2/3 refused
- 12.1 Treatments Administered (drug formulation, dosing table) — 3/3 refused
Same code on NCT02856802 (migraine study) works for all sections. Three system prompt variations tested — all fail for these sections.
9 of 12 sections succeed (toxicology, safety data, dose selection, risk/benefit all work fine).
Impact
Blocks Claude for ICH E6(R3) regulatory document processing. PK, PD, and treatment sections are mandatory in every clinical trial protocol. These are publicly registered protocols — no medical advice is generated.
Expected
Model should process all sections of public clinical trial protocols for document classification tasks.
Environment
- Model: claude-sonnet-4-6
- SDK: anthropic Python
- Content: ClinicalTrials.gov NCT03963895
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗