- Scans
- Lancer un scan
- Approuver les actions d'un agent IA
Approuver les actions d'un agent IA
Ce guide explique comment faire demander votre accord à un scan agentique avant qu'il n'exécute une action risquée, et comment répondre depuis la page du scan.
Un agent IA décide de ce qu'il teste, et certaines de ses actions touchent de vraies personnes ou modifient de vraies données. Avec Approval of actions, vous choisissez si l'agent vous demande d'abord. Une demande attend dans l'onglet Approvals du scan, et vous l'approuvez, vous la refusez, ou vous y répondez avec vos propres instructions.
La vidéo montre le paramètre dans le formulaire du scan, puis répond à trois demandes.
Approval of actions est un paramètre de l'étape Guardrails des profils de scan agentiques : les Deep Agentic Scans, le Mobile Shielding Scan et les Single Vulnerability Assessments. Il est facultatif. Par défaut, l'agent exécute de lui-même les actions risquées.
Accédez à report.ostorlab.co
1. Choisir ce que l'agent fait d'une action risquée
Cliquez sur New Scan et remplissez le scan comme d'habitude : l'asset et un profil de scan agentique. À l'étape Guardrails, sous Approval of actions, choisissez l'une des trois options.

| Option | Ce qui se passe |
|---|---|
| Run without asking | L'agent exécute de lui-même les actions risquées. Personne n'est sollicité. C'est l'option par défaut. |
| Ask me, block if no answer | L'agent attend votre réponse. Si personne ne répond, l'action n'est pas exécutée. |
| Ask me, run if no answer | L'agent attend votre réponse. Si personne ne répond, il poursuit selon son propre jugement. |
Terminez les autres étapes et cliquez sur Submit. L'option s'applique à l'ensemble du scan, et Dig Deeper la reprend dans l'évaluation de suivi.
2. Savoir quand l'agent demande
L'agent décide quand demander. Le paramètre ne met pas en pause chaque appel d'outil. L'agent demande :
- avant une action qui touche de vraies personnes, comme l'envoi d'un SMS ou la publication de contenu,
- avant une action destructive ou irréversible,
- avant une action qui sort du périmètre du scan,
- lorsqu'il est bloqué et ne peut pas choisir en sécurité, par exemple lorsqu'il ne peut pas savoir si une cible fait partie du périmètre, ou lorsqu'il a besoin d'un identifiant ou d'un code que vous seul avez.
Pendant qu'une demande attend, les autres tests du scan continuent. Seule l'action qui attend votre décision est bloquée.
3. Ouvrir l'onglet Approvals
Ouvrez le scan. Lorsque son mode d'approbation n'est pas Run without asking, le menu des résultats affiche un onglet Approvals sous Risks. Un point orange et un compteur apparaissent sur l'onglet tant qu'un agent vous attend. L'onglet liste d'abord les demandes qui attendent votre réponse.

Ostorlab vous prévient aussi de l'arrivée d'une demande. Il envoie un e-mail contenant un lien vers cet onglet, et ajoute une notification, aux admins et aux utilisateurs de votre organisation qui peuvent voir le scan. Les lecteurs ne sont pas prévenus. Une personne est prévenue au plus une fois toutes les 10 minutes pour un scan.
4. Lire la demande
Chaque carte de Waiting for your answer est un message rédigé par l'agent : ce qu'il veut faire, et pourquoi. Lisez-le avant de répondre. Un message long est raccourci : cliquez sur Show details pour le lire en entier.
5. Répondre à la demande
Chaque carte offre trois façons de répondre.
- Approve : l'agent poursuit ce qu'il a décrit dans son message, et uniquement cela. Une demande ultérieure nécessite une nouvelle approbation.
- Deny : l'agent ne poursuit pas, et ne réessaie pas et ne contourne pas le refus. Pour donner un motif, cliquez d'abord sur Add a message : Deny envoie votre message comme motif.
- Add a message, puis Send reply : votre message parvient à l'agent comme réponse. Pour une question, c'est la réponse. Pour une action, c'est une indication et non une approbation : l'agent reconsidère, et redemande s'il veut toujours poursuivre.

Pendant que vous rédigez un message, Approve est désactivé : une approbation ne porte pas de message.
Pour approuver d'un coup toutes les demandes en attente, cliquez sur Approve all en haut de l'onglet, puis confirmez. L'agent poursuit alors tout ce qu'il a demandé, sans redemander, et cette action est irréversible.

6. Consulter l'historique
Les demandes traitées passent dans History, avec la réponse que vous avez donnée.

| Statut | Signification |
|---|---|
| Approved | Vous avez approuvé la demande. |
| Denied | Vous avez refusé la demande. Votre motif, le cas échéant, apparaît sous Reason. |
| Replied | Vous avez répondu par un message, affiché sous Reply. |
| Timed out | La demande a expiré et a été annulée ; elle apparaît dans History. |
Une demande encore en attente lorsque le scan se termine ou que l’agent cesse de vérifier les réponses apparaît sous No longer waiting, avec le message « The agent is no longer waiting ». Elle ne peut plus recevoir de réponse, car celle-ci n’atteindrait pas l’agent. Elle est distincte d’une demande annulée, qui apparaît dans History avec le statut Timed out.

Que se passe-t-il quand personne ne répond
Par défaut, l'agent attend jusqu'à 24 heures la réponse à une demande. Ensuite, le mode d'approbation décide :
- Ask me, block if no answer : l'action n'est pas exécutée, et l'agent poursuit ses autres tests.
- Ask me, run if no answer : l'agent poursuit l'action selon son propre jugement.
Une question sur l'appartenance d'une cible au périmètre fait exception. Si personne n'y répond, l'agent considère la cible comme hors périmètre et n'y touche pas, dans les deux modes.
Un refus ou une réponse ne permet jamais à l'action de s'exécuter, dans les deux modes.
Qui peut répondre
Les utilisateurs ayant le rôle admin ou user peuvent répondre. Les lecteurs peuvent ouvrir l'onglet Approvals et lire les demandes, mais ils ne peuvent pas y répondre.
Utiliser l'API
Les mutations de création de scan de l'API GraphQL acceptent un argument approvalMode, et un scan le renvoie dans son champ approvalMode :
approvalMode: FAIL_CLOSED
AUTO_APPROVE: Run without asking.FAIL_CLOSED: Ask me, block if no answer.FAIL_OPEN: Ask me, run if no answer.
Listez les demandes d'un scan et répondez-y avec un utilisateur connecté. Les clés d'API ne peuvent pas y répondre.
query {
humanInputRequests(scanId: 42, status: PENDING) {
id
message
status
createdAt
}
}
mutation {
answerHumanInputRequest(
humanInputRequestId: 7
decision: DENIED
responseText: "Do not touch /admin. It is out of scope."
) {
humanInputRequest {
id
status
responseText
}
}
}
statusvautPENDING,APPROVED,DENIED,REPLIEDouCANCELLED.CANCELLEDapparaît dans History avec le statut Timed out. Une demandePENDINGdont l’agent n’attend plus apparaît sous No longer waiting.decisionvautAPPROVED,DENIEDouREPLIED.REPLIEDexige unresponseText,DENIEDaccepte unresponseTextfacultatif comme motif, etAPPROVEDn'en accepte pas.