Quand tu lances plusieurs sessions Claude Code en même temps, une simple alerte « Claude a besoin de ton attention » ne suffit pas : impossible de savoir quelle session l'a envoyée. La solution consiste à inclure le projet ou le dossier de la session dans chaque notification. Chaque hook reçoit le cwd et le session_id de la session en JSON : ton hook peut donc les lire et mettre le nom du projet dans l'alerte. Donne des noms clairs à tes sessions avec claude -n <name> ou /rename, et utilise claude --worktree <name> pour que les sessions parallèles sur un même dépôt aient chacune leur dossier, qui apparaîtra ensuite dans l'alerte.
01Pourquoi les sessions parallèles deviennent vite confuses
Faire tourner deux ou trois sessions Claude Code côte à côte est devenu une façon normale de travailler : une corrige un bug, une écrit des tests, une explore un refactoring. Chaque session s'arrête à son propre rythme. Les problèmes sont toujours les mêmes :
- une alerte arrive et tu ne sais pas de quel onglet de terminal elle vient ;
- une session attend sur un prompt de permission depuis vingt minutes pendant que tu surveillais une autre ;
- tu réponds dans la mauvaise fenêtre.
Les trois reviennent à une question d'identification. Chaque alerte doit indiquer d'où elle vient, et chaque réponse doit retourner à la session qui a posé la question.
02Commence par bien séparer les sessions
Utilise des worktrees pour un même dépôt
Deux sessions qui modifient le même checkout vont se marcher dessus. Le flag --worktree de Claude Code (-w en raccourci) crée un worktree git isolé et y démarre la session :
claude --worktree feature-auth
claude --worktree fix-login
Par défaut, chaque worktree est créé sous .claude/worktrees/<name>/ à la racine du dépôt, sur une nouvelle branche nommée worktree-<name>. Lance chaque commande dans son propre terminal. Ajoute .claude/worktrees/ à ton .gitignore pour que les worktrees n'apparaissent pas comme fichiers non suivis.
Quand tu quittes, Claude Code vérifie le worktree. S'il est propre et que tu n'as jamais nommé la session, Claude Code supprime le worktree et sa branche ; sinon, il te demande s'il faut le garder. Pour revenir plus tard à un worktree conservé, lance la commande claude --worktree <name> --resume affichée à la sortie. Si tu préfères gérer les worktrees toi-même, git worktree add ../project-feature-a -b feature-a marche aussi ; lance claude dans ce dossier.
Effet de bord utile pour les notifications : chaque session a désormais son propre nom de dossier, comme feature-auth, exactement ce que tu veux voir dans une alerte.
Nomme tes sessions
Avec un nom, les sessions sont faciles à retrouver et à reprendre :
claude -n auth-refactor
Dans une session en cours, /rename auth-refactor fait la même chose, et le nom s'affiche dans la barre du prompt. Plus tard, claude --resume auth-refactor t'y ramène directement. Dans le sélecteur de sessions (claude --resume sans nom), Ctrl+W élargit la liste à tous les worktrees du dépôt.
03Mets le projet dans chaque alerte maison
Chaque hook de commande reçoit sur l'entrée standard un JSON avec des champs communs à tous les événements, dont session_id, cwd, transcript_path et hook_event_name. Dans une session en worktree, cwd correspond à la racine du worktree, et il suit Claude s'il change de répertoire. Lis-le dans ton hook et utilise la dernière partie du chemin comme libellé.
Sur Mac et Linux, enregistre ceci sous ~/.claude/hooks/notify-session.sh et rends-le exécutable avec chmod +x. Il nécessite jq.
#!/bin/sh
input=$(cat)
project=$(basename "$(printf '%s' "$input" | jq -r '.cwd')")
event=$(printf '%s' "$input" | jq -r '.hook_event_name')
case "$event" in
Stop) msg="Claude has finished" ;;
*) msg="Claude needs you" ;;
esac
notify-send "Claude Code: $project" "$msg"
Sur Mac, remplace la dernière ligne par une notification osascript comme dans le guide macOS. Sous Windows, lis le même JSON dans PowerShell avec ConvertFrom-Json ; le guide Windows propose un exemple complet.
Ensuite, enregistre-le pour les événements qui t'intéressent dans ~/.claude/settings.json :
{
"hooks": {
"Stop": [
{ "hooks": [{ "type": "command", "command": "~/.claude/hooks/notify-session.sh" }] }
],
"Notification": [
{ "matcher": "permission_prompt", "hooks": [{ "type": "command", "command": "~/.claude/hooks/notify-session.sh" }] }
]
}
}
Deux remarques sur les chemins. Mets les variables entre guillemets, comme "$input", car les noms de dossiers peuvent contenir des espaces. Et si tu références un script avec ${CLAUDE_PROJECT_DIR}, n'oublie pas qu'il pointe toujours vers le dossier où la session a démarré, même après que Claude est passé dans un worktree. Lis cwd dans l'input quand tu as besoin du dossier courant.
Si tu travailles dans tmux, le pane ou la fenêtre est souvent un meilleur repère que le dossier. Le guide tmux explique comment trouver le bon pane et y basculer.
04Le plus dur : répondre à la bonne session
Une alerte étiquetée te dit quelle session a besoin de toi. Mais il te faut encore aller dans ce terminal pour répondre. Avec trois sessions, ça veut dire trouver le bon onglet, remonter jusqu'au prompt et taper ta réponse. Un hook fait maison peut difficilement renvoyer ta réponse, car seul le hook qui attend dans cette session peut renvoyer une décision à Claude Code.
C'est ce manque que comble Claude Code Notifier. C'est un outil indépendant, pas développé par Anthropic. Son outil en ligne de commande, ccn, s'installe sous forme de hooks Claude Code sur Mac, Windows et Linux : chaque session que tu lances est couverte, dans n'importe quel terminal, sans config par session. Chaque notification indique le nom et le dossier du projet, donc sur ton iPhone ou ton téléphone Android, tu vois quelle session l'a envoyée. Et comme c'est le hook à l'origine de la demande qui attend ta réponse, une approbation, un choix ou une instruction de suivi envoyée depuis le téléphone revient à la session qui a posé la question.
Quelques détails qui comptent avec plusieurs sessions :
- Plusieurs ordinateurs. Un téléphone peut être appairé à plusieurs ordinateurs, et un ordinateur à plusieurs téléphones.
ccn devicesliste les téléphones appairés à cet ordinateur. - Présence. Si tu as tapé quelque chose dans les 30 dernières secondes, rien n'attend le téléphone et le terminal pose la question comme d'habitude. Si tu es absent, la session attend la réponse du téléphone jusqu'à un plafond que tu choisis (
hold_ceiling_seconds) et arrête d'attendre dès que tu touches le clavier. - Notifications desktop sans téléphone. Avant que tu appaires un téléphone,
ccnaffiche une notification sur l'ordinateur quand une session termine, demande une permission ou pose une question.
Si tu ne lances qu'une session à la fois et que tu restes à ton bureau, une alerte desktop étiquetée suffit sans doute. Le guide comparatif présente les options côte à côte.
05FAQ
Comment savoir quelle session Claude Code a envoyé une notification ?
Lis le champ cwd dans l'input JSON du hook et mets le nom du dossier dans le titre de l'alerte. Avec des worktrees, chaque session a son propre dossier, donc le nom est différent pour chacune. Des outils comme Claude Code Notifier ajoutent le nom et le dossier du projet à chaque notification pour toi.
Puis-je lancer deux sessions Claude Code dans le même dépôt ?
Oui, mais donne à chacune son propre worktree pour que leurs modifications n'entrent pas en conflit. claude --worktree <name> en crée un sous .claude/worktrees/<name>/ sur une nouvelle branche et y démarre la session.
Comment nommer une session Claude Code ?
Lance-la avec claude -n <name>, ou exécute /rename <name> dans une session. Reprends-la plus tard avec claude --resume <name>.
Les hooks tournent-ils séparément pour chaque session ?
Oui. Chaque session exécute ses propres hooks quand ses événements se déclenchent, et passe son session_id et son cwd dans l'input. Les hooks de ~/.claude/settings.json s'appliquent à toutes les sessions que tu lances.
Les notifications de différents ordinateurs vont-elles se mélanger ?
Pas avec ccn. Chaque ordinateur est appairé séparément à ton téléphone et a son propre nom, et chaque notification indique le projet dont elle vient.