Aperçu

Le mode sans interface vous permet d’exécuter Claude Code de manière programmatique à partir de scripts en ligne de commande et d’outils d’automatisation sans aucune interface utilisateur interactive.

Utilisation de base

L’interface en ligne de commande principale de Claude Code est la commande claude. Utilisez le drapeau --print (ou -p) pour exécuter en mode non-interactif et imprimer le résultat final :

claude -p "Préparer mes modifications et écrire un ensemble de commits pour elles" \
  --allowedTools "Bash,Read" \
  --permission-mode acceptEdits \
  --cwd /path/to/project

Options de configuration

Le SDK exploite toutes les options CLI disponibles dans Claude Code. Voici les principales pour l’utilisation du SDK :

DrapeauDescriptionExemple
--print, -pExécuter en mode non-interactifclaude -p "requête"
--output-formatSpécifier le format de sortie (text, json, stream-json)claude -p --output-format json
--resume, -rReprendre une conversation par ID de sessionclaude --resume abc123
--continue, -cContinuer la conversation la plus récenteclaude --continue
--verboseActiver la journalisation détailléeclaude --verbose
--append-system-promptAjouter à l’invite système (uniquement avec --print)claude --append-system-prompt "Instruction personnalisée"
--allowedToolsListe séparée par des espaces d’outils autorisés, ou

chaîne de liste séparée par des virgules d’outils autorisés
claude --allowedTools mcp__slack mcp__filesystem

claude --allowedTools "Bash(npm install),mcp__filesystem"
--disallowedToolsListe séparée par des espaces d’outils refusés, ou

chaîne de liste séparée par des virgules d’outils refusés
claude --disallowedTools mcp__splunk mcp__github

claude --disallowedTools "Bash(git commit),mcp__github"
--mcp-configCharger les serveurs MCP à partir d’un fichier JSONclaude --mcp-config servers.json
--permission-prompt-toolOutil MCP pour gérer les invites de permission (uniquement avec --print)claude --permission-prompt-tool mcp__auth__prompt

Pour une liste complète des options CLI et des fonctionnalités, consultez la documentation de référence CLI.

Conversations multi-tours

Pour les conversations multi-tours, vous pouvez reprendre des conversations ou continuer à partir de la session la plus récente :

# Continuer la conversation la plus récente
claude --continue "Maintenant refactoriser ceci pour de meilleures performances"

# Reprendre une conversation spécifique par ID de session
claude --resume 550e8400-e29b-41d4-a716-446655440000 "Mettre à jour les tests"

# Reprendre en mode non-interactif
claude --resume 550e8400-e29b-41d4-a716-446655440000 "Corriger tous les problèmes de linting" --no-interactive

Formats de sortie

Sortie texte (par défaut)

claude -p "Expliquer le fichier src/components/Header.tsx"
# Sortie : Ceci est un composant React montrant...

Sortie JSON

Retourne des données structurées incluant les métadonnées :

claude -p "Comment fonctionne la couche de données ?" --output-format json

Format de réponse :

{
  "type": "result",
  "subtype": "success",
  "total_cost_usd": 0.003,
  "is_error": false,
  "duration_ms": 1234,
  "duration_api_ms": 800,
  "num_turns": 6,
  "result": "Le texte de réponse ici...",
  "session_id": "abc123"
}

Sortie JSON en streaming

Diffuse chaque message au fur et à mesure qu’il est reçu :

claude -p "Construire une application" --output-format stream-json

Chaque conversation commence par un message système initial init, suivi d’une liste de messages utilisateur et assistant, suivi d’un message système final result avec les statistiques. Chaque message est émis comme un objet JSON séparé.

Formats d’entrée

Entrée texte (par défaut)

# Argument direct
claude -p "Expliquer ce code"

# Depuis stdin
echo "Expliquer ce code" | claude -p

Entrée JSON en streaming

Un flux de messages fourni via stdin où chaque message représente un tour utilisateur. Cela permet plusieurs tours d’une conversation sans relancer le binaire claude et permet de fournir des conseils au modèle pendant qu’il traite une demande.

Chaque message est un objet JSON ‘Message utilisateur’, suivant le même format que le schéma de message de sortie. Les messages sont formatés en utilisant le format jsonl où chaque ligne d’entrée est un objet JSON complet. L’entrée JSON en streaming nécessite -p et --output-format stream-json.

echo '{"type":"user","message":{"role":"user","content":[{"type":"text","text":"Expliquer ce code"}]}}' | claude -p --output-format=stream-json --input-format=stream-json --verbose

Exemples d’intégration d’agents

Bot de réponse aux incidents SRE

#!/bin/bash

# Agent de réponse automatisée aux incidents
investigate_incident() {
    local incident_description="$1"
    local severity="${2:-medium}"

    claude -p "Incident : $incident_description (Gravité : $severity)" \
      --append-system-prompt "Vous êtes un expert SRE. Diagnostiquez le problème, évaluez l'impact et fournissez des éléments d'action immédiats." \
      --output-format json \
      --allowedTools "Bash,Read,WebSearch,mcp__datadog" \
      --mcp-config monitoring-tools.json
}

# Utilisation
investigate_incident "API de paiement retournant des erreurs 500" "high"

Révision de sécurité automatisée

# Agent d'audit de sécurité pour les pull requests
audit_pr() {
    local pr_number="$1"

    gh pr diff "$pr_number" | claude -p \
      --append-system-prompt "Vous êtes un ingénieur en sécurité. Révisez cette PR pour les vulnérabilités, les modèles non sécurisés et les problèmes de conformité." \
      --output-format json \
      --allowedTools "Read,Grep,WebSearch"
}

# Utilisation et sauvegarde dans un fichier
audit_pr 123 > security-report.json

Assistant juridique multi-tours

# Révision de documents juridiques avec persistance de session
session_id=$(claude -p "Démarrer une session de révision juridique" --output-format json | jq -r '.session_id')

# Réviser le contrat en plusieurs étapes
claude -p --resume "$session_id" "Réviser contract.pdf pour les clauses de responsabilité"
claude -p --resume "$session_id" "Vérifier la conformité aux exigences RGPD"
claude -p --resume "$session_id" "Générer un résumé exécutif des risques"

Meilleures pratiques

  • Utilisez le format de sortie JSON pour l’analyse programmatique des réponses :

    # Analyser la réponse JSON avec jq
    result=$(claude -p "Générer du code" --output-format json)
    code=$(echo "$result" | jq -r '.result')
    cost=$(echo "$result" | jq -r '.cost_usd')
    
  • Gérez les erreurs avec élégance - vérifiez les codes de sortie et stderr :

    if ! claude -p "$prompt" 2>error.log; then
        echo "Une erreur s'est produite :" >&2
        cat error.log >&2
        exit 1
    fi
    
  • Utilisez la gestion de session pour maintenir le contexte dans les conversations multi-tours

  • Considérez les timeouts pour les opérations de longue durée :

    timeout 300 claude -p "$complex_prompt" || echo "Timeout après 5 minutes"
    
  • Respectez les limites de taux lors de multiples demandes en ajoutant des délais entre les appels

Ressources connexes