Aller au contenu principal
Intermédiaire15 min

CLI de Claude Code — Reference pratique

Ce que tu vas apprendre

  • Lancer Claude Code en mode interactif et en mode non-interactif (print)
  • Choisir le bon modele et le bon niveau d’effort pour chaque tache
  • Gerer les sessions : continuer, reprendre, dupliquer, nommer
  • Controler les permissions via les flags CLI
  • Obtenir une sortie JSON pour l’integration dans des scripts
  • Utiliser les commandes de maintenance et de diagnostic

Prerequis

  • Claude Code installe (npm install -g @anthropic-ai/claude-code)
  • Une cle API Anthropic configuree (ANTHROPIC_API_KEY)
  • Avoir lu le module Fonctionnalites avancees pour le contexte permissions et sessions

Le concept en 30 secondes

La CLI de Claude Code a deux modes de base : interactif (REPL, conversation multi-tours) et print (une requete, une reponse, exit). Tout le reste — modeles, permissions, sessions, formats de sortie — se controle par des flags et des sous-commandes. Pas besoin de memoriser 50 flags. Tu dois connaitre les 10 essentiels et savoir ou chercher les autres.


Etapes

1. Les commandes de base

Lancer une session interactive :

claude

Lancer avec un prompt initial :

claude "explique ce projet"

Mode print (non-interactif) :

claude -p "liste les fonctions de main.py"

Continuer la conversation la plus recente :

claude -c

Reprendre une session par nom :

claude -r "auth-refactor" "continue l'implementation"

Dupliquer une session pour experimenter :

claude -r "auth-refactor" --fork-session "essai OAuth a la place"

Traiter un fichier via pipe :

cat error.log | claude -p "analyse ces erreurs"

Note : En mode print, Claude repond puis quitte. C’est le mode a utiliser pour les scripts, la CI/CD, et le chainage avec d’autres outils (grep, jq, etc.).


2. Choisir le modele et l’effort

Modeles disponibles (noms courts) :

Alias Modele reel Usage
opus claude-opus-4-8 Taches complexes, architecture, debugging
sonnet claude-sonnet-4-6 Equilibre vitesse/capacite, usage quotidien
haiku claude-haiku-4-5 Taches rapides, formatage, requetes simples
opusplan Opus planifie, Sonnet execute Refactoring de grande envergure

Commandes :

claude --model opus "revue architecturale"
claude --model haiku -p "formate ce JSON"
claude --model opusplan "concois et implemente la nouvelle API"

Niveaux d’effort (Opus 4.8, Opus 4.7, Opus 4.6, Sonnet 4.6) :

Niveau Symbole Disponibilite
low o Opus 4.8/4.7/4.6, Sonnet 4.6
medium Opus 4.8/4.7/4.6, Sonnet 4.6
high Opus 4.8/4.7/4.6, Sonnet 4.6 (defaut sur Opus 4.8)
xhigh Opus 4.8, Opus 4.7 (defaut sur Opus 4.7)
max Opus 4.8/4.7/4.6, Sonnet 4.6 (session uniquement)
claude --effort high "revue complexe"

Variable d’environnement :

export CLAUDE_CODE_EFFORT_LEVEL=high

Astuce : Le mot-cle ultrathink dans un prompt active le raisonnement profond sans changer le niveau d’effort.


3. Controler les permissions en CLI

Modes de permission :

@diagram:cc-cli-permissions

Exemples :

# Audit securite en lecture seule
claude --permission-mode plan \
  --tools "Read,Grep,Glob" \
  "audite ce projet pour les vulnerabilites OWASP Top 10"

# Autoriser des commandes git specifiques sans prompt
claude --allowedTools "Bash(git status:*)" "Bash(git log:*)"

# Bloquer les operations dangereuses
claude --disallowedTools "Bash(rm -rf:*)" "Bash(git push --force:*)"

v2.1.132+ : --permission-mode est respecte lors d’un resume de session (claude -c --permission-mode plan). Avant cette version, le flag etait ignore au resume.


4. Formats de sortie et integration scripts

Sortie JSON :

claude -p --output-format json "liste les endpoints API"

JSON avec schema valide :

claude -p --json-schema '{"type":"object","properties":{"bugs":{"type":"array"}}}' \
  "trouve les bugs dans ce code"

Streaming JSON (pour traitement temps reel) :

claude -p --output-format stream-json \
  --include-partial-messages \
  "genere un rapport long"

Limiter les tours autonomes :

claude -p --max-turns 3 "refactorise ce module"

Budget maximal :

claude -p --max-budget-usd 2.00 "analyse ce code"

Chainage avec jq :

claude -p --output-format json "liste les issues" | jq -r '.issues[] | select(.severity=="high")'

5. Gerer les sessions

Nommer une session :

claude -n "feature-auth" "implemente l'authentification JWT"

Lister et gerer :

claude -c                    # continue la plus recente
claude -r "feature-auth"     # reprend par nom
claude --resume abc123 --fork-session "essai alternatif"

Agent View (v2.1.139+, Research Preview) :

claude agents

Affiche toutes les sessions actives avec leur statut (running, blocked on you, done). Ctrl+T pour epingler une session. --json pour une sortie machine-readable.

Nettoyer l’etat d’un projet (v2.1.126+) :

claude project purge ~/work/repo --dry-run   # preview
claude project purge ~/work/repo --yes       # supprime sans confirmation

Supprime les transcripts, taches, logs, historique d’edition, et l’entree ~/.claude.json.


6. Personnaliser le system prompt

Remplacer le prompt par defaut :

claude --system-prompt "Tu es un expert securite. Focus sur les vulnerabilites."

Ajouter des instructions :

claude --append-system-prompt "Inclus toujours des tests unitaires avec les exemples de code"

Charger depuis un fichier (print mode uniquement) :

claude -p --system-prompt-file ./prompts/code-reviewer.txt "review main.py"

Attention : --system-prompt-file ne fonctionne qu’en print mode. En interactif, utilise --system-prompt ou --append-system-prompt.


7. Configuration MCP et plugins en CLI

Charger une config MCP :

claude --mcp-config ./github-mcp.json "liste les PR ouvertes"

Mode strict (uniquement les serveurs specifies) :

claude --strict-mcp-config --mcp-config ./production-mcp.json "deploie sur staging"

Charger un plugin local :

claude --plugin-dir ./mon-plugin

Depuis une archive (v2.1.128+) :

claude --plugin-dir ./mon-plugin.zip

Depuis une URL (v2.1.129+) :

claude --plugin-url https://example.com/mon-plugin-1.0.0.zip

8. Commandes de maintenance et diagnostic

Commande Action
claude update Met a jour vers la derniere version
claude install [version] Installe une version specifique (stable, latest, ou 2.1.131)
claude auth login Connexion (supporte --email, --sso)
claude auth logout Deconnexion
claude auth status Statut auth (exit 0 si connecte, 1 sinon)
claude mcp Configure les serveurs MCP
claude mcp serve Lance Claude Code comme serveur MCP
claude plugin list Liste les plugins installes
claude plugin prune Nettoie les dependances orphelines
claude ultrareview [target] Lance /ultrareview non-interactivement (exit 0/1)
claude auto-mode defaults Affiche les regles auto mode par defaut en JSON
claude remote-control Lance le serveur Remote Control
/doctor (dans REPL) Diagnostique l’installation, la config, les plugins

v2.1.126 : claude auth login accepte le code OAuth colle dans le terminal quand le callback navigateur ne peut pas atteindre localhost (WSL2, SSH, containers).


9. Variables d’environnement essentielles

Variable Description
ANTHROPIC_API_KEY Cle API pour l’authentification
ANTHROPIC_MODEL Modele par defaut
CLAUDE_CODE_EFFORT_LEVEL Niveau d’effort (low/medium/high/xhigh/max)
CLAUDE_CODE_SIMPLE Mode minimal (equivalent --bare)
CLAUDE_CODE_DISABLE_AUTO_MEMORY Desactive les mises a jour auto de CLAUDE.md
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS Desactive les taches d’arriere-plan
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN Reste dans le terminal normal (utile pour logs)
CLAUDE_CODE_SESSION_ID ID de session injecte dans les sous-processus Bash
DISABLE_UPDATES Bloque toutes les mises a jour

Verification checklist

  • claude -p "question" retourne une reponse et quitte
  • claude -c reprend la conversation la plus recente
  • claude -r "nom" reprend une session nommee
  • claude --model opus et claude --model sonnet changent le modele
  • claude --permission-mode plan bloque les ecritures
  • claude -p --output-format json produit du JSON valide
  • cat fichier | claude -p "analyse" fonctionne
  • claude --bare demarre sans plugins, hooks, MCP, CLAUDE.md
  • claude auth status retourne le bon code de sortie
  • claude project purge --dry-run montre ce qui serait supprime

Pieges courants

Oublier que --system-prompt-file est print-mode uniquement. En interactif, le fichier est ignore. Utilise --system-prompt ou --append-system-prompt a la place.

Penser que --permission-mode au resume ne sert a rien. C’etait vrai avant v2.1.132. Maintenant, claude -c --permission-mode plan applique bien le mode plan.

Utiliser --dangerously-skip-permissions sans savoir ce que ca fait. Ca desactive TOUTES les verifications. A utiliser uniquement dans des sandboxes ephemeres. Jamais sur de la production.

Chainer des commandes sans --max-turns en print mode. Sans limite, Claude peut boucler ou partir dans des actions inattendues. Fixe --max-turns pour tout usage scripte.

Ignorer le modele par defaut. Sans --model, Claude utilise le modele par defaut de ton compte. Si tu t’attends a Opus et que tu obtiens Haiku, verifie ANTHROPIC_MODEL ou /config.

Ne pas utiliser --no-session-persistence en CI. Chaque run de CI cree une session sauvegardee si tu ne passes pas ce flag. Ca pollue ton historique.


Recapitulatif

Action Commande
Session interactive claude
Requete unique claude -p "question"
Continuer claude -c
Reprendre par nom claude -r "nom"
Dupliquer une session claude -r "nom" --fork-session
Pipe cat fichier | claude -p "analyse"
Modele claude --model opus/sonnet/haiku
Effort claude --effort high
JSON claude -p --output-format json
Lecture seule claude --permission-mode plan
Auto mode claude --permission-mode auto
Sans restrictions claude --dangerously-skip-permissions
Bare/minimal claude --bare
Budget limite claude -p --max-budget-usd 5.00
Tours limites claude -p --max-turns 3
Custom prompt claude --system-prompt "..."
Plugin local claude --plugin-dir ./plugin
Config MCP claude --mcp-config ./mcp.json
Mettre a jour claude update
Auth claude auth login/logout/status
Diagnostic /doctor (dans REPL)
Purge etat projet claude project purge --dry-run

Pour aller plus loin

  • Doc officielle CLI
  • Headless Mode
  • Module Fonctionnalites avancees — planning mode, background tasks, permission modes
  • Module Plugins — creer et distribuer des extensions
  • Templates dans /opt/data/projects/praktik-clone/output/templates/ :
    • print-mode-script.md — scripts CI/CD reutilisables
    • config-ci-cd.md — configuration pour pipelines
    • config-security-audit.md — configuration audit securite
    • config-development.md — configuration dev actif
    • config-auto-mode.md — configuration auto mode avec guardrails
    • config-code-review.md — configuration revue de code
    • config-production.md — configuration production securisee
    • config-refactoring.md — configuration refactoring
    • config-pair-programming.md — configuration pair programming
    • keybindings-custom.md — personnalisation des raccourcis clavier
    • managed-settings-enterprise.md — settings geres par l’organisation

Inspire du guide claude-howto de luongnv89 (MIT)