# 04 — Suspension, incident et retour manuel

Guide §9 : « L'organisation doit savoir qui peut suspendre l'agent, dans
quelles circonstances, comment bloquer ses accès, comment préserver les
journaux, comment aviser les personnes concernées, comment reprendre
manuellement le processus et comment documenter l'incident. Un agent qui ne
peut pas être interrompu rapidement ne devrait pas être autorisé. »

## 1. Qui peut suspendre, et comment

| Qui | Comment | Portée | Levée |
|---|---|---|---|
| Opérateur local (superviseur) | `POST /api/suspend {"action":"suspend","reason":"…"}` depuis une session connectée à l'agent (état : `GET /api/suspend/status`) | L'agent entier | Par l'opérateur ou la console |
| Console de gestion (responsable technologique, propriétaire) | Page du siège → *Suspendre* (commande `suspend` par le canal de rappel) | L'agent entier | **Console seulement** (une suspension imposée par la console ne peut être levée localement) |
| Utilisateur d'une conversation | Bouton *Annuler* | L'exécution en cours seulement | — |
| Passerelle de facturation | Automatique au dépassement du plafond de période | Appels payants | Renouvellement |

Circonstances (à compléter par l'organisme; §12 en propose) :
incidents répétés · coûts imprévisibles · journaux insuffisants · supervision
réelle qui diminue · environnement non conforme · comportement inattendu ·
soupçon d'injection ou d'exfiltration · demande d'un responsable.

## 2. Ce que la suspension fait (automatique)

1. Toute exécution en cours est annulée (même mécanisme que *Annuler*).
2. Aucun tour de conversation, tâche planifiée, requête d'agent pair,
   robot de clavardage, appel téléphonique, connecteur ou outil ne s'exécute.
3. L'interface passe en **lecture seule** : journal d'audit, transcriptions
   et réglages restent consultables pour comprendre l'incident; toute
   modification répond « agent suspendu ».
4. L'élagage du journal d'audit est suspendu (les traces de l'incident ne
   peuvent pas expirer).
5. L'état persiste au redémarrage : un agent suspendu ne se réveille pas.
6. Un avis est envoyé au propriétaire, au superviseur et à l'approbateur
   (`governance.notify`), et la console affiche l'état.
7. Le journal enregistre `agent.suspend` (qui, motif, source, exécutions
   annulées) puis `agent.resume` (qui, durée).

## 3. Bloquer les accès (au-delà de la suspension)

La suspension bloque l'usage des accès par l'agent, pas leur existence.
Selon la gravité :

- ☐ Désactiver les connecteurs concernés (interface ou politique de la console).
- ☐ Révoquer les identifiants côté fournisseur (le coffre ne contient que
  des copies : révoquer à la source).
- ☐ Révoquer la clé de facturation dans la console (coupe l'inférence).
- ☐ Retirer les contacts MCP (agents pairs) concernés.

## 4. Préserver les preuves

- ☐ Exporter le journal d'audit de la période (`Réglages → Audit → Exporter`)
  et vérifier la chaîne de hachage (bouton *Vérifier*); conserver le fichier
  et le résultat de la vérification.
- ☐ Exporter la fiche d'agent (`/api/governance/inventory?format=md`) telle
  qu'au moment de l'incident (l'empreinte de version y figure).
- ☐ Conserver les transcriptions des sessions concernées.
- ☐ Ne pas lever la suspension avant la fin de la collecte.

## 5. Aviser

| Qui | Quand | Par |
|---|---|---|
| Propriétaire, superviseur, approbateur | Automatique à la suspension | Console (`governance.notify`) |
| Sécurité de l'information | Si injection, exfiltration, accès abusif | Procédure d'incident de l'organisme |
| PRP | Si RP possiblement exposés | Procédure de l'organisme (Loi 25 : registre des incidents, avis à la CAI si risque sérieux) |
| Utilisateurs / personnes concernées | Selon l'impact | Propriétaire |

## 6. Retour manuel (à documenter par processus)

| Processus | Étapes que l'agent exécutait | Comment les faire manuellement | Personne | Délai acceptable |
|---|---|---|---|---|
| | | | | |

Vérifier : les données que l'agent lisait sont-elles accessibles sans lui ?
Les files de travail (tâches, escalades en attente) sont-elles visibles ?
(`/api/escalations`, tâches planifiées.)

## 7. Fiche d'incident

| | |
|---|---|
| Numéro | |
| Date / heure de détection | |
| Détecté par | |
| Description | |
| Événements d'audit liés (identifiants, événements `gate.*`, `hitl.*`, `cost.*`, `agent.suspend`) | |
| Sessions concernées | |
| Impact (données, actions, coûts, personnes) | |
| Mesures immédiates (suspension, accès révoqués, avis) | |
| Cause | |
| Correctifs (règles, connecteurs, niveau d'autonomie, formation) | |
| Réévaluation des risques requise (§11) | ☐ oui ☐ non |
| Reprise autorisée par | Date |

## 8. Protocole de test du mécanisme d'arrêt (à exécuter avant le pilote et à chaque revue)

| # | Étape | Attendu | Résultat | ✓ |
|---|---|---|---|---|
| 1 | Lancer une tâche longue (ex. « liste tous les fichiers du dossier et résume chacun ») | L'agent travaille | | ☐ |
| 2 | Depuis la console, *Suspendre* avec motif « test » | L'exécution s'arrête en quelques secondes; la réponse indique la suspension | | ☐ |
| 3 | Envoyer un nouveau message dans la conversation | Refus avec le texte de suspension; aucun outil appelé | | ☐ |
| 4 | Attendre l'heure d'une tâche planifiée (ou en créer une) | Elle ne s'exécute pas; le journal indique « skipped — agent suspended » | | ☐ |
| 5 | Depuis un agent pair (MCP) ou un canal de clavardage, envoyer une requête | Refus | | ☐ |
| 6 | Ouvrir `Réglages → Audit` | Lecture possible; `agent.suspend` présent avec acteur et motif | | ☐ |
| 7 | Tenter de modifier un réglage | Refusé (423 « agent suspendu ») | | ☐ |
| 8 | Tenter de lever la suspension **localement** | Refusé (imposée par la console) | | ☐ |
| 9 | Redémarrer le contenant | Toujours suspendu | | ☐ |
| 10 | Vérifier l'avis reçu par le propriétaire / superviseur | Courriel ou notification reçu | | ☐ |
| 11 | Lever la suspension depuis la console | `agent.resume` au journal; l'agent répond de nouveau | | ☐ |
| 12 | Exécuter le retour manuel du processus (section 6) | Réalisé dans le délai acceptable | | ☐ |

Testé le ______ par ______ — Résultat global : ☐ conforme ☐ écarts : ______
