--output-format lorsqu’elle est utilisée avec --print. Ces formats incluent des formats structurés pour un usage programmatique (json, stream-json) et un format texte simplifié pour suivre l’avancement de manière lisible.
Le 
--output-format par défaut est stream-json. Cette option n’est valable que lors de l’impression (--print) ou lorsque le mode impression est déduit (stdout non TTY ou stdin passé en pipe).Format JSON
json émet un seul objet JSON (suivi d’un saut de ligne) lorsque l’exécution se termine avec succès. Aucune delta ni aucun événement d’outil n’est émis ; le texte est agrégé dans le résultat final.
En cas d’échec, le processus se termine avec un code non nul et écrit un message d’erreur sur stderr. Aucun objet JSON valide n’est émis en cas d’échec.
Réponse en cas de succès
| Champ | Description | 
|---|---|
| type | Toujours "result"pour les résultats du terminal | 
| subtype | Toujours "success"pour les exécutions réussies | 
| is_error | Toujours falsepour les réponses réussies | 
| duration_ms | Durée totale d’exécution en millisecondes | 
| duration_api_ms | Durée de la requête API en millisecondes (actuellement égale à duration_ms) | 
| result | Texte complet de la réponse de l’assistant (concaténation de tous les deltas de texte) | 
| session_id | Identifiant de session unique | 
| request_id | Identifiant de requête facultatif (peut être omis) | 
Format JSON de flux
stream-json émet du JSON délimité par des retours à la ligne (NDJSON). Chaque ligne contient un unique objet JSON représentant un événement en temps réel pendant l’exécution.
Le flux se termine par un événement final result en cas de réussite. En cas d’échec, le processus se termine avec un code différent de zéro et le flux peut s’arrêter plus tôt sans événement final ; un message d’erreur est écrit sur stderr.
Types d’événements
Initialisation du système
Des champs comme 
tools et mcp_servers pourraient être ajoutés à cet événement à l’avenir.Message utilisateur
Delta de texte de l’assistant
Concatène toutes les valeurs 
message.content[].text, dans l’ordre, pour reconstruire la réponse complète de l’assistant.Événements d’appel d’outil
Types d’appels d’outils
- Démarrage : tool_call.readToolCall.argscontient{ "path": "file.txt" }
- Achèvement : tool_call.readToolCall.result.successcontient les métadonnées et le contenu du fichier
- Démarrage : tool_call.writeToolCall.argscontient{ "path": "file.txt", "fileText": "content...", "toolCallId": "id" }
- Achèvement : tool_call.writeToolCall.result.successcontient{ "path": "/absolute/path", "linesCreated": 19, "fileSize": 942 }
- Peut utiliser la structure tool_call.functionavec{ "name": "tool_name", "arguments": "..." }
Résultat du terminal
Exemple de séquence
Format texte
text fournit un flux simplifié et lisible des actions de l’agent. Au lieu d’événements JSON détaillés, il produit des descriptions concises de ce que fait l’agent en temps réel.
Ce format est utile pour suivre la progression de l’agent sans le coût d’analyse de données structurées, ce qui le rend idéal pour la journalisation, le débogage ou un simple suivi de l’avancement.
Exemple de sortie
Notes d’implémentation
- Chaque événement est émis sur une seule ligne terminée par \n
- Les événements thinkingsont masqués en mode impression et n’apparaissent dans aucun des formats de sortie
- Des champs peuvent être ajoutés au fil du temps de manière rétrocompatible (les consommateurs doivent ignorer les champs inconnus)
- Le format stream fournit des mises à jour en temps réel, tandis que le format JSON attend la fin avant d’afficher les résultats
- Concatène tous les deltas du message assistantpour reconstituer la réponse complète
- Les IDs d’appels d’outils peuvent être utilisés pour faire correspondre les événements de début et de fin
- Les IDs de session restent identiques tout au long d’une exécution unique de l’agent