anthropics / anthropics/claude-code

false positive message

Open
#95,247 0 comments 0 reactions 0 assignees View on GitHub
bug
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.