Skip to main content
Les automatisations vous permettent de connecter des événements externes — messages Slack, webhooks GitHub, mises à jour de tickets Linear, planifications et webhooks personnalisés — à des sessions Devin qui démarrent automatiquement. Au lieu de taguer manuellement Devin chaque fois qu’un bug est signalé ou qu’une vérification CI échoue, vous définissez le déclencheur une seule fois et Devin traite chaque événement au fur et à mesure. Vous pouvez également gérer les automatisations de manière déclarative avec le provider Terraform. Pour une démonstration vidéo avec quatre exemples, consultez le tutoriel sur les automatisations Devin.

Concepts de base

Une automatisation comporte un déclencheur et des actions, avec des conditions facultatives et une vérification préalable (Preflight check) :

Types d’action

Sources de déclenchement

Les sources autres que la planification apparaissent dans le sélecteur de déclencheurs dès que l’intégration correspondante est connectée dans Settings > Connections. Une même automatisation peut avoir plusieurs déclencheurs — ils sont combinés avec un OU, donc l’automatisation se déclenche dès qu’un de ses déclencheurs correspond. Par exemple, vous pouvez avoir une automatisation qui se déclenche à la fois sur un échec de CI GitHub et sur une réaction Slack.

Créer une automatisation

Depuis la page automatisation

  1. Accédez à automatisation dans la barre latérale
  2. Cliquez sur Créer une automatisation et choisissez Create pour ouvrir un éditeur vierge (si vous n’avez encore aucune automatisation, cliquez plutôt sur Create manually sur la page d’accueil). Le même menu propose également modèle (ouvre la galerie de modèles) et Generate with Devin (démarre une session qui crée l’automatisation avec vous)
  3. Configurez le déclencheur, les conditions et l’action
  4. Cliquez sur Créer une automatisation

À partir d’un modèle

  1. Accédez à Automatisations dans la barre latérale
  2. Cliquez sur Créer une automatisation > Modèle (si vous n’avez encore aucune automatisation, cliquez plutôt sur Créer à partir d’un modèle sur la page d’accueil), ou accédez directement à /automations/templates
  3. Parcourez la galerie de modèles — chaque modèle est une automatisation préconfigurée pour un workflow courant
  4. Cliquez sur un modèle pour préremplir l’éditeur avec son déclencheur, son action et les limites suggérées
  5. Personnalisez la configuration (p. ex., sélectionnez votre canal Slack ou votre repo), puis cliquez sur Créer une automatisation

Utilisation du langage naturel

Sur la page des automatisations, cliquez sur Créer une automatisation > Generate with Devin (si vous n’avez encore aucune automatisation, cliquez plutôt sur la carte Generate with Devin de la page d’accueil). Devin ouvre une nouvelle session pour vous aider à concevoir l’automatisation. Décrivez ce que vous voulez — par exemple, « Lorsqu’une vérification CI échoue sur my-org/my-repo, demande à Devin de corriger le problème et de pousser sur la même branche. » Devin générera la configuration de l’automatisation, que vous pourrez examiner puis créer.

Configurer les déclencheurs

Déclencheurs Slack

Les déclencheurs Slack s’activent lorsqu’un message est publié ou lorsqu’une réaction est ajoutée dans un canal où Devin a été invité.
  • Message Slack : Se déclenche à la publication de nouveaux messages. Une condition de canal est ajoutée par défaut ; vous pouvez la supprimer pour prendre en compte les messages de tous les canaux, mais chaque groupe de conditions doit alors comporter au moins un autre filtre (par exemple le texte du message ou le type d’expéditeur — Include thread replies seul ne suffit pas).
  • Groupe d’utilisateurs mentionné : Se déclenche lorsqu’un groupe d’utilisateurs Slack (par exemple @oncall) est mentionné. Sélectionnez le groupe ou saisissez son ID Slack (qui commence par S), puis, si besoin, limitez le déclencheur à des canaux spécifiques.
  • Réaction Slack : Se déclenche lorsqu’une réaction emoji spécifique est ajoutée à un message (p. ex. 🚨 pour les incidents). Vous pouvez filtrer par nom de réaction et par canal.
Pour les déclencheurs limités à un canal, Devin doit être invité dans le canal Slack. Vous devez également avoir connecté votre compte Slack personnel dans Settings > Connections > Slack.

Déclencheurs GitHub

Les déclencheurs GitHub s’activent lors d’événements du dépôt. Vous devez sélectionner un dépôt spécifique pour chaque déclencheur.
  • Problème : S’active lors d’événements liés aux problèmes (ouverture, fermeture, réouverture, modification, ajout de libellé).
  • Commentaire sur un problème : S’active lorsqu’un commentaire est publié sur une issue GitHub. Généralement utilisé avec une condition starts_with "/devin" pour permettre aux utilisateurs de saisir /devin sur n’importe quel problème afin de déclencher Devin.
  • Pull request : S’active lors d’événements de PR (ouverture, synchronisation, etc.).
  • Revue de pull request : S’active lorsqu’une revue est soumise sur une PR.
  • Commentaire de revue de pull request : S’active pour chaque commentaire de revue.
  • Check run (CI) : S’active lorsqu’une vérification CI se termine. Filtrez par conclusion = failure pour corriger automatiquement les builds en échec.
  • Push : S’active lors des pushs vers une branche.
Par défaut, les automatisations GitHub ne s’activent que sur les dépôts privés. Un administrateur peut autoriser une connexion GitHub individuelle à accéder aux dépôts publics : dans Settings → Connections → GitHub, ouvrez le menu de la connexion et définissez le Périmètre d’automatisation sur Tous les dépôts installés. Toute personne sur Internet peut commenter ou ouvrir une PR sur un dépôt public. Les déclencheurs sur des dépôts publics présentent donc un risque plus élevé d’injection de prompt — activez cette option délibérément et limitez les conditions de vos déclencheurs.

Déclencheurs GitLab

Les déclencheurs GitLab s’activent sur les événements de projet de votre instance GitLab connectée :
  • Merge request : s’active lors des actions sur une MR (ouverture, fermeture, merge, réouverture, approbation, mise à jour).
  • Commentaire de MR : s’active lorsqu’un commentaire (note) est publié sur une merge request, y compris dans les threads de review de diff.
  • Problème : s’active lors des actions sur un problème (ouverture, fermeture, réouverture, mise à jour).
  • commentaire sur un problème : s’active lorsqu’un commentaire est publié sur un problème.
  • Push : s’active lors des pushs vers une branche.
  • Pipeline : s’active lorsqu’un pipeline atteint un statut donné — filtrez par statut (par exemple failed) pour corriger automatiquement les pipelines en échec.

Déclencheurs Linear

Les déclencheurs Linear se déclenchent lors d’événements liés aux problèmes dans votre espace de travail Linear connecté. Vous devez sélectionner une équipe pour chaque déclencheur.
  • Problème créé : Se déclenche lorsqu’un nouveau problème est créé dans l’équipe sélectionnée.
  • Libellé ajouté : Se déclenche lorsqu’un libellé est appliqué à un problème (p. ex. bug, devin).
  • Statut modifié : Se déclenche lorsque le statut d’un problème change (p. ex. déplacement vers “In Progress”).
  • Priorité modifiée : Se déclenche lorsque la priorité d’un problème change.
  • Assigné : Se déclenche lorsqu’un problème est attribué à quelqu’un.
  • Problème déplacé : Se déclenche lorsqu’un problème est déplacé vers une autre équipe — le filtre d’équipe du déclencheur correspond à l’équipe de destination.

Déclencheurs Jira

Les déclencheurs Jira s’activent lors d’événements liés aux problèmes sur votre site Jira connecté. Vous pouvez filtrer par projet, libellés, statut, personne assignée et epic :
  • problème créé : se déclenche lorsqu’un nouveau problème est créé.
  • Issue updated : se déclenche lorsque les champs d’un problème sont modifiés.
  • libellé ajouté : se déclenche lorsqu’un libellé est appliqué à un problème.
  • statut modifié : se déclenche lorsque le statut d’un problème change.
  • assigné : se déclenche lorsqu’un problème est assigné à quelqu’un.
  • Comment created or edited : se déclenche lorsqu’un commentaire est ajouté ou modifié sur un problème.

Déclencheurs de planification

Les déclencheurs de planification s’exécutent selon une planification temporelle, soit de façon récurrente, soit sous la forme d’une exécution ponctuelle. Dans le menu déroulant des déclencheurs, développez Planification et choisissez Toutes les heures, Tous les jours, Toutes les semaines, Exécuter une fois ou Planification personnalisée.
  • Récurrent : définissez la fréquence (horaire, quotidienne, hebdomadaire) et l’heure. En arrière-plan, les planifications utilisent le format RRULE d’iCalendar. Choisissez Planification personnalisée pour créer une récurrence personnalisée (répéter toutes les N minutes/heures/jours/semaines/mois) ou saisissez directement une chaîne RRULE brute (par ex. FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0) pour des cadences plus complexes.
  • Exécuter une fois : se déclenche une seule fois à une date et une heure futures précises, puis se désactive automatiquement. Utile pour une tâche ponctuelle différée — par ex. « réveiller Devin dans 12 heures pour exécuter une tâche. » Sélectionnez la date et l’heure (par défaut, dans une heure) ; elles doivent se situer dans le futur.
Chaque planification possède son propre fuseau horaire, qui correspond par défaut à celui de votre navigateur et peut être modifié dans l’éditeur de planification. La planification s’exécute à cette heure locale, y compris lors des passages à l’heure d’été ou d’hiver.

Déclencheurs webhook

Les déclencheurs webhook vous permettent de connecter n’importe quel système externe à Devin via un endpoint HTTPS unique.
  1. Créez une automatisation avec un déclencheur Webhook
  2. Copiez l’URL du webhook et le secret affichés dans la configuration du déclencheur
  3. Configurez votre système externe (PagerDuty, Datadog, Sentry ou tout outil personnalisé) pour envoyer des requêtes HTTP POST à cette URL
  4. Ajoutez éventuellement un filtre de charge utile — un motif regex auquel le corps de la requête doit correspondre pour que l’automatisation se déclenche
Transmettez le secret du webhook de l’une des manières suivantes :
  • en-tête X-Webhook-Secret: <secret>
  • en-tête Authorization: Bearer <secret>
  • paramètre de requête ?secret=<secret>
Privilégiez un en-tête — les chaînes de requête sont souvent capturées dans les logs d’accès des proxys, CDN et serveurs. La charge utile du webhook est inclus dans le prompt de la session Devin en tant que contexte. Les charges utiles de plus de 200 KB sont automatiquement tronqués.

Secret du webhook

Chaque déclencheur de webhook possède un secret permettant d’authentifier les requêtes entrantes : les appels qui ne fournissent pas le bon secret sont rejetés. Le secret est généré automatiquement et affiché lorsque vous ajoutez le déclencheur de webhook dans l’éditeur d’automatisation.
Copiez le secret lorsqu’il s’affiche : il ne sera plus affiché par la suite. Un secret perdu ne peut pas être récupéré ; régénérez-en un.
Chaque requête doit inclure le secret dans l’en-tête HTTP X-Webhook-Secret. Par exemple, pour le tester avec curl :
Si vous perdez le secret ou devez le faire pivoter, ouvrez le déclencheur de webhook dans l’éditeur d’automatisation et régénérez-le. L’ancien secret cesse immédiatement de fonctionner. Mettez donc à jour votre système externe avec la nouvelle valeur.

Vérifications préalables

Une vérification préalable est une étape facultative qui s’exécute entre le déclencheur correspondant et les actions de l’automatisation. Une automatisation peut utiliser l’un des deux types suivants : Pour en ajouter une, cliquez sur Add a step before the agent runs sous la section du déclencheur, puis choisissez LLM filter ou Run a script.
Les scripts de vérification préalable sont en cours de déploiement. Si l’option Run a script n’est pas proposée, c’est que les scripts ne sont pas encore activés pour votre organisation.
Le bouton Run now de l’automatisation contourne la vérification préalable et exécute directement les actions configurées.

LLM filter

Sélectionnez LLM filter et décrivez les événements à inclure ou à exclure. Par exemple : « PR concernant le service d’authentification » ou « messages Slack à propos du dîner ». Un modèle de décision léger analyse l’événement dans son intégralité. Seuls les événements correspondants déclenchent l’exécution de l’agent.

Configurer et tester un script de vérification préalable

Le script s’exécute dans une machine virtuelle (VM) distincte et de courte durée, et non dans la session Devin qu’il peut démarrer. Il peut lire l’événement, conserver un état minimal d’une exécution à l’autre et déterminer quelles tâches sont transmises aux actions configurées.
  1. Créez une automatisation ou modifiez-en une existante, puis configurez ses déclencheurs et ses conditions.
  2. Cliquez sur Add a step before the agent runs sous la section du déclencheur, puis sélectionnez Run a script dans la carte Before the agent runs.
  3. Cliquez sur Edit script, choisissez Python, Node (JavaScript) ou Bash dans le sélecteur d’environnement d’exécution, puis modifiez le script de départ.
  4. Si nécessaire, utilisez Select secrets dans l’éditeur de script pour associer des secrets de l’organisation. Seuls les secrets sélectionnés sont injectés en tant que variables d’environnement. Pour enregistrer ou tester un script auquel des secrets sont associés, vous devez disposer de l’autorisation de gérer les secrets de l’organisation.
  5. Définissez Timeout (seconds) dans la carte : la valeur par défaut est de 60 secondes et la plage autorisée va de 1 à 300 secondes. Par défaut, le script utilise l’environnement Minimal environment ; si les snapshots de machine sont disponibles, le sélecteur Environment vous permet également de choisir un snapshot de l’organisation contenant vos dépendances.
  6. Dans l’éditeur de script, choisissez un événement sous Test against et cliquez sur Run. Vous pouvez tester le script non enregistré sur un exemple d’événement d’un déclencheur configuré, ou sur un événement récent d’une automatisation existante. Examinez le résultat, les log et, pour les éléments émis, l’aperçu indiquant combien seraient exécutés, considérés comme des doublons ou différés.
  7. Cliquez sur Save script pour appliquer les modifications de l’éditeur, puis sur Créer une automatisation ou enregistrez l’automatisation pour conserver la configuration.
Les exécutions de test lancent votre script, mais n’exécutent pas les actions de l’automatisation, ne modifient pas son état enregistré et ne marquent pas les éléments émis comme traités. En revanche, les requêtes externes et les effets de bord produits par votre script sont bien réels. Par exemple, tester un script qui écrit dans un service externe effectuera réellement cette écriture.

Entrée et production du script

Le script reçoit les variables d’environnement suivantes. Chacune contient un chemin de fichier, et non les données JSON elles-mêmes : Écrivez exactement l’une des clés run ou items dans OUTPUT_FILE, éventuellement accompagnée d’une chaîne reason : Par exemple, ce script Python ne laisse passer un message Slack que si son texte contient urgent :
Sélectionnez un exemple de message Slack ou un message Slack récent dans Test against pour examiner le résultat. Il ne suffit pas d’afficher une décision sur la production standard : le script doit écrire un JSON valide dans OUTPUT_FILE et se terminer avec le code de sortie 0.

Éléments du script, état et limites

  • Prévention des doublons : l’id d’un élément identifie une unité de travail au sein de cette automatisation, et pas seulement une entité. {"id": "INC-1"} n’est traité qu’une seule fois ; ajoutez une version, par exemple l’horodatage de la dernière mise à jour en amont, pour traiter une nouvelle occurrence de cet incident. Sans id, Preflight identifie l’élément par un hash de son contenu : modifier ce contenu peut donc déclencher une nouvelle exécution.
  • Plafond d’éléments par exécution : par défaut, 10 nouveaux éléments au plus sont distribués par exécution ; le plafond maximal du système est de 50. Les éléments au-delà de ce plafond ne sont pas traités et ne sont pas replanifiés automatiquement. La prochaine exécution de votre script doit donc les émettre à nouveau. N’avancez pas un curseur au-delà du travail différé au seul motif qu’il figurait dans votre production.
  • Résultats précédents : utilisez LAST_RUN_FILE pour distinguer le travail en cours, réussi, échoué ou ignoré. Un élément dont l’exécution échoue est libéré, de sorte qu’une exécution ultérieure du script puisse l’émettre à nouveau.
  • État persistant : pour une même automatisation, les exécutions réelles du script s’effectuent l’une après l’autre. Un script en échec ne fait pas avancer l’état enregistré et ne marque pas les éléments comme traités. Clear state efface à la fois l’état JSON enregistré et l’historique des éléments déjà traités ; après cette réinitialisation, les éléments précédemment traités peuvent de nouveau être exécutés.
  • Limites de taille : la source et la production du script sont chacune limitées à 256 Kio, l’état enregistré à 64 Kio et les log capturés à 1 Mio.
  • Échecs : un code de sortie non nul, un délai d’expiration dépassé, une production ou un état invalide, ou une défaillance d’infrastructure interrompt cet événement avant l’exécution de ses actions. Le script n’est pas relancé automatiquement pour cet événement ; un déclencheur ultérieur pourra l’exécuter à nouveau.
  • Accès réseau : la VM du script applique les restrictions réseau de l’automatisation et le profil de sécurité en vigueur. Par exemple, pour interroger périodiquement un service d’alertes externe, son hôte doit être autorisé. Associer un secret n’accorde pas d’accès réseau.

Configurer les actions

Démarrer une session

L’action la plus courante. Lorsque le déclencheur se déclenche, Devin démarre une nouvelle session avec votre prompt. La charge utile de l’événement (par ex. le texte du message Slack, le corps du webhook GitHub ou les détails du ticket Linear) est automatiquement ajoutée au prompt afin que Devin dispose de tout le contexte nécessaire. Options :
  • Prompt : Les instructions que Devin suit. Rédigez-le comme vous rédigeriez un prompt Devin classique.
  • Playbook (facultatif) : Utilisez @playbook-name dans votre prompt pour inclure un playbook avec des instructions supplémentaires.
  • Tags (facultatif) : Ajoutez des tags aux sessions créées par cette automatisation pour en faciliter le filtrage.

Envoyer un message à une session

Envoie un message à une session Devin existante de longue durée. Utile si vous souhaitez qu’une seule session persistante traite des événements au fil du temps, plutôt que de créer une nouvelle session pour chaque événement. Vous devez sélectionner la session cible lors de la configuration de cette action.

Triage Devin (moniteur)

Crée une session Devin persistante qui surveille un canal Slack. Consultez le guide d’auto-triage pour plus de détails sur ce type d’action.

Notification par e-mail

Envoie une notification par e-mail lorsque l’automatisation s’exécute. Choisissez quand envoyer la notification :
  • Toujours — à chaque exécution
  • En cas d’échec — uniquement lorsque la session échoue ou rencontre une erreur
  • En cas de réussite — uniquement lorsque la session se termine avec succès

Limites et garde-fous

Les automatisations comprennent des contrôles intégrés pour éviter toute utilisation incontrôlée :

Limite d’ACU

Définissez un budget maximal d’ACU (Agent Compute Unit) pour chaque session lancée par cette automatisation. Si Devin atteint cette limite, la session s’arrête. Cela évite qu’une seule invocation ne consomme trop de ressources.

Limite des invocations

Fixez un plafond au nombre de fois où l’automatisation peut se déclencher sur une période donnée. Par exemple, « au maximum 10 invocations par heure » évite qu’un canal Slack trop actif ou qu’une série d’échecs de CI ne génère des dizaines de sessions. Les deux champs sont facultatifs — s’ils sont effacés, l’automatisation s’exécute sans cette limite. Les nouvelles automatisations démarrent sans limite d’ACU et avec une Rate limit de 50 exécutions par heure (150 par heure pour les automatisations de triage surveillant un canal Slack) ; les modèles appliquent les mêmes valeurs par défaut.

Mise en file d’attente

Par défaut, chaque événement correspondant déclenche immédiatement une exécution. Activez Enable queueing dans l’éditeur d’automatisation pour limiter le nombre d’exécutions simultanées :
  • Concurrent runs : nombre maximal d’exécutions simultanées de cette automatisation. Les événements excédentaires sont placés en file d’attente. Une exécution n’est plus comptabilisée dans la limite dès que sa session est terminée et en attente de nouvelles instructions.
  • Queue depth : nombre maximal d’événements pouvant être placés en file d’attente. Les événements qui arrivent lorsque la file est pleine sont abandonnés.
Les exécutions en file d’attente s’affichent avec le statut Queued dans l’activité de l’automatisation.

Politique réseau

Vous pouvez activer une politique réseau pour restreindre les hôtes externes que les sessions de l’automatisation sont autorisées à contacter. C’est particulièrement important pour les automatisations qui traitent des données saisies par des utilisateurs non fiables (p. ex. des messages Slack ou des charges utiles de webhook). Vous pouvez ajouter des domaines spécifiques à la liste d’autorisation si Devin doit accéder à des services externes. La politique réseau d’une automatisation ne fait que restreindre l’accès : elle est combinée par intersection avec le profil de sécurité qui régit les sessions de l’automatisation.

Intégrations MCP

Connecter des intégrations MCP est vivement recommandé : elles améliorent considérablement la qualité des automatisations en donnant à Devin accès à des données d’exécution comme les logs, les métriques et les détails des erreurs.
Les automatisations s’appuient sur les intégrations MCP pour donner à Devin accès à des outils externes. Lors de la création d’une automatisation, la section Connections indique quels serveurs MCP sont recommandés ainsi que leur statut de connexion. Par exemple, le modèle “Fix Sentry Errors Daily” recommande Sentry MCP afin que Devin puisse interroger Sentry sur les erreurs non résolues. Le modèle “Investigate Alerts Triggered” recommande Datadog MCP pour récupérer des métriques et des traces. Activez les serveurs MCP dans l’onglet Settings → Connections → MCPs (ou installez leurs plugins depuis le marketplace de plugins) avant de créer des automatisations qui en ont besoin.

Accès aux outils Slack

Par défaut, les sessions d’automatisation peuvent lire et écrire dans les canaux Slack concernés par le déclencheur. Vous pouvez accorder l’accès à d’autres canaux Slack dans la section Outils Slack de l’éditeur d’automatisation. C’est utile lorsque Devin doit lire plusieurs canaux au-delà de celui qui a déclenché l’automatisation.

Activité et suivi

Chaque automatisation conserve l’historique de ses invocations. Sur la page de détail de l’automatisation, l’onglet Activité affiche :
  • Les invocations récentes avec leurs horodatages
  • Si chaque invocation a réussi ou a été ignorée
  • Les liens vers les sessions Devin créées
  • Les messages d’erreur des invocations ayant échoué
La page de liste des automatisations affiche un sparkline pour chaque automatisation, offrant une vue d’ensemble visuelle de l’activité au cours des 30 derniers jours.

Activation et désactivation

Activez ou désactivez une automatisation à tout moment depuis la liste des automatisations ou la page de détail. Les automatisations désactivées cessent de traiter les événements, mais conservent leur configuration. La réactivation d’une automatisation reprend immédiatement le traitement des événements.

Modèles

Devin inclut une bibliothèque de modèles d’automatisation prêts à l’emploi pour les workflows courants : Pour parcourir tous les modèles, ouvrez la page automatisation dans l’application Devin et cliquez sur Créer une automatisation > Modèle (ou rendez-vous directement sur /automations/templates).