Aller au contenu principal
Avancé20 min

Fonctionnalites avancees de Claude Code

Ce que tu vas apprendre

  • Utiliser le planning mode pour structurer les taches complexes avant de coder
  • Activer l’extended thinking et choisir le bon niveau d’effort
  • Lancer des taches en arriere-plan sans bloquer la conversation
  • Choisir le bon mode de permissions selon le contexte
  • Executer Claude Code en mode non-interactif pour la CI/CD
  • Gerer plusieurs sessions, les reprendre et les dupliquer
  • Utiliser les raccourcis clavier, le mode vim et les keybindings personnalises
  • Configurer le sandboxing et les regles enterprise

Prerequis

Le concept en 30 secondes

Claude Code n’est pas qu’un chat interactif. Il a des modes de fonctionnement qui changent completement son comportement : planifier avant d’agir, reflechir plus longtemps, travailler en arriere-plan, s’executer sans supervision. Chaque mode a un usage precis. Le bon choix depend de la tache, pas de l’humeur.


Etapes

1. Planning mode : penser avant de coder

Le planning mode force Claude a produire un plan detaille avant toute modification. Tu valides, modifies ou refuses avant execution.

Quand l’utiliser :

  • Refactoring multi-fichiers
  • Nouvelle fonctionnalite
  • Migration de base de donnees
  • Redesign d’API

Quand ne PAS l’utiliser :

  • Correction de bug simple
  • Formatage
  • Requete unique

Activation :

/plan Implemente l'authentification JWT

Ou en CLI :

claude --permission-mode plan

Raccourci : Shift + Tab pour cycliser les modes (inclut plan).

Deroulement type :

@diagram:steps
/plan <tache> :: Tu demandes un plan pour la tache.
Plan en phases :: Claude le produit avec estimations.
yes / no / modify :: Tu valides, refuses ou demandes une modification.
Ajustement :: Si tu modifies, il revoit le plan.
Execution :: Sur validation, il execute phase par phase.

v2.1.136 : En plan mode, tous les writes sont bloques, meme si une regle Edit(...) existe dans permissions.allow. Avant cette version, une regle permissive pouvait contourner le plan mode. Si ton workflow dependait de l’ancien comportement, sors du plan mode (Shift+Tab) avant d’editer.

Modifier un plan externement :

Pendant la revue du plan, appuie sur Ctrl+G pour l’ouvrir dans ton editeur systeme.

Alias opusplan :

claude --model opusplan "concois et implemente la nouvelle API"

Opus pour la planification, Sonnet pour l’execution.


2. Extended thinking : plus de tokens pour reflechir

L’extended thinking laisse Claude raisonner plus longtemps avant de repondre. C’est un toggle, pas une option cachee.

Raccourci :

  • Option + T (macOS)
  • Alt + T (Windows/Linux)

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

@diagram:cc-effort-levels

Commandes :

/effort high

Ou en CLI :

claude --effort high "revue architecturale"

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. Le menu /effort propose aussi ultracode qui envoie xhigh + orchestre des workflows dynamiques (session uniquement).


3. Background tasks : travailler en parallele

Lance des operations longues sans bloquer la conversation.

Usage :

Lance les tests en arriere-plan

Claude demarre la tache et te donne un ID :

Tache bg-1234 demarree. Tu peux continuer a travailler.

Commandes de gestion :

Commande Action
/task list Liste les taches actives
/task status <id> Etat d’une tache
/task show <id> Voir la sortie
/task cancel <id> Annuler

Exemple de workflow parallele :

Lance le build en arriere-plan
Lance le linter en arriere-plan
Pendant ce temps, implemente le nouvel endpoint API

Claude execute les deux taches en fond tout en continuant la conversation avec toi.


4. Monitor : reagir aux evenements sans polling

Le Monitor tool (v2.1.98+) attache Claude a la sortie stdout d’une commande. Chaque ligne correspondante declenche une reaction. Zero token consomme tant que la commande est silencieuse.

Pattern stream :

tail -f /var/log/app.log | grep --line-buffered "ERROR"

Pattern poll-and-emit :

last=$(date -u +%Y-%m-%dT%H:%M:%SZ)
while true; do
  gh api "repos/owner/repo/issues/123/comments?since=$last" || true
  last=$(date -u +%Y-%m-%dT%H:%M:%SZ)
  sleep 30
done

Attention : Avec grep dans un pipe, utilise toujours --line-buffered. Sans ca, grep bufferise par blocs de 4KB et les evenements peuvent etre retardes de plusieurs minutes. C’est la cause #1 des pannes Monitor.


5. Dynamic workflows : orchestre de subagents

(v2.1.154+) Les workflows dynamiques decomposent une tache en dizaines ou centaines de subagents qui travaillent en parallele. C’est du determinisme par script, pas de l’improvisation.

Quand les utiliser :

  • Audit ou revue a grande echelle
  • Verification adversariale (plusieurs perspectives independantes)
  • Trop gros pour une seule fenetre de contexte

Lancement :

Demande a Claude de creer un workflow pour la tache. Il ecrit le script d’orchestration et le lance en arriere-plan.

/workflows

Affiche les workflows en cours et termines avec progression live.

ultracode : Selectionne ultracode dans le menu /effort. Cela envoie xhigh + active les workflows dynamiques par defaut. Session uniquement, non configurable dans settings.json.


6. Scheduled tasks : automatiser les verifications recurrentes

Les taches planifiees tournent pendant que Claude Code est actif. Session-scoped : elles disparaissent quand la session se termine.

Commande /loop :

/loop 5m verifier si le deploiement est termine
/loop verifier le build toutes les 30 minutes

Rappels ponctuels :

rappelle-moi a 15h de pousser la branche release
dans 45 minutes, lance les tests d'integration

Gestion :

Outil Description
CronCreate Creer une tache
CronList Lister (affiche le prompt planifie depuis v2.1.136)
CronDelete Supprimer

Limites :

  • 50 taches planifiees max par session
  • Expirent apres 3 jours
  • Pas de rattrapage si Claude Code etait ferme
  • Jitter : 10% de l’intervalle (max 15 min)

Cloud scheduled tasks :

/schedule daily at 9am run the test suite and report failures

Persiste apres redemarrage. Tourne sur l’infrastructure Anthropic.

v2.1.139 : /schedule cloud est silencieusement indisponible si ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN ou apiKeyHelper est defini. Desactive la cle API (ou utilise OAuth Pro/Max) pour y acceder.


7. Permission modes : controler ce que Claude peut faire

Six modes disponibles. Cyclage avec Shift+Tab.

@diagram:scale
Modes de permission, du plus restrictif (gauche) au plus permissif (droite)
plan :: Lecture seule (mode recherche, pas d'edition).
dontAsk :: Seuls les outils pre-approuves s'executent ; le reste est refuse.
default :: Lecture libre ; demande confirmation pour le reste.
acceptEdits :: Lecture + edition auto ; demande pour les commandes.
auto :: Toutes les actions avec classifier de securite (Research Preview).
bypassPermissions :: Toutes les actions, aucune verification (dangereux).

Activation :

claude --permission-mode plan
claude --permission-mode auto

Ou dans settings.json :

{
  "permissions": {
    "defaultMode": "auto"
  }
}

Auto mode (Research Preview) :

  • Requiert : Team/Enterprise/API plan, Sonnet 4.6 ou Opus 4.8, provider Anthropic API
  • Le classifier tourne en arriere-plan sur Sonnet 4.6 (cout tokens supplementaire)
  • Ordre de decision : allow/deny rules > read-only/edits auto-approved > classifier > fallback apres 3 blocs consecutifs ou 20 blocs total

Actions bloquees par defaut en auto mode :

Action bloquee Exemple
Pipe-to-shell install `curl
Envoi de donnees sensibles Cles API, credentials
Deploiement production Commandes ciblant la prod
Suppression massive rm -rf sur gros repertoires
Changements IAM Modification de roles
Force push main git push --force origin main

Etendre les regles auto mode (v2.1.118+) :

{
  "autoMode": {
    "allow": ["$defaults", "Bash(gh pr list:*)"],
    "soft_deny": ["$defaults", "Bash(kubectl delete:*)"],
    "hard_deny": ["Bash(rm -rf /:*)", "Bash(git push --force*)"]
  }
}

$defaults ajoute tes regles aux regles integrees au lieu de les remplacer.

v2.1.121/v2.1.126 : --dangerously-skip-permissions (et bypassPermissions) couvre maintenant plus de chemins : .claude/skills/, .claude/agents/, .claude/commands/, .git/, .vscode/, fichiers de config shell. Les suppressions catastrophiques (rm -rf /, etc.) demandent toujours confirmation.


8. Print mode (headless) : execution non-interactive

Pour l’automatisation et la CI/CD.

# Tache specifique
claude -p "Lance tous les tests"

# Depuis un pipe
cat error.log | claude -p "Analyse ces erreurs"

# Sortie JSON structuree
claude -p --output-format json "Analyse la qualite du code"

# Limiter les tours autonomes
claude -p --max-turns 5 "refactorise ce module"

Exemple GitHub Actions :

name: AI Code Review
on: [pull_request]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm install -g @anthropic-ai/claude-code
      - env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          claude -p --output-format json --max-turns 3 \
            "Review cette PR pour : qualite, securite, performance, couverture de tests" \
            > review.json

9. Session management : gerer plusieurs contextes

Commande Action
/resume Reprendre une conversation par ID ou nom
/rename Nommer la session courante
/fork Dupliquer la session courante
claude -c Continuer la conversation la plus recente
claude -r "nom" Reprendre par nom ou ID

Fork pour experimenter :

/fork

Ou en CLI :

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

Recap apres absence (v2.1.108+) :

/recap           # declencher manuellement
/config          # activer/desactiver le recap auto

Variable d’environnement :

CLAUDE_CODE_ENABLE_AWAY_SUMMARY=1 claude

10. Raccourcis clavier et personnalisation

Raccourcis essentiels :

Raccourci Action
Ctrl+C Annuler l’entree/generation
Ctrl+D Quitter Claude Code
Ctrl+G Editer le plan dans l’editeur externe
Ctrl+L Effacer l’ecran
Ctrl+O Basculer la sortie verbeuse (voir le raisonnement)
Ctrl+R Recherche inverse dans l’historique
Ctrl+T Basculer la liste de taches
Esc+Esc Rewind conversation/code
Shift+Tab / Alt+M Cycliser les modes de permission
Option+P / Alt+P Changer de modele
Option+T / Alt+T Basculer l’extended thinking

Personnaliser les keybindings :

/keybindings

Ouvre ~/.claude/keybindings.json :

{
  "$schema": "https://www.schemastore.org/claude-code-keybindings.json",
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctrl+e": "chat:externalEditor",
        "ctrl+k ctrl+s": "chat:stash"
      }
    },
    {
      "context": "Confirmation",
      "bindings": {
        "ctrl+a": "confirmation:yes"
      }
    }
  ]
}

Mettre une binding a null pour desactiver le raccourci par defaut.

Mode Vim :

Active via /config (toggle “Editor / Vim mode”) ou dans settings.json :

{ "editorMode": "vim" }
  • Esc : NORMAL
  • i/a/o : INSERT
  • v : VISUAL (v2.1.118+)
  • V : VISUAL-LINE (v2.1.118+)

Bash mode :

Prefixe ! pour executer une commande shell directement :

! npm test
! git status

11. TUI mode, voice dictation, channels

TUI mode (v2.1.110+) :

Fullscreen, sans scintillement. Ideal pour tmux ou iTerm2 split.

/tui             # basculer dans une session
claude --tui     # demarrer directement

Configuration :

{ "autoScrollEnabled": false }

/focus pour la vue sans distraction.

Voice dictation :

/voice

Push-to-talk, 20 langues supportees. Configure la touche via /keybindings.

Channels (Research Preview) :

Pousse des evenements externes (Discord, Telegram, iMessage, webhooks) dans la session via MCP servers.

claude --channels discord,telegram

12. Chrome integration, remote control, web sessions

Chrome integration (beta) :

claude --chrome      # activer
claude --no-chrome   # desactiver
/chrome              # dans une session

Capacites : debug live, verification de design, test de formulaires, extraction de donnees, enregistrement GIF. Chrome et Edge uniquement. Pas de WSL. Pas de Bedrock/Vertex/Foundry.

Remote control :

Continue ta session locale depuis un telephone, tablette ou navigateur.

claude remote-control --name "Auth Refactor"
/remote-control
  • Aucun port entrant ouvert
  • HTTPS sortant uniquement
  • Session timeout apres ~10 min sans reseau
  • Incompatible avec ultraplan (meme interface claude.ai/code)

Web sessions :

claude --remote "implemente les nouveaux endpoints"
claude --teleport    # reprendre une session web en local
/teleport            # dans une session

13. Desktop app, task list, prompt suggestions

Desktop app :

Disponible sur macOS et Windows. Telechargement sur claude.ai.

/desktop    # transferer la session CLI vers l'app

Features : diff view visuel, app preview avec dev server auto, monitoring PR, sessions paralleles avec isolation worktree, taches planifiees.

Configuration dev server (.claude/launch.json) :

{
  "command": "npm run dev",
  "port": 3000,
  "readyPattern": "ready on",
  "persistCookies": true
}

Task list :

Ctrl+T pour basculer la vue. Les taches survivent aux compactions de contexte.

Variable pour partager une liste entre sessions :

export CLAUDE_CODE_TASK_LIST_ID=my-project-sprint-3

Prompt suggestions :

Suggestions grisees basees sur l’historique git et le contexte. Tab pour accepter. Entree pour accepter et envoyer.

Desactiver :

export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false

14. Git worktrees

Isole ton travail dans une branche worktree sans stasher ni switcher.

claude --worktree
claude -w

Emplacement : <repo>/.claude/worktrees/<nom>

Sparse checkout (monorepos) :

{
  "worktree": {
    "sparsePaths": ["packages/mon-paquet", "shared/"]
  }
}

Base branch (v2.1.133) :

{ "worktree": { "baseRef": "head" } }
  • "fresh" (defaut) : branche depuis origin/<default-branch>, ignore les commits locaux non pousses
  • "head" : branche depuis HEAD local, preserve les commits non pousses

Background session isolation (v2.1.143) :

{ "worktree": { "bgIsolation": "none" } }
  • Defaut : les sessions d’arriere-plan creent un worktree isole
  • "none" : elles editent la working copy directement (risque de conflits)

15. Sandboxing

Isolation OS-level du filesystem et du reseau pour les commandes Bash.

Activation :

/sandbox
claude --sandbox
claude --no-sandbox

Configuration :

{
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": true,
    "filesystem": {
      "allowWrite": ["/Users/moi/projet"],
      "allowRead": ["/Users/moi/projet", "/usr/local/lib"],
      "denyRead": ["/Users/moi/.ssh", "/Users/moi/.aws"]
    },
    "network": {
      "allowedDomains": ["*.example.com"],
      "deniedDomains": ["evil.example.com"]
    },
    "enableWeakerNetworkIsolation": true
  }
}

macOS : l’isolation reseau complete n’est pas disponible. Utilise enableWeakerNetworkIsolation pour des restrictions partielles.

Linux/WSL (v2.1.133+) : specifie les chemins binaires si necessaire :

{ "sandbox": { "bwrapPath": "/opt/bubblewrap/bin/bwrap", "socatPath": "/opt/socat/bin/socat" } }

16. Managed settings (Enterprise)

Deploiement de configuration via outils de gestion natifs.

Plateforme Methode Depuis
macOS Managed plist (MDM) v2.1.51
Windows Windows Registry v2.1.51
Cross-platform Managed config files v2.1.51
Cross-platform Drop-ins managed-settings.d/ v2.1.83

Drop-ins modulaires :

~/.claude/managed-settings.d/
  00-org-defaults.json
  10-team-policies.json
  20-project-overrides.json

Fusion dans l’ordre alphabetique.

Settings disponibles :

Setting Description
disableBypassPermissionsMode Empeche le mode bypass
availableModels Restreint les modeles selectionnables
allowedChannelPlugins Plugins channels autorises
autoMode.environment Infrastructure de confiance pour auto mode
wslInheritsWindowsSettings WSL herite des settings Windows (v2.1.118+)
disableRemoteControl Bloque le remote control (v2.1.128+)
parentSettingsBehavior Fusion avec les settings parent (v2.1.133+)

Exemple plist macOS :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>disableBypassPermissionsMode</key>
  <true/>
  <key>availableModels</key>
  <array>
    <string>claude-sonnet-4-6</string>
    <string>claude-haiku-4-5</string>
  </array>
</dict>
</plist>

17. Configuration complete

Fichiers de config :

  1. Global : ~/.claude/config.json
  2. Projet : ./.claude/config.json
  3. Utilisateur : ~/.config/claude-code/settings.json

Exemple de configuration avancee :

{
  "permissions": {
    "mode": "default",
    "allowedTools": ["Bash(git log:*)", "Read"],
    "disallowedTools": ["Bash(rm -rf:*)"]
  },
  "hooks": {
    "PreToolUse": [{ "matcher": "Edit", "hooks": ["eslint --fix ${file_path}"] }],
    "PostToolUse": [{ "matcher": "Write", "hooks": ["~/.claude/hooks/security-scan.sh"] }],
    "Stop": [{ "hooks": ["~/.claude/hooks/notify.sh"] }]
  },
  "mcp": {
    "enabled": true,
    "servers": {
      "github": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-github"],
        "env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
      }
    }
  },
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "allowWrite": ["/Users/moi/projet"],
      "denyRead": ["/Users/moi/.ssh"]
    }
  },
  "worktree": {
    "sparsePaths": ["packages/core", "shared/"],
    "baseRef": "fresh"
  }
}

Variables d’environnement cles :

# Modele
export ANTHROPIC_MODEL=claude-opus-4-8

# Reflexion
export MAX_THINKING_TOKENS=16000
export CLAUDE_CODE_EFFORT_LEVEL=high

# Desactiver des features
export CLAUDE_CODE_DISABLE_CRON=1
export CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=true
export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false

# Cache
export ENABLE_PROMPT_CACHING_1H=1

# Taches
export CLAUDE_CODE_TASK_LIST_ID=my-project-tasks

# Agent teams (experimental)
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

Verification checklist

  • /plan produit un plan en phases avant toute modification
  • Shift+Tab cyclise entre les 6 modes de permission
  • Alt+T / Option+T bascule l’extended thinking
  • Une tache d’arriere-plan demarree ne bloque pas la conversation
  • claude -p execute une tache sans interaction
  • claude -c reprend la derniere conversation
  • Esc+Esc ouvre le navigateur de checkpoints
  • /keybindings ouvre le fichier de raccourcis personnalises
  • Ctrl+O affiche le raisonnement detaille
  • Le sandboxing restreint les chemins filesystem et reseau
  • Les managed settings s’appliquent au niveau organisation

Pieges courants

Utiliser plan mode pour une tache simple. C’est du sur-travail. Reserve-le aux taches multi-fichiers ou multi-etapes.

Oublier que le plan mode bloque tous les writes depuis v2.1.136. Meme une regle Edit(...) permissive ne passe plus. Sors du plan mode pour editer si necessaire.

Lancer trop de taches d’arriere-plan. La limite pratique depend de ta machine. Surveille avec /task list.

Utiliser bypassPermissions en production. Ce mode est un couteau sans garde. Reserve-le aux environnements jetables.

Oublier --line-buffered avec Monitor. Sans ca, grep bufferise et les evenements arrivent en retard de plusieurs minutes.

Melanger API key et features cloud. ANTHROPIC_API_KEY desactive /schedule cloud, Remote Control, et les connectors claude.ai. Utilise OAuth Pro/Max pour ces features.

Ne pas configurer hard_deny en auto mode. soft_deny est negociable par le classifier. hard_deny ne l’est pas. Utilise hard_deny pour les actions irreversibles.


Recapitulatif

Feature Quand l’utiliser Commande cle
Planning mode Tache complexe multi-etapes /plan
Extended thinking Decision architecturale, probleme difficile Alt+T
Background tasks Operation longue non bloquante “Lance en arriere-plan”
Monitor Reagir a des evenements stdout sans polling Attache a une commande
Dynamic workflows Orchestration de subagents a grande echelle /workflows
Scheduled tasks Verification recurrente /loop, /schedule
Auto mode Travail autonome avec guardrails Shift+Tab jusqu’a auto
Print mode CI/CD, automatisation claude -p
Session mgmt Multi-contextes, reprise claude -c, /resume, /fork
Sandboxing Execution non fiable, defense en profondeur --sandbox
Worktrees Travail parallele isole --worktree
Managed settings Deploiement enterprise plist, Registry, drop-ins

Pour aller plus loin


Inspire du guide claude-howto de luongnv89 (MIT)