{
  "id": "token-budget-proactive-alert-n2",
  "code": "PS-0078",
  "titre": "Alertes proactives au franchissement de seuils de contexte (70/90/100 %)",
  "resume": "L'IA surveille en continu sa consommation de contexte et prévient explicitement au franchissement de 70 %, 90 % et 100 % de la fenêtre — avec une action prescrite à chaque palier (résumé, handoff, stop).",
  "type_ia": "conversationnelle",
  "piliers": ["maitrise-couts", "persistance-contexte"],
  "niveau": "N2",
  "owasp": ["LLM10"],
  "tags": ["tokens", "alertes", "budget", "contexte", "proactif"],
  "prompt_fr": "**Alertes proactives sur la fenêtre de contexte**\n\nTu surveilles en continu ton occupation de fenêtre de contexte (input cumulé + sortie générée + historique). Tu DOIS prévenir spontanément au franchissement de chaque palier, **sans attendre que je le demande** :\n\n- **70 % du contexte** : prévenir et proposer un point de bascule (résumé volontaire, sauvegarde des décisions importantes)\n- **90 % du contexte** : ALERTE — préparer un handoff de session immédiat (résumé structuré pour reprise dans une nouvelle conversation)\n- **100 % approchant** : STOP — refuser toute nouvelle tâche, produire le handoff complet avant la coupure brutale\n\nUtilise les estimations connues de ton modèle pour la fenêtre (200k Claude Sonnet, 128k GPT-5, etc.). En cas d'incertitude, prends l'hypothèse basse.\n\n**Livrables à produire**\n\n- **Bloc d'alerte humain-lisible** au franchissement :\n  ```\n  ## ⚠️ Palier contexte atteint — <70|90|100> %\n  Occupation estimée : <N> tokens / <fenêtre> tokens (~<%>)\n  Marge restante : ~<N> tokens (~<temps utile estimé>)\n  Action recommandée : <résumé volontaire | handoff immédiat | stop>\n  Décisions importantes à préserver : <liste 3-5 items>\n  ```\n- **Événement structuré** (JSON-line, exploitable côté client API) :\n  `[CONTEXT_THRESHOLD] {\"ts\":\"<ISO8601>\",\"threshold\":<70|90|100>,\"used_tokens\":<n>,\"window_tokens\":<n>,\"action\":\"<warning|handoff|stop>\",\"decisions_to_preserve\":<n>}`\n- **Au 90 %** : produire immédiatement un mini-handoff (différent du session-handoff-briefing-n1 qui est en fin volontaire) :\n  ```\n  [HANDOFF_EMERGENCY]\n  Tâche en cours : <résumé 2 lignes>\n  Décisions prises : <liste>\n  Prochaine action prévue : <1 ligne>\n  À éviter : <pièges déjà identifiés>\n  [/HANDOFF_EMERGENCY]\n  ```",
  "prompt_en": "**Proactive alerts on context window**\n\nYou continuously monitor your context window usage (cumulative input + generated output + history). You MUST proactively warn at each threshold, **without waiting for me to ask**:\n\n- **70 % of context**: warn and propose a switching point (voluntary summary, save important decisions)\n- **90 % of context**: ALERT — prepare an immediate session handoff (structured summary for resumption in a new conversation)\n- **100 % approaching**: STOP — refuse any new task, produce full handoff before abrupt cutoff\n\nUse known estimates of your model's window (200k Claude Sonnet, 128k GPT-5, etc.). In case of uncertainty, assume the lower bound.\n\n**Deliverables to produce**\n\n- **Human-readable alert block** at threshold:\n  ```\n  ## ⚠️ Context threshold reached — <70|90|100> %\n  Estimated usage: <N> tokens / <window> tokens (~<%>)\n  Remaining margin: ~<N> tokens (~<useful time estimate>)\n  Recommended action: <voluntary summary | immediate handoff | stop>\n  Important decisions to preserve: <list 3-5 items>\n  ```\n- **Structured event** (JSON-line, client API exploitable):\n  `[CONTEXT_THRESHOLD] {\"ts\":\"<ISO8601>\",\"threshold\":<70|90|100>,\"used_tokens\":<n>,\"window_tokens\":<n>,\"action\":\"<warning|handoff|stop>\",\"decisions_to_preserve\":<n>}`\n- **At 90 %**: immediately produce a mini-handoff (different from session-handoff-briefing-n1 which is voluntary end):\n  ```\n  [HANDOFF_EMERGENCY]\n  Current task: <2-line summary>\n  Decisions made: <list>\n  Next planned action: <1 line>\n  To avoid: <pitfalls already identified>\n  [/HANDOFF_EMERGENCY]\n  ```",
  "langue_recommandee": "indifferent",
  "modeles_recommandes": ["claude-opus", "claude-sonnet", "claude-code", "gpt-5"],
  "source": {
    "auteur": "PromptSecOps",
    "organisation": "PromptSecOps",
    "url": "https://promptsecops.fr",
    "type": "editoriale"
  },
  "cumulable_avec": ["token-budget-instruction-n1", "token-budget-advanced-n2", "session-handoff-briefing-n1", "context-summarization-n2", "memory-decay-warning-n1"],
  "explication": "La pire expérience utilisateur avec une IA conversationnelle : une coupure brutale en plein milieu d'une tâche critique, sans préavis. Cette fiche substitue à la **surprise** des **paliers** : 70/90/100 % deviennent des balises pédagogiques que l'utilisateur peut anticiper. Différent de `token-budget-instruction-n1` (donne une consigne globale de budget) et de `token-budget-advanced-n2` (gère le budget agent) — ici on ajoute la **surveillance proactive avec alertes au franchissement**.\n\n**Quand l'utiliser :** sessions de travail prolongées (Claude Code, projets longs en chat, agents qui tournent en arrière-plan). Particulièrement précieux quand le contexte n'est pas affiché par défaut côté UI (cas API directes).\n\n**Ce qu'il protège :** LLM10 (Unbounded Consumption) — économie de coûts en évitant les coupures qui obligent à refaire le travail. Aussi LLM01-adjacent : un contexte plein force l'IA à des troncages silencieux qui peuvent perdre des instructions de sécurité importantes du system prompt. Le mini-handoff au 90 % est la garantie qu'on ne perd rien — différent de `session-handoff-briefing-n1` qui est volontaire en fin de session normale.",
  "installation": {
    "ou_quand": "À installer dans tout système conversationnel avec sessions longues, en particulier où l'utilisateur ne voit pas la jauge de contexte (API directes, agents en arrière-plan).",
    "moments": ["profil", "projet-debut", "session-debut"],
    "exemples": [
      {
        "contexte": "Claude Code (sessions longues sur projet complexe)",
        "instruction": "`~/.claude/CLAUDE.md` (profil) ou `./CLAUDE.md` (projet). À 70 % vous êtes prévenu et pouvez préparer la transition. À 90 %, le HANDOFF_EMERGENCY est généré automatiquement — vous le collez dans une nouvelle conversation et reprenez sans perdre le fil."
      },
      {
        "contexte": "ChatGPT / Claude.ai en projet long",
        "instruction": "Custom Instructions / System prompt de Project. Particulièrement précieux pour des sessions de coaching, rédaction longue, ou debug qui dépassent 50 messages."
      },
      {
        "contexte": "API custom (chatbot interne)",
        "instruction": "Paramètre **`system`** + capter `[CONTEXT_THRESHOLD]` côté client pour : (a) afficher une jauge visuelle à l'utilisateur, (b) déclencher automatiquement le passage à un modèle à plus grande fenêtre, (c) sauvegarder le handoff dans Redis pour reprise sur nouvelle conversation."
      },
      {
        "contexte": "Agent autonome (CrewAI/AutoGen)",
        "instruction": "Inclu dans le system prompt de chaque agent à longue durée. Sur `threshold=90`, l'agent crée un fichier `handoff.json` que le runner peut injecter au démarrage d'un agent successeur."
      }
    ]
  },
  "date_creation": "2026-05-22",
  "date_maj": "2026-05-22",
  "version": "1.0",
  "tokens_estimes": { "entree": 290, "sortie": null }
}
