Intégrations Slack, Linear et SDK : appeler Codex de n'importe où
📚 Navigation dans la série : Le chapitre précédent [28 · Exécution non interactive (codex exec)] détaillait la commande en console
codex execpour exécuter des scripts de manière non interactive. Ce chapitre présente l'intégration de Codex avec vos outils collaboratifs et vos applications de gestion de tickets : comment configurer les connecteurs pour Slack et Linear afin de solliciter Codex directement depuis vos canaux d'échange ou l'assignation de tickets, et comment exploiter les SDK (TypeScript, Python) pour l'intégrer au sein de vos propres programmes. Le chapitre suivant [30 · Sélection du modèle d'IA] détaillera les critères de sélection des modèles d'IA pour chaque type de tâche.
ℹ️ Note de lecture : Ce chapitre présente des fonctionnalités avancées d'intégration système. Si vous utilisez principalement Codex au sein de votre terminal, de l'application de bureau ou des extensions d'éditeurs, ce chapitre est optionnel. Vous pourrez y revenir lorsque vous souhaiterez mettre en œuvre des interactions collaboratives d'équipe.
Abordons un cas d'usage collaboratif classique :
Un collaborateur publie une capture d'écran d'une erreur système dans un canal Slack en demandant : « L'API d'authentification renvoie une erreur 500, quelqu'un peut regarder ? » Sans ouvrir mon ordinateur, je réponds directement au message :
@Codex analyse l'erreur 500 ci-dessus et recherche la cause dans le dépôt openai/our-backend. Quelques secondes après, Codex ajoute la réaction 👀 au message et confirme le lancement de la tâche. À mon retour de réunion, Codex a publié son diagnostic technique ainsi qu'une proposition de diff au sein de la discussion. Un clic suffit pour créer la Pull Request.
Le traitement a été initié sans saisie de commande en terminal, et sans avoir à ouvrir mon poste de travail. C'est le principe de l'intégration aux applications : déléguer les consignes depuis vos canaux de discussion Slack ou vos tickets Linear. Le protocole SDK et le serveur d'applications (App Server) permettent d'aller plus loin en intégrant l'agent au sein de vos propres applications logicielles.
À la fin de ce chapitre, vous aurez en main :
- Les deux niveaux d'intégration : l'interconnexion applicative sans code (Slack/Linear) et l'intégration programmatique (SDK/App Server).
- Le paramétrage du connecteur Slack pour solliciter Codex via
@Codexet la gestion des répertoires associés. - L'affectation de tâches dans Linear (via assignation ou commentaires) et l'automatisation via les règles de Triage.
- Le fonctionnement et l'installation des SDK Codex (TypeScript et Python) avec des exemples de scripts minimaux.
- Le rôle du serveur d'applications (App Server) et les critères pour le différencier de l'usage des SDK.
- Un script de démonstration fonctionnel exploitant le SDK pour analyser un fichier local.
01 Les deux niveaux d'intégration : Interaction Applicative vs Intégration Code
En résumé : l'interconnexion s'organise en deux niveaux : l'interconnexion applicative sans code (connecteurs Slack et Linear, exécutant des tâches dans le cloud) et l'intégration programmatique (SDK et App Server, pour appeler l'agent depuis votre code).
Analogie : L'embauche d'un assistant dans l'entreprise. Vous pouvez lui donner accès aux outils de messagerie internes (Slack, Linear) pour qu'il prenne en charge les tâches de discussion d'équipe (interconnexion applicative) ; ou vous pouvez l'intégrer au sein de l'équipe de production pour automatiser les processus internes de l'entreprise (intégration code via SDK).
Spécificités des intégrations :
| Niveau | Outil / Composant | Action requise | Environnement d'exécution |
|---|---|---|---|
| Applicatif (sans code) | Connecteurs Slack et Linear | Activer le connecteur et appeler @Codex | Serveur cloud de Codex (Codex cloud) |
| Programmatique (code) | SDK Codex (TS / Python) | Développer un script appelant les modules du SDK | Votre serveur, machine ou pipeline de CI |
| Système (bas niveau) | App Server | Implémenter le protocole JSON-RPC | Votre client applicatif ou produit |
Rappel de fonctionnement important : les requêtes soumises via Slack ou Linear s'exécutent en mode cloud (Codex cloud, voir chapitre 10). L'assistant initialise une instance sur les serveurs d'OpenAI, télécharge le dépôt Git depuis GitHub et y applique les modifications. Ce mode requiert un abonnement actif et le paramétrage d'un environnement cloud.
💡 En résumé : Slack et Linear offrent des interfaces d'appel collaboratives sans code reposant sur Codex cloud. Les SDK et l'App Server permettent de développer vos propres intégrations logicielles.
02 Intégration Slack : Solliciter Codex en canal d'échange
L'intégration Slack permet de mentionner @Codex dans une discussion pour démarrer une tâche de développement sur les serveurs de Codex cloud.
Analogie : Interroger un collègue dans un canal de discussion. Plutôt que de vous déplacer à son bureau (ouvrir un terminal et initialiser Codex), vous le mentionnez dans le canal de discussion de l'équipe. Codex analyse la discussion, exécute la tâche et renvoie le rapport final dans le fil de discussion (thread).
Paramétrage de l'intégration
La configuration du connecteur s'effectue en trois étapes :
- Configurer l'environnement cloud : Assurez-vous de disposer d'un abonnement actif (Plus, Pro, Business, Enterprise ou Edu), d'avoir associé votre compte GitHub à Codex, et d'avoir configuré au moins un environnement cloud (voir chapitre 10).
- Installer l'application Slack : Ouvrez la page Settings → Connectors de l'interface Codex et installez l'application Slack pour votre espace de travail.
- Ajouter
@Codexà votre canal : Ajoutez l'assistant aux canaux de discussion concernés.
Usage et traitement
Pour soumettre une tâche :
- Mentionnez
@Codexdans un canal ou un fil de discussion en décrivant la modification attendue. Codex prend en compte l'historique récent du fil pour comprendre le contexte. - Spécifiez si nécessaire le dépôt ou l'environnement cible dans votre consigne, par exemple :
@Codex corrige la régression ci-dessus dans le dépôt openai/our-backend. - Codex ajoute la réaction 👀 à votre message, crée un lien de suivi de tâche et publie le diff final dans la discussion une fois le traitement terminé.
Sélection automatique de l'environnement
Si vous ne précisez pas le dépôt cible dans votre consigne, Codex applique les règles suivantes pour identifier la cible :
- Il recherche parmi vos environnements configurés celui dont la description ou les technologies correspondent le mieux à votre demande. En cas d'ambiguïté, il utilise le dernier environnement actif.
- La tâche s'exécute sur le premier dépôt déclaré dans la table d'association (repo map) de l'environnement ciblé. Pour cibler un autre dépôt, vous devez spécifier son nom dans votre message.
Restriction d'affichage (Politique Enterprise)
Par défaut, Codex publie le texte de son rapport final au sein du fil de discussion Slack. Les administrateurs d'espaces de travail Enterprise peuvent désactiver ce comportement dans les options d'administration (option Allow Codex Slack app to post answers on task completion). Une fois désactivée, Codex publie uniquement le lien d'accès au rapport, empêchant l'affichage de données techniques de code sur la messagerie.
💡 En résumé : Le connecteur Slack permet de lancer des tâches de développement cloud en mentionnant
@Codexdans les canaux autorisés, en s'appuyant sur vos configurations d'environnements existantes.
03 Intégration Linear : Lancer des tâches depuis vos tickets
L'intégration avec le gestionnaire de projets Linear permet d'associer directement des tâches de développement à des tickets (issues) de votre équipe.
Analogie : L'affectation d'un ticket de bug à un développeur. Sur votre tableau Kanban, vous faites glisser le ticket vers la colonne d'un collaborateur (assignation) ou vous ajoutez une note explicative dans le fil de discussion pour lui confier le travail. Le connecteur Linear permet de traiter Codex comme un collaborateur de l'équipe.
Ce connecteur requiert un abonnement cloud actif. L'administrateur de l'organisation doit activer le connecteur Codex for Linear dans l'onglet Connectors.
Méthodes d'affectation
Deux méthodes d'appel sont disponibles :
Méthode A : Assignation de ticket : Assignez le ticket Linear à l'utilisateur Codex. L'agent analyse le titre, la description et les documents liés au ticket pour lancer la tâche de développement. Méthode B : Mention dans les commentaires : Saisissez un commentaire contenant la mention @Codex dans le fil de discussion du ticket. Vous pouvez poursuivre l'échange dans le fil pour affiner les modifications.
Une fois la tâche terminée, Codex publie la synthèse de ses modifications dans l'onglet Activity du ticket ainsi qu'un lien vers la Pull Request générée.
Automatisation via les règles de Triage
Vous pouvez automatiser l'affectation en configurant des règles de routage (Triage rules) dans Linear :
- Ouvrez l'onglet Settings de votre équipe dans Linear.
- Activez l'option Triage si elle n'est pas configurée.
- Créez une règle automatique (Triage rule) associant la condition de votre choix (ex: label "bug-facile") à l'action Delegate → Codex.
Les nouveaux tickets correspondants seront automatiquement assignés à Codex.
IMPORTANT
Lors du déclenchement d'une règle de triage automatique, Codex exécute la tâche de développement sous l'identité de l'utilisateur ayant créé le ticket (créditant la consommation de tokens sur son compte).
Accès local via Linear MCP
Si vous souhaitez que votre instance locale de Codex (CLI ou extension d'éditeur) puisse lire et analyser les tickets Linear directement de votre machine (par exemple, pour lui demander « résous le ticket ENG-123 »), installez le serveur MCP Linear :
codex mcp add linear --url https://mcp.linear.app/mcpOu déclarez-le manuellement dans votre fichier de configuration ~/.codex/config.toml :
[mcp_servers.linear]
url = "https://mcp.linear.app/mcp"Exécutez ensuite la commande codex mcp login linear pour authentifier l'accès.
💡 En résumé : Le connecteur Linear permet d'assigner des tickets à Codex ou de l'appeler via
@Codexen commentaire. Les règles de Triage permettent d'automatiser l'affectation, tandis que le serveur MCP Linear donne accès aux tickets depuis votre console locale.
04 SDK Codex : Piloter l'agent de manière programmatique
Pour intégrer Codex au sein de vos scripts ou applications, utilisez les SDK Codex officiels. Ils offrent un contrôle de session et d'historique plus souple que la simple redirection de flux de codex exec.
La documentation officielle le précise :
La bibliothèque TypeScript permet de piloter Codex au sein de vos applications avec une plus grande granularité que la commande non interactive.
Le SDK permet d'ouvrir une session (thread), d'exécuter des modifications, de récupérer les retours structurés sous forme d'objets, et de modifier les privilèges de bac à sable à chaque étape.
Plateformes supportées : TypeScript et Python
Les bibliothèques officielles se déclinent ainsi :
| Caractéristique | SDK TypeScript | SDK Python |
|---|---|---|
| Commande d'installation | npm install @openai/codex-sdk | pip install openai-codex |
| Version minimale requise | Node.js 18+ (côté serveur uniquement) | Python 3.10+ |
| Mode d'exécution | Exécution côté serveur | Pilote le serveur d'applications local |
| Statut de livraison | Version stable | Version beta (--pre pour les builds récents) |
Syntaxe de base (TypeScript)
Exemple de script pour ouvrir une session, soumettre une consigne et récupérer le rapport :
import { Codex } from "@openai/codex-sdk";
const codex = new Codex();
const thread = codex.startThread();
const result = await thread.run(
"Make a plan to diagnose and fix the CI failures"
);
console.log(result);Pour poursuivre l'échange dans la même session, appelez à nouveau la méthode run() du même objet thread. Pour reprendre une session fermée, instanciez-la avec son identifiant :
// Poursuivre la discussion dans la session active
const result = await thread.run("Implement the plan");
// Restaurer une session d'après son identifiant unique
const threadId = "identifiant-de-session-sauvegarde";
const thread2 = codex.resumeThread(threadId);
const result2 = await thread2.run("Poursuis la tâche précédente");Syntaxe de base (Python)
Le SDK Python utilise des gestionnaires de contexte pour administrer la session :
from openai_codex import Codex, Sandbox
with Codex() as codex:
thread = codex.thread_start(
model="gpt-5.4",
sandbox=Sandbox.workspace_write,
)
result = thread.run("Make a plan to diagnose and fix the CI failures")
print(result.final_response)Pour les architectures asynchrones, importez le module AsyncCodex :
import asyncio
from openai_codex import AsyncCodex
async def main() -> None:
async with AsyncCodex() as codex:
thread = await codex.thread_start(model="gpt-5.4")
result = await thread.run("Implement the plan")
print(result.final_response)
asyncio.run(main())Contrôle dynamique du bac à sable
Vous pouvez modifier le niveau de restriction de la sandbox à chaque étape du traitement. Par exemple, pour autoriser l'écriture sur une étape de correction puis verrouiller l'accès lors de l'audit de diff :
with Codex() as codex:
# Initialisation de la session avec droits d'écriture
thread = codex.thread_start(sandbox=Sandbox.workspace_write)
thread.run("Applique la correction de code demandée.")
# Étape suivante restreinte en lecture seule
review = thread.run("Analyse le diff généré.", sandbox=Sandbox.read_only)Les privilèges de sandbox disponibles sont :
Sandbox.read_only: Lecture seule.Sandbox.workspace_write: Écritures autorisées dans le répertoire projet.Sandbox.full_access: Accès complet au système de fichiers de la machine.
💡 En résumé : Le SDK Codex (disponible pour TypeScript et Python) permet de piloter programmatiquement des sessions de discussion multi-étapes et d'ajuster les droits de sandbox par instruction.
05 Serveur d'applications (App Server) : Intégrations complexes
Le serveur d'applications (App Server) est le composant interne qui gère les interactions de bas niveau avec Codex. Il sert d'interface de communication pour les extensions graphiques complexes (comme l'extension officielle pour VS Code).
L'App Server expose l'ensemble des signaux de Codex (historique de chat, demandes de validation, flux d'événements de modifications en temps réel) via le protocole d'échange JSON-RPC 2.0 sur l'entrée et la sortie standard (stdio).
Démarrez le serveur avec la commande suivante :
codex app-serverLa documentation officielle précise la règle de choix entre le SDK et l'App Server :
Si vous développez des scripts d'automatisation ou des tâches de CI/CD, utilisez le SDK Codex plutôt que de communiquer directement avec l'App Server.
Critères de choix du composant :
| Objectif technique | Solution à retenir |
|---|---|
| Automatiser une tâche au sein d'un script Bash ou Python | SDK Codex (ou commande codex exec) |
| Intégrer un agent autonome au sein d'un outil de build de CI/CD | SDK Codex |
| Développer une extension d'éditeur (IDE) ou un client graphique personnalisé | App Server (JSON-RPC) |
L'implémentation du serveur d'applications est disponible en libre accès au sein du dépôt GitHub de Codex (openai/codex/app-server).
💡 En résumé : L'App Server expose l'API de Codex en JSON-RPC pour le développement de clients graphiques complexes ou d'extensions d'éditeurs. Pour les automatisations de scripts et de CI, privilégiez l'usage du SDK.
06 En pratique : Initialiser un script avec le SDK TypeScript
Voici un exercice pour initialiser un projet minimal avec le SDK TypeScript, installer ses dépendances et exécuter une tâche de synthèse textuelle.
Note technique : Cet exercice nécessite l'installation préalable de Node.js (version 18 ou supérieure) sur votre machine de développement.
Étape 1 : Initialiser le répertoire de test
Créez un dossier de projet et initialisez le package de configuration :
mkdir codex-sdk-demo
cd codex-sdk-demo
npm init -yÉtape 2 : Installer le package du SDK
Installez la bibliothèque du SDK Codex :
npm install @openai/codex-sdkComportement attendu : Le module est téléchargé et enregistré dans le fichier package.json sous la dépendance @openai/codex-sdk.
Étape 3 : Créer le fichier de données
Générez un fichier texte contenant une description brute à faire analyser par l'agent :
printf 'This project is a tiny demo for the Codex SDK.\nIt runs TypeScript code to interact with the agent.\n' > hello.txtÉtape 4 : Écrire le script d'appel
Créez le fichier de script run.mjs (l'extension .mjs permet d'utiliser la syntaxe des modules ES et la directive await au premier niveau) :
import { Codex } from "@openai/codex-sdk";
const codex = new Codex();
const thread = codex.startThread();
const result = await thread.run(
"Read hello.txt in the current directory and summarize it in one sentence."
);
console.log(result);Étape 5 : Exécuter le script et valider la sortie
Lancez l'exécution du script via Node.js :
node run.mjsComportement attendu : Le script se connecte à Codex, lui transmet le contexte du fichier hello.txt et affiche à l'écran la synthèse textuelle rédigée par l'agent. Le processus se ferme une fois la réponse affichée.
Étape 6 : Nettoyage
Supprimez le répertoire après validation :
cd ..
rm -rf codex-sdk-demoCet exercice valide le fonctionnement de l'intégration du SDK TypeScript.
💡 En résumé : L'exercice montre comment importer le SDK, initialiser un thread de discussion et appeler la méthode
run()pour exécuter des requêtes d'analyse de fichiers de façon programmatique.
07 Résumé
Ce chapitre a présenté les différentes méthodes d'intégration externe de Codex avec vos outils d'équipe et vos programmes.
Voici les points clés à retenir :
| Solution | Usage principal | Spécificités techniques |
|---|---|---|
| Connecteur Slack | Solliciter Codex en discussion d'équipe via la mention @Codex. | Exécution en mode cloud (Codex cloud) ; nécessite un environnement valide. |
| Connecteur Linear | Associer des tâches à des tickets Linear. | Supporte les règles d'affectation automatique (Triage) et l'accès Linear MCP. |
| SDK Codex | Piloter Codex au sein de vos scripts et applications. | Disponible pour TypeScript et Python ; permet d'ajuster les droits de sandbox. |
| App Server | Intégrations complexes et extensions graphiques. | Communication via le protocole de messages JSON-RPC 2.0 (stdio). |
Vous êtes désormais en mesure de choisir le canal d'intégration adapté à votre projet, de configurer et d'utiliser Codex au sein de Slack ou de Linear, d'implémenter des règles de routage automatique sur vos tickets, d'importer et d'utiliser le SDK TypeScript ou Python pour développer des applications de développement, et de distinguer l'usage du SDK du serveur d'applications (App Server).
Le chapitre suivant 30 · Sélection du modèle d'IA présente la gestion des modèles : comment choisir le modèle d'IA le plus adapté à votre tâche (en termes de vitesse, de coût ou de capacité de raisonnement), et comment ajuster ses paramètres d'exécution ? Nous verrons comment optimiser l'usage des ressources.