Ce qui change
Le diff tient en une ligne et déplace toute la boucle : quand les instructions changent en session, on ajoute un message {"role": "system"} dans messages au lieu de modifier le champ system de premier niveau ; le préfixe mis en cache reste identique octet pour octet et la requête suivante le relit 23. Les notes de version d’Anthropic du 2026-07-15 la documentent sur Claude Fable 5, Claude Mythos 5 et Claude Opus 4.8, sur l’API Claude, Bedrock et Google Cloud, sans en-tête bêta, en précisant qu’elles « corrigent des notes de disponibilité antérieures » 1. Le 2026-05-28, le périmètre se limitait à Opus 4.8 14 ; aucune source captée ne date l’élargissement.
Je l’adopterais pour le gain de cache, conditionné à un drapeau de capacité plutôt qu’à une liste de modèles figée. Car cette liste dépend aujourd’hui de la page éditeur consultée.
Deux docs, deux matrices
| Dimension | Doc Anthropic, 2026-07-21 2 | Doc Bedrock, 2026-07-21 3 |
|---|---|---|
| Modèles pris en charge | Fable 5, Mythos 5, Opus 4.8 ; pas Sonnet 5 | Opus 4.8 uniquement |
| Messages système consécutifs | Acceptés, fondus en une seule section système | Interdits |
| Modèle non pris en charge | Non précisé | 400 invalid_request_error |
Deux pages éditeurs vivantes, le même jour, qui se contredisent sur les deux points dont dépend une migration. Je ne tranche pas, et votre code non plus : une liste blanche recopiée de l’une ou l’autre est un pari qu’une mise à jour de doc annule sans préavis.
Le placement
La position intéressante suit les résultats d’outils, dans une boucle agentique 2 :
"messages": [
{"role": "user", "content": [
{"type": "tool_result", "tool_use_id": "toolu_01A", "content": "3 files changed"}
]},
{"role": "system", "content": "The user sent the following message while you were working: also update the changelog before you finish."}
]
Toute autre position, dont l’intervalle entre un tool_use et son tool_result, renvoie une 400, que Bedrock nomme 400 invalid_request_error 23.
Impact pour une équipe
Une décision concrète. Si votre boucle bascule d’Opus 4.8 vers Sonnet 5 pour les coûts, un seul message système injecté en session transforme ce repli en requête rejetée : Anthropic exclut Sonnet 5 et renvoie au champ system de premier niveau 2. Gardez ce chemin vivant sur la branche Sonnet 5, ou supprimez le repli pour ces sessions. Et sur Bedrock, ne lisez pas la matrice d’Anthropic comme une autorisation : cette page annonce toujours Opus 4.8 uniquement et interdit les messages système consécutifs 3. Testez une requête par modèle sur votre compte et laissez l’API, pas la doc, trancher.