Aller au contenu

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.

Approval of actions

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.

L'onglet Approvals

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.

Répondre avec un message

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.

Approve all

6. Consulter l'historique

Les demandes traitées passent dans History, avec la réponse que vous avez donnée.

Historique

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.

L'agent n'attend plus

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
    }
  }
}
  • status vaut PENDING, APPROVED, DENIED, REPLIED ou CANCELLED. CANCELLED apparaît dans History avec le statut Timed out. Une demande PENDING dont l’agent n’attend plus apparaît sous No longer waiting.
  • decision vaut APPROVED, DENIED ou REPLIED. REPLIED exige un responseText, DENIED accepte un responseText facultatif comme motif, et APPROVED n'en accepte pas.

Étapes suivantes