anthropics / anthropics/claude-code
false positive message
- Dominant language
- Python
- Stars
- 145k
- Forks
- 23.1k
- PR merge metrics
- PR metrics pending
Description
### Preflight Checklist
- [x] I have searched [existing issues](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug) 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?
# False positive report — Claude safety classifier ([bio] tag)
**Subject:** Repeated `[bio]` safety-classifier block on ordinary enterprise database schema work — false positive
**Summary:**
While using Claude Code for an authorized internal enterprise software project (an RFP/tender assessment tool), three consecutive assistant responses were blocked by a safety classifier tagged `[bio]`. The actual task in every case was adding a generic PostgreSQL database schema (documents, document versions, parent/child document relationships, and adapter/processing-result records) plus automated tests, using entirely synthetic data. There is no biological, medical, chemical, weapons, or surveillance content anywhere in the task, the code, or the test data.
**Suspected cause:** the technical vocabulary involved overlaps with biosecurity-adjacent terms out of context — e.g. "quarantine" (a normal file-ingestion/malware-scanning status), "signature" (as in malware/file-format detection), "adapter", "password_required" — used here purely in a cybersecurity/software-engineering sense, not a biological one.
**Impact:** This blocked legitimate, already-completed engineering work from being reported back in the conversation three times, requiring the work to be verified by inspecting saved evidence files directly instead of through the normal chat response.
**Blocked request IDs:**
| Date | Request ID | Classifier tag |
|---|---|---|
| 2026-09-17 | `req_011Cf9cq7XUUaLZL7GM5i3Gt` | `[bio]` |
| 2026-09-17 | `req_011Cf9dHfWJK8KpfgNYRcMMX` | `[bio]` |
| 2026-09-17 | `req_011Cf9eXvkLLTHQw66DqxNVX` | `[bio]` |
**Request:** Please review these request IDs and the associated classifier decision. If confirmed as false positives, I'd appreciate this being fed back to reduce recurrence on ordinary software/database engineering tasks that happen to use cybersecurity terminology.
### What Should Happen?
don't block my session to complete my coding
### Error Messages/Logs
```shell
```
### Steps to Reproduce
*Steps to Reproduce:**
Note upfront: the block happened on Claude's own *generated response*, not on anything I typed, so I cannot hand you a deterministic script that reproduces it every time — phrasing varies run to run. What I can give you is the exact task context that produced it three times in a row, plus the request IDs, which is the reliable trail on your side.
1. Start a fresh Claude Code session against a private enterprise Node.js/PostgreSQL repository (Knex-based migrations).
2. Give Claude this task: add a generic PostgreSQL schema for a document-management feature with exactly four tables — `documents`, `document_versions`, `document_children`, `document_adapter_results` — covering: tenant-scoped ownership, per-version storage metadata (object key, SHA-256 hash, byte size), an `ingestion_status` enum including the value `quarantined`, a `lifecycle_state` enum (`active`/`superseded`/`deleted`), and an `adapter_name`/`adapter_version`/`result_schema_version` result-tracking table with statuses including `failed`, `rejected`, and `password_required`. All fixtures synthetic.
3. Have Claude implement the migration, write live database tests proving the constraints (uniqueness, foreign keys, rollback-on-failure), run them, and then summarize the result back in chat (status, test counts, evidence file paths).
4. On our three occurrences, step 3's final chat summary — not the code, not the tests, the plain-English status report — was blocked by the `[bio]`-tagged classifier before it reached the conversation.
5. Cross-reference request IDs `req_011Cf9cq7XUUaLZL7GM5i3Gt`, `req_011Cf9dHfWJK8KpfgNYRcMMX`, `req_011Cf9eXvkLLTHQw66DqxNVX` directly against Anthropic's internal logs for the actual text that triggered the classifier — that will show the real cause more precisely than our reconstruction above.
### Claude Model
Sonnet (default)
### Is this a regression?
Yes, this worked in a previous version
### Last Working Version
_No response_
### Claude Code Version
تم الترقية بنجاح ✅ — من 2.1.261 لـ 2.1.274 (أحدث نسخة على npm)، وشغّلت الـ postinstall script بتاعها كمان بعد ما اتوقف أول مرة.
### Platform
Anthropic API
### Operating System
macOS
### Terminal/Shell
Terminal.app (macOS)
### Additional Information
_No response_
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by cross-referencing request IDs req_011Cf9cq7XUUaLZL7GM5i3Gt, req_011Cf9dHfWJK8KpfgNYRcMMX, and req_011Cf9eXvkLLTHQw66DqxNVX against Anthropic's internal logs. Compare the blocked response text and [bio] decisions with the reported Node.js/PostgreSQL task; done means determining whether these were false positives and routing the confirmed case for classifier feedback.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- nodejs, postgresql
- Domain
- api, backend, security
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100