anthropics / anthropics/claude-code
Fable 5.1 safeguard false-positive [cyber] — coordinator session blocked while reading routine status reports about hardening our own app's permission checks (req_011Cf8PR5egA5gvAG6WF3LLW)
- Dominant language
- Python
- Stars
- 145k
- Forks
- 23.1k
- PR merge metrics
- PR metrics pending
Description
## What happened
A Fable 5.1 session was blocked mid-turn by the dual-use classifier while doing ordinary
project-management bookkeeping on the owner's own repository.
- **Request ID:** `req_011Cf8PR5egA5gvAG6WF3LLW`
- **When:** 2026-09-17T04:33:41.747Z
- **Model:** `claude-fable-5-1`
- **Category returned:** `cyber`
- **Message returned:** "This request triggered restrictions on violative cyber content and was
blocked under Anthropic's Usage Policy."
- **Transcript record:** `type: system`, `subtype: model_refusal_no_fallback`
**What the session was actually doing, exactly:** the session holds a long-running
coordinator role in a multi-session agent setup on one developer machine. On the turn that was
blocked, it had just done two things and nothing else:
1. read its own local message-queue file (a JSONL file on disk) containing two routine status
reports from its own subordinate sessions — one saying a review round on a permissions/roles
feature branch had come back clean and was ready to merge, one reporting a documentation
snapshot commit with a file count;
2. run one read-only shell command that printed a few fields from its own local session-registry
JSON and a local config file, to check whether a subordinate session's window had launched.
No code was written on that turn. No security tooling was invoked. No network probe was run.
Nothing outside the developer's own machine and repository was touched. The model produced an
empty turn and the user lost the turn entirely.
## Why this is first-party defensive work
The repository is a small-business accounting/CRM SaaS owned and operated by the person at the
keyboard. The work the status reports describe is hardening **our own product's** permission
checks so that a user cannot be granted access above their own level — routine access-control
correctness on our own code, on the path to a SOC 2 Type 2 audit. The owner was present in the
session when this fired.
The trigger appears to be vocabulary, not action. This session never opens security code at all
by design — it reads short status summaries from other sessions. It was blocked for *receiving a
summary about* permission-guard work, which is the same failure mode identified in occurrence 1
(#90680): the flagged input was an inbound agent-to-agent message, not anything the session
authored.
## Operational harm
- The turn was lost, and the session — a coordinator holding live state — produced no output.
- Recovery required a deliberate model change to Opus 5 mid-session. Our internal protocol
treats a silent tier downgrade as a defect precisely because it has previously left a session
running for days below the tier its operator believed it was on, so this change had to be
announced and recorded, which costs further operator attention.
- Cumulative pattern: this is **occurrence 3** of this class in this org (see #90680 for 1 and 2,
2026-08-29). In all three, the flagged input was inbound coordination text about the owner's own
defensive work, never an attack, never third-party infrastructure.
## Ask
Consider whether the `cyber` classifier can weigh *who is being described* — a session reading
status reports about hardening the operator's own permission checks is not an attack signal. At
minimum, returning a refusal that names the offending span would let us reword and retry
deterministically, rather than guessing which of two routine status reports tripped it.
## Environment
Claude Code CLI on Windows 11, model `claude-fable-5-1`, Max plan, working directory is the
owner's own repository. Prior filings from this org: #88049 (tool-drop bug), #90680 (safeguard
false-positive, occurrences 1 and 2).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by comparing this report with occurrence 1 and 2 in issue #90680, plus the related tool-drop report in #88049. Review the recorded request ID, refusal message, transcript subtype, and described inbound status reports. Done means determining whether the classifier can distinguish first-party defensive coordination from attack content or identify the offending span for deterministic retry.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, security
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100