Formats de sortie Cursor CLI et intégration CI
Le billet précédent 10-headless-scripts utilisait -p --force pour modifier des fichiers depuis des scripts. Celui-ci porte sur le format de sortie : pour une même exécution de l’Agent vous pouvez choisir « texte final uniquement », « JSON structuré complet » ou « JSON en stream pendant l’exécution » — en CI vous parsez les résultats, mesurez le temps ou affichez la progression avec ces trois formats.
Trois formats de sortie
| Format | Option | Idéal pour |
|---|---|---|
| text | Par défaut, ou --output-format text |
Lecture humaine, réponse finale seule, écriture dans un fichier |
| json | --output-format json |
Parsing dans des scripts, pass/fail CI, extraction de champs |
| stream-json | --output-format stream-json |
Progression en direct, suivi des appels d’outils, surveillance de runs longs |
text : Réponse finale propre
cursor agent -p "What is the entry point of this repo?"Sans --output-format vous obtenez du texte : la sortie est uniquement la réponse finale, sans tool calls ni étapes intermédiaires — pratique pour coller dans la doc ou comme courte description.
En CI, pour écrire la conclusion de l’Agent dans un fichier :
cursor agent -p "Generate release notes for this version from CHANGELOG" > release_notes.txtjson : Pour scripts et CI
cursor agent -p --output-format json "Analyze src/ dependencies and return JSON: { \"entry\": \"...\", \"deps\": [...] }"La sortie est du JSON structuré, avec éventuellement result, duration_ms ou des champs demandés dans le prompt.
En CI vous pouvez :
- Utiliser
jqpour extraire des champs, vérifier le vide ou chercher des mots-clés - Utiliser le code de sortie et le contenu pour décider du pass/fail du job
Exemple conceptuel :
cursor agent -p --output-format json "Do a short code review; return {\"ok\": true/false, \"summary\": \"...\"}" | jq -r '.result'
# Then use .ok or .summary for next steps or to fail the buildLes champs exacts dépendent de la doc Cursor ; l’idée est « json pour parsing programmatique ».
stream-json : Progression en direct et suivi des outils
cursor agent -p --output-format stream-json --stream-partial-output "Analyze project and write analysis.txt"- Chaque ligne est un événement JSON (ex.
system,assistant,tool_call,result) --stream-partial-outputenvoie le texte de l’assistant en deltas incrémentales, pour afficher « nombre de caractères en direct » ou « % de progression »- Parsez tool_call started/completed pour voir quel fichier l’Agent lit/écrit et combien de temps ça prend
Utile pour : runs longs, afficher « traitement du fichier N » dans les logs CI ou une UI, ou compter les tool calls et la durée.
Conseils d’intégration CI
| Besoin | Suggestion |
|---|---|
| Seulement « est-ce terminé et quelle est la conclusion ? » | text + redirection vers fichier ou variable ; vérifier le code de sortie |
| Pass/fail selon le contenu | json + parsing avec jq |
| Log ou progression en direct | stream-json + parsing ligne à ligne par type/sous-type |
| L’Agent doit modifier des fichiers | Ajoutez --force (voir 10-headless-scripts) |
| Exécution en CI | Définissez CURSOR_API_KEY ; utilisez --model pour figer le modèle si besoin |
Gestion des échecs
- Quand l’exécution de l’Agent échoue, la CLI renvoie en général un code de sortie non nul
- Dans les scripts utilisez
if [ $? -ne 0 ]; then exit 1; fiouset -epour que la CI échoue correctement - Avec json vous pouvez aussi vérifier un champ
errorou votreok: falsepersonnalisé pour plus de sécurité
Résumé
- text : Par défaut, lisible, sortie minimale ; bon pour écrire dans un fichier ou comme description
- json : Structuré pour
jqou scripts ; bon pour les décisions CI et l’extraction - stream-json + --stream-partial-output : Flux d’événements en direct ; bon pour la progression et le suivi des outils
- En CI : définissez
CURSOR_API_KEY, respectez le code de sortie et parsez le JSON pour pass/fail quand nécessaire
Suivant : 12-sessions-cloud — Reprise de session avec --resume et exécution cloud avec -c.