Passer au contenu principal

Aperçu

Le mode sans interface vous permet d’exécuter Claude Code par programmation à partir de scripts de ligne de commande et d’outils d’automatisation sans aucune interface utilisateur interactive.

Utilisation de base

L’interface de ligne de commande principale de Claude Code est la commande claude. Utilisez l’indicateur --print (ou -p) pour exécuter en mode non interactif et imprimer le résultat final :
claude -p "Stage my changes and write a set of commits for them" \
  --allowedTools "Bash,Read" \
  --permission-mode acceptEdits

Options de configuration

Le mode sans interface exploite toutes les options CLI disponibles dans Claude Code. Voici les principales pour l’automatisation et les scripts :
IndicateurDescriptionExemple
--print, -pExécuter en mode non interactifclaude -p "query"
--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 "Custom instruction"
--allowedToolsListe d’outils autorisés séparés par des espaces, ou

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

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

chaîne de liste d’outils refusés séparés par des virgules
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 :
# Continue the most recent conversation
claude --continue "Now refactor this for better performance"

# Resume a specific conversation by session ID
claude --resume 550e8400-e29b-41d4-a716-446655440000 "Update the tests"

# Resume in non-interactive mode
claude --resume 550e8400-e29b-41d4-a716-446655440000 "Fix all linting issues" --no-interactive

Formats de sortie

Sortie texte (par défaut)

claude -p "Explain file src/components/Header.tsx"
# Output: This is a React component showing...

Sortie JSON

Retourne des données structurées incluant les métadonnées :
claude -p "How does the data layer work?" --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": "The response text here...",
  "session_id": "abc123"
}

Sortie JSON en continu

Diffuse chaque message au fur et à mesure de sa réception :
claude -p "Build an application" --output-format stream-json
Chaque conversation commence par un message système init initial, suivi d’une liste de messages utilisateur et assistant, suivi d’un message système result final avec des statistiques. Chaque message est émis en tant qu’objet JSON distinct.

Formats d’entrée

Entrée texte (par défaut)

# Direct argument
claude -p "Explain this code"

# From stdin
echo "Explain this code" | claude -p

Entrée JSON en continu

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 ‘User message’, 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 continu nécessite -p et --output-format stream-json.
echo '{"type":"user","message":{"role":"user","content":[{"type":"text","text":"Explain this code"}]}}' | claude -p --output-format=stream-json --input-format=stream-json --verbose

Exemples d’intégration d’agent

Bot de réponse aux incidents SRE

#!/bin/bash

# Automated incident response agent
investigate_incident() {
    local incident_description="$1"
    local severity="${2:-medium}"

    claude -p "Incident: $incident_description (Severity: $severity)" \
      --append-system-prompt "You are an SRE expert. Diagnose the issue, assess impact, and provide immediate action items." \
      --output-format json \
      --allowedTools "Bash,Read,WebSearch,mcp__datadog" \
      --mcp-config monitoring-tools.json
}

# Usage
investigate_incident "Payment API returning 500 errors" "high"

Examen de sécurité automatisé

# Security audit agent for pull requests
audit_pr() {
    local pr_number="$1"

    gh pr diff "$pr_number" | claude -p \
      --append-system-prompt "You are a security engineer. Review this PR for vulnerabilities, insecure patterns, and compliance issues." \
      --output-format json \
      --allowedTools "Read,Grep,WebSearch"
}

# Usage and save to file
audit_pr 123 > security-report.json

Assistant juridique multi-tours

# Legal document review with session persistence
session_id=$(claude -p "Start legal review session" --output-format json | jq -r '.session_id')

# Review contract in multiple steps
claude -p --resume "$session_id" "Review contract.pdf for liability clauses"
claude -p --resume "$session_id" "Check compliance with GDPR requirements"
claude -p --resume "$session_id" "Generate executive summary of risks"

Bonnes pratiques

  • Utiliser le format de sortie JSON pour l’analyse programmatique des réponses :
    # Parse JSON response with jq
    result=$(claude -p "Generate code" --output-format json)
    code=$(echo "$result" | jq -r '.result')
    cost=$(echo "$result" | jq -r '.cost_usd')
    
  • Gérer les erreurs avec élégance - vérifier les codes de sortie et stderr :
    if ! claude -p "$prompt" 2>error.log; then
        echo "Error occurred:" >&2
        cat error.log >&2
        exit 1
    fi
    
  • Utiliser la gestion des sessions pour maintenir le contexte dans les conversations multi-tours
  • Considérer les délais d’expiration pour les opérations longues :
    timeout 300 claude -p "$complex_prompt" || echo "Timed out after 5 minutes"
    
  • Respecter les limites de débit lors de plusieurs demandes en ajoutant des délais entre les appels

Ressources connexes