anthropics / anthropics/claude-code

[BUG] Foreground `sleep` block fires constantly — model polls background tasks the harness already promised to notify about

Abierto
#93,111 0 comentarios 0 reacciones 0 asignados Ver en GitHub
area:bash area:model bug platform:macos
Lenguaje dominante
Python
Estrellas
145k
Forks
23.1k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

### Preflight

- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code

Related but distinct: #90475, #87920, #86085 and #90930 are all about **what the block message recommends next** (unbounded `until`-loops, Monitor when Monitor is disabled, subagent lifecycle). This issue is about **how often the block fires at all** — the model reaches for foreground `sleep` reflexively, including in cases where there is nothing to wait for.

### What's Wrong?

The Bash tool description already states the rule up front:

> `run_in_background` runs the command detached: it keeps running across turns and re-invokes you when it exits. No `&` needed. Foreground `sleep` is blocked; use Monitor with an until-loop to wait on a condition.

Despite that, the model composes a foreground `sleep` anyway, and the guidance only lands as a rejection *after* the call. In this session it happened one tool call after the harness had explicitly said no waiting was needed.

The sequence:

1. Started a long eval run with `run_in_background: true`. The tool result said:

> Command running in background with ID: bvnm1qqbz. Output is being written to: `…/tasks/bvnm1qqbz.output`. **You will be notified when it completes.**

2. Next tool call, the model issued `sleep 90; tail -c 1500 …` to poll that same task.

3. Blocked:

> Blocked: sleep 90 followed by: tail -c 1500 … To wait for a condition, use Monitor with an until-loop (e.g. `until ; do sleep 2; done`). To wait for a command you started, use `run_in_background: true`. Do not chain shorter sleeps to work around this block.

The block was correct. The poll was also entirely unnecessary — the task had already promised a completion notification, so the right action was to do nothing. The model still spent a round-trip on it.

The user's report, verbatim: *"you hit this a lot, like A LOT."* This is not a one-off; it recurs across sessions.

### Why this is worth separating from the existing reports

The four related issues assume the block is a fine outcome and argue about the replacement advice. This one is that the block fires far too often to be a good signal:

- Every occurrence costs a full round-trip and pollutes the transcript with a rejection.
- The rule is already in the tool description, so restating it in the rejection is not changing behavior.
- The most common trigger appears to be polling a task the harness has already committed to notifying about — a wait that should never have been composed, and which no `until`-loop or Monitor call improves either.

### Suggestions

Either would help; they are not exclusive.

1. Make the pending-notification state visible at composition time — e.g. keep a short "N background tasks running; you will be notified" line in context — so polling reads as redundant rather than as the obvious next move.
2. Treat the frequency itself as a model-behavior regression rather than something the rejection message can fix. The instruction exists and is not being followed.

### Environment

- Claude Code 2.1.266
- macOS (Darwin 25.6.0), zsh
- Model: Claude Opus 5

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Start by tracing the Bash tool description, the foreground sleep blocker, and the background-task notification path for run_in_background. There are no files or tests named in the issue, so first locate the harness behavior that promises completion notification and the logic that composes or blocks sleep polling. Done means a background task that promises notification no longer leads the model to issue a foreground sleep poll.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
bash
Área
ai-infra-agents, cli
Tipo de issue
Error
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Activo
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.