# Tu agente ya no puede reescribir su propio historial: qué cambió en la API de Claude Fable 5.1

> Con diagrama: tres cambios de la API rompen código que funcionaba, y uno solo aparece en las cuentas creadas después del 31 de agosto.

- Publicado: 6 de septiembre de 2026
- Autor: Equipo de IntegraLaIA
- Categoría: Ingeniería
- Temas: Agentes, Costos, Gobernanza, Producción
- Original: https://integralaia.com/blog/historial-append-only-claude-fable-5-1
- Cómo se hizo: Borrador asistido por IA (Claude); revisado, editado y verificado por Equipo de IntegraLaIA el 6 de septiembre de 2026. Ilustración generada con IA.

---

El 1 de septiembre Anthropic publicó Claude Fable 5.1. La comparativa de hace dos días miraba el índice y el coste por tarea; esto es la otra mitad, la que no sale en los titulares: tres cambios de la API que rompen código que ayer funcionaba.

Ninguno se arregla cambiando el nombre del modelo en una variable.

## Tres cambios, y solo uno da la cara

El primero es visible. `tool_choice` en sus tipos `any` y `tool` devuelve 400. Quien forzaba una herramienta para garantizar una llamada con argumentos válidos tiene tres reemplazos: `auto` con la instrucción escrita, `strict` en la definición de la herramienta, o structured outputs si esa llamada forzada solo existía para recibir JSON.

Los otros dos van sobre los bloques de razonamiento que el modelo devuelve y que uno reenvía en el turno siguiente. Ahí es donde se pone interesante.

<figure style="margin:2rem auto;max-width:560px">
<svg viewBox="0 0 560 420" role="img" aria-labelledby="hist-t hist-d" style="width:100%;height:auto;display:block">
<title id="hist-t">Los tres caminos de un bloque de razonamiento al reenviarlo en Claude Fable 5.1</title>
<desc id="hist-d">Un bloque de razonamiento producido por Claude Fable 5.1 se reenvía en el turno siguiente y puede seguir tres caminos. Si lo recibe el mismo modelo o uno más nuevo, se lee y se usa: es el camino normal. Si lo recibe un modelo anterior, la API lo descarta sin error y sin cobro, así que el fallo es silencioso. Si el historial anterior al bloque cambió, la API devuelve un error 400, pero solo en las cuentas creadas desde el 31 de agosto de 2026. La consecuencia de diseño es que el historial se añade y no se reescribe: no tocar el prompt de sistema ni la lista de herramientas a mitad de conversación, no resumir ni recortar turnos viejos por cuenta propia, y no reintentar en un modelo anterior arrastrando el historial. La caché empuja en la misma dirección, con lecturas a 0,25 dólares por millón de tokens.</desc>
<defs>
<marker id="hist-ar" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#a4a4ad"/></marker>
</defs>
<rect x="140" y="8" width="280" height="56" rx="10" fill="#e8f8f5" stroke="#00BFA6"/>
<text x="280" y="32" text-anchor="middle" font-size="14" font-weight="700" fill="#18181b">Bloque de razonamiento</text>
<text x="280" y="51" text-anchor="middle" font-size="11" fill="#3d3d47">lo produce Claude Fable 5.1</text>
<text x="292" y="80" font-size="10.5" fill="#575764">se reenvía en el turno siguiente</text>
<path d="M280,64 V88 H108 V110" fill="none" stroke="#a4a4ad" stroke-width="1.5" marker-end="url(#hist-ar)"/>
<path d="M280,64 V88 H280 V110" fill="none" stroke="#a4a4ad" stroke-width="1.5" marker-end="url(#hist-ar)"/>
<path d="M280,64 V88 H452 V110" fill="none" stroke="#a4a4ad" stroke-width="1.5" marker-end="url(#hist-ar)"/>
<rect x="24" y="114" width="168" height="114" rx="10" fill="#ffffff" stroke="#00BFA6"/>
<text x="108" y="138" text-anchor="middle" font-size="12.5" font-weight="700" fill="#18181b">El mismo modelo</text>
<text x="108" y="158" text-anchor="middle" font-size="11" fill="#3d3d47">o uno más nuevo</text>
<text x="108" y="184" text-anchor="middle" font-size="11.5" font-weight="700" fill="#18181b">Se lee y se usa</text>
<text x="108" y="207" text-anchor="middle" font-size="10.5" fill="#575764">el camino normal</text>
<rect x="196" y="114" width="168" height="114" rx="10" fill="#ffffff" stroke="#a4a4ad"/>
<text x="280" y="138" text-anchor="middle" font-size="12.5" font-weight="700" fill="#18181b">Un modelo anterior</text>
<text x="280" y="158" text-anchor="middle" font-size="11" fill="#3d3d47">en el mismo hilo</text>
<text x="280" y="184" text-anchor="middle" font-size="11.5" font-weight="700" fill="#18181b">Se descarta</text>
<text x="280" y="207" text-anchor="middle" font-size="10.5" fill="#575764">sin error y sin cobro</text>
<rect x="368" y="114" width="168" height="114" rx="10" fill="#ffffff" stroke="#a4a4ad"/>
<text x="452" y="138" text-anchor="middle" font-size="12.5" font-weight="700" fill="#18181b">Historial editado</text>
<text x="452" y="158" text-anchor="middle" font-size="11" fill="#3d3d47">antes de ese bloque</text>
<text x="452" y="184" text-anchor="middle" font-size="11.5" font-weight="700" fill="#18181b">Error 400</text>
<text x="452" y="203" text-anchor="middle" font-size="10.5" fill="#575764">solo en cuentas creadas</text>
<text x="452" y="218" text-anchor="middle" font-size="10.5" fill="#575764">desde el 31-ago-2026</text>
<path d="M108,228 V248 H280" fill="none" stroke="#a4a4ad" stroke-width="1.5"/>
<path d="M452,228 V248 H280" fill="none" stroke="#a4a4ad" stroke-width="1.5"/>
<path d="M280,228 V248" fill="none" stroke="#a4a4ad" stroke-width="1.5"/>
<line x1="280" y1="248" x2="280" y2="272" stroke="#a4a4ad" stroke-width="1.5" marker-end="url(#hist-ar)"/>
<rect x="24" y="276" width="512" height="136" rx="12" fill="#e8f8f5" stroke="#00BFA6"/>
<text x="44" y="300" font-size="13" font-weight="700" fill="#18181b">Lo que esto obliga: el historial se añade, no se reescribe</text>
<circle cx="48" cy="322" r="2.5" fill="#00BFA6"/>
<text x="60" y="326" font-size="11.5" fill="#3d3d47">No tocar el prompt de sistema ni las herramientas a mitad de conversación</text>
<circle cx="48" cy="344" r="2.5" fill="#00BFA6"/>
<text x="60" y="348" font-size="11.5" fill="#3d3d47">No resumir ni recortar turnos viejos por cuenta propia</text>
<circle cx="48" cy="366" r="2.5" fill="#00BFA6"/>
<text x="60" y="370" font-size="11.5" fill="#3d3d47">No reintentar en un modelo anterior arrastrando el historial</text>
<text x="60" y="394" font-size="10.5" font-style="italic" fill="#575764">La caché pide lo mismo: prefijo estable, lecturas a 0,25 USD por millón.</text>
</svg>
<figcaption style="margin-top:.75rem;font-size:.8125rem;line-height:1.5;color:#575764;text-align:center">Los tres caminos y sus resultados salen de las notas de versión del 1 de septiembre; el bloque de abajo es la consecuencia de diseño.</figcaption>
</figure>

## El que solo le sale a tu cliente más nuevo

La API ahora comprueba que nada anterior a un bloque de razonamiento haya cambiado. Si tocas el prompt de sistema, la lista de herramientas o un mensaje previo y reenvías el bloque, responde 400. Pero solo en cuentas creadas desde el 31 de agosto de 2026.

Conviene leerlo dos veces: no es un fallo del código, es un fallo de la cuenta. El mismo despliegue pasa contra tu cuenta de desarrollo, que es vieja, y revienta contra la del cliente que diste de alta la semana pasada. "En mi máquina funciona" pasa a ser literalmente cierto y completamente inútil. Si operas [una plataforma con una cuenta por cliente](/plataforma), el error aparece por inquilino, y estrena con el más reciente.

## El que no falla, y por eso es peor

El otro es más callado. Un bloque de razonamiento queda atado al modelo que lo produjo: uno anterior no lo lee, y la API lo descarta sin error y sin cobro.

El patrón que rompe es de los comunes: reintentar en un modelo más barato cuando el principal va lento o devuelve 429. El reintento contesta, la factura incluso baja, y nadie se entera de que el agente perdió el razonamiento que traía puesto. No hay excepción que capturar. Solo un agente que, de vez en cuando, razona peor.

## Se añade, no se reescribe

La conclusión es de diseño y vale para cualquier proveedor. La caché premia un prefijo que no cambia; el razonamiento preservado ahora castiga mutarlo. Las dos cosas piden lo mismo: un historial al que se le añade y nunca se le reescribe.

Eso descarta unos cuantos atajos cómodos: inyectar la fecha de hoy en el prompt de sistema, resumir turnos viejos a mano, sumar una herramienta a mitad de conversación. Es la misma disciplina que ya nos impone la [Constitución de Proyecto](/blog/constitucion-de-proyecto): las reglas se fijan antes de arrancar, no se negocian en el turno doce.

Y hay premio. Las lecturas de caché de Fable 5.1 cuestan 0,25 dólares por millón, 0,025 veces el precio de entrada frente a 0,1 en el resto de modelos. Para un agente que reenvía un prompt de sistema grande en cada turno, ese renglón es el que manda en la factura. [Cómo gobernamos ese gasto](/os) da para otro artículo, pero empieza aquí: con un prefijo que no se toca.
---

## Sobre qué se escribió

- Notas de versión de la plataforma de Claude, 1 de septiembre de 2026: lanzamiento de Fable 5.1 y Mythos 5.1, tool_choice, bloques de razonamiento y precio de lectura de caché: https://platform.claude.com/docs/en/release-notes/overview
- Anthropic, anuncio de Claude Fable 5.1 y Claude Mythos 5.1: https://www.anthropic.com/claude-fable-and-mythos-5-1
- Claude Platform, strict tool use, uno de los reemplazos que las notas señalan para tool_choice forzado: https://platform.claude.com/docs/en/agents-and-tools/tool-use/strict-tool-use
- Claude Platform, structured outputs: https://platform.claude.com/docs/en/build-with-claude/structured-outputs

IntegraLaIA (https://integralaia.com). Publicado bajo el enlace original; cítalo si lo reutilizas.
