TL;DR Cuando aparezca el card:
1para leerlo,2dos veces para enviarlo. El transcript no viaja salvo que lo pongas enyes. Y si no quieres que te interrumpa,"feedbackDrafts": "quiet"lo baja a un contador en el pie sin dejar de escribir los borradores.
Claude Code se equivoca, tú te quejas, y ahí muere. Nadie en Anthropic se entera nunca, porque un reporte que sirva de algo cuesta diez minutos: reconstruir qué pasó, acordarte de la versión, y encontrar los IDs de las peticiones que fallaron, que es justo lo que no tienes a mano en el momento en que acabas de perder media hora.
Desde la v2.1.238 lo escribe él. Cuando una herramienta falla en bucle, cuando no puede con lo que le pides, o cuando le señalas un error, Claude redacta el informe sobre su propio fallo con la herramienta SendFeedback y lo deja en cola. A ti solo te queda leerlo y decidir.
Lo que ves cuando pasa
Aparece un card encima del prompt, con el título del borrador y las primeras líneas:
✻ Bug report drafted: Ran git pull on the user's checkout during a read-on…
│ - What happened: During a review/assessment task (understand a repo, then
│ review a Slack thread), the model noticed the local checkout was 46
│ commits behind…
1 to review · 2 to send · 0 to dismiss
Tres teclas. 1 lo abre para revisarlo, 2 (dos veces, la segunda confirma) lo manda tal cual, y 0 lo quita de delante. El botón de mandarlo sin abrirlo lo dice en su propia etiqueta: Send without reviewing (full draft + env, no transcript).
Por defecto ves como mucho tres cards por sesión. A partir de ahí solo queda un contador en el pie.
El borrador es un archivo tuyo, y puedes abrirlo
Cada borrador se escribe en ~/.claude/feedback/drafts/<uuid>.json, con permisos 600. Este es uno real de esta misma sesión, con el título, el cuerpo, las rutas y los IDs recortados:
{
"draft_id": "8e0e2137-80b4-4c6f-b803-2d774c521185",
"created_at": "2026-09-17T09:23:13.864Z",
"source_session_id": "80fff406-...",
"cwd": "/Users/juan/code/ai-infra",
"model": "claude-opus-5[1m]",
"cli_version": "2.1.270",
"os": "darwin arm64",
"request_ids": ["req_011Cf8m6...", "req_011Cf8mA...", "req_011Cf8mR..."],
"type": "bug",
"title": "...",
"details": "...",
"area": "skills",
"failure_mode": "instruction_following",
"task_category": "other",
"trigger": "model_judgment",
"effort": "high",
"thinking_type": "adaptive",
"message_count": 415,
"assistant_turn_count": 29,
"subagent_count": 0,
"transcript_ref": {
"session_file": "/Users/juan/.claude/projects/-Users-juan-code-ai-infra/80fff406-....jsonl",
"message_range": null,
"project_dir_key": "-Users-juan-code-ai-infra"
},
"status": "queued"
}
Ahí está lo que cuesta reunir a mano: los tres últimos IDs de petición, la versión exacta, el modelo con su ventana, el nivel de effort, y cuántos turnos llevabais. Y dentro de details, un apartado que cita tus palabras tal cual las escribiste, que es la parte que más pesa cuando alguien al otro lado intenta reproducir el fallo.
Fíjate en transcript_ref: es una ruta, no la conversación. El borrador guarda dónde está tu transcript para poder encontrarlo luego, y el directorio no se envía.
Lo que sale de tu máquina y lo que se queda
Lo que viaja cuando le das a enviar: el título, el área, los detalles, el entorno (versión, sistema, modelo) y los IDs de petición. La conversación entera solo va si pones Send transcript en yes al revisarlo, y desde el card nunca va.
Dos detalles que están en el código que se ejecuta, no en la documentación. El payload manda gitRepo: false y commitSha: null fijos, así que de tu repositorio no sale nada. Y aunque digas que sí al transcript, Claude Code lo retiene igual en dos casos: si no puede corroborar que esa conversación es de esta sesión, y si detecta marcas de transcripts de terceros dentro.
Hasta que le das a enviar no sale nada. El archivo se borra de tu disco cuando el envío sale bien, o cuando lo descartas desde la cola.
Y si prefieres que no te interrumpa
Que aparezca un card en mitad de algo es justo el momento en el que menos ganas tienes de leer nada. El primer impulso es apagarlo, y de hecho Claude Code te lo ofrece: en cuanto descartas un card te pregunta Turn off Claude-drafted feedback?.
No hace falta llegar ahí. Hay un escalón intermedio:
{
"feedbackDrafts": "quiet"
}
Con quiet los borradores se siguen escribiendo, pero en vez del card solo queda un contador en el pie del prompt. Los lees cuando te apetezca:
/feedback
Sin argumento abre la cola entera, con los borradores de todas tus sesiones. Ahí puedes editar el título, el área y los detalles, decidir lo del transcript, y enviar o descartar. Si sales con /exit y queda algo en cola, te pregunta antes de cerrar.
Referencia
"feedbackDrafts": "notify" |
Por defecto. Card encima del prompt, máximo 3 por sesión |
"feedbackDrafts": "quiet" |
Sigue escribiéndolos, solo contador en el pie |
"feedbackDrafts": "off" |
Desactiva la herramienta, no se escribe ningún borrador |
CLAUDE_CODE_SEND_FEEDBACK=0 |
Lo mismo que off, por variable de entorno |
/feedback |
Abre la cola de borradores de todas tus sesiones |
| Cola | 10 borradores; el número 11 expulsa al más viejo |
| Caducidad | 30 días, o tu cleanupPeriodDays si es menor |
En una organización con retención de datos personalizada el envío no está disponible, y el administrador puede fijar feedbackDrafts en los managed settings por encima de tu ajuste.
Documentación oficial: SendFeedback tool behavior
Requisitos
- Claude Code v2.1.238 o superior. El JSON de arriba es el que quedó en disco al lanzar la herramienta en esta sesión, que corría la v2.1.270; el código citado es el que se ejecuta en la v2.1.274.
- Sesión hablando directamente con Anthropic. En el código, la herramienta se desactiva cuando el proveedor no es el propio (
bedrock,vertex,foundry,gateway) y cuando la política de tu organización bloquea el feedback. - La comprobación final consulta un flag remoto que viene apagado por defecto, así que el despliegue es gradual: si nunca te ha salido un card estando en la versión correcta, esa es la explicación más probable.
- Si has visto pasar el comando por encima sin saber qué era, la cheat sheet de slash commands lo coloca entre los demás.