Recurring spurious [bio] refusal (empty content) across unrelated sessions, same day

Status Open
Maintainer reply None cached
Activity 0 comments · opened Sep 5, 2026

Title: Recurring spurious [bio] refusal (empty content) across unrelated sessions, same day

Summary

4 refusals with stop_reason: "refusal", category: "bio" hit 2 different Claude Code
sessions on the same day, all with empty thinking content immediately preceding the
refusal, and all following completely benign tool calls unrelated to any biological/chemical
content (checking a markdown file's section structure, listing scheduled cron jobs).

Environment

  • Claude Code desktop app, model claude-sonnet-5
  • Two long-running sessions (many hours, high tool-call volume, large cached context —

300K+ cache_read_input_tokens per turn in both cases)

Occurrences (same day)

| # | Session | Preceding action | Request ID |
|---|---|---|---|
| 1 | Trading | Bash: wc -l/grep "^## " on a local HISTORIAL-SESIONES.md | req_011CekjGHw6oStCqJMK5zxaM |
| 2 | Trading | (turn began with empty thinking, no preceding tool call shown) | req_011CekoWeB7tyjp7P9hCpujQ |
| 3 | Hub session | CronList tool call (listing scheduled cron jobs) | req_011CekpbawuPLLCLqXEEA4Cb |
| 4 | Hub session | (turn began with empty thinking, no preceding tool call shown) | req_011Cekq9aXVesbw5SX2LqnrW |

In both Trading occurrences, the session self-recovered on the very next turn without
any user intervention (no rewind needed) — the error message says "Start a new session to
continue" but that was not actually necessary.

What I'd expect

Either: (a) these are known false positives on the refusal classifier and there's a
reporting channel / mitigation, or (b) something about long sessions with very large cached
context is correlated with triggering this — in which case it'd help to know if there's a
recommended session-length/context practice to reduce it.

Impact

Not blocking (all 4 recovered on their own), but the "Start a new session to continue"
messaging is misleading (implies data loss / need to restart when none occurred) and the
[bio] category label is confusing given zero biological/chemical content anywhere near
these turns.

View original on GitHub ↗