Aller au contenu principal

Implementer un hook

Implementer un hook

Construisons un hook concret pour empecher Claude de lire des fichiers sensibles comme .env. C’est un exemple pratique de la facon dont les hooks peuvent proteger vos variables d’environnement et autres donnees confidentielles.

Configurer le hook

Ouvrez votre fichier .claude/settings.local.json et ajoutez la configuration :

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Read|Grep",
        "hooks": [
          {
            "type": "command",
            "command": "node ./hooks/read_hook.js"
          }
        ]
      }
    ]
  }
}

Le pipe agit comme un operateur OU — le hook se declenchera sur l’outil Read ou Grep.

Implementer le script

Creez le fichier hooks/read_hook.js :

async function main() {
  const chunks = [];
  for await (const chunk of process.stdin) {
    chunks.push(chunk);
  }
  const toolArgs = JSON.parse(
    Buffer.concat(chunks).toString()
  );

  // Extraire le chemin que Claude essaie de lire
  const readPath =
    toolArgs.tool_input?.file_path ||
    toolArgs.tool_input?.path ||
    "";

  // Bloquer si Claude essaie de lire un fichier .env
  if (readPath.includes(".env")) {
    console.error(
      "Acces interdit : fichier .env protege par un hook"
    );
    process.exit(2);
  }
}

main();

Le script verifie si le chemin contient .env et bloque l’operation si c’est le cas. En sortant avec le code 2, Claude recoit le message d’erreur et comprend que l’operation a ete bloquee.

Tester le hook

Apres avoir sauvegarde la configuration et le script, redemarrez Claude Code pour que les changements prennent effet. Testez en demandant a Claude de lire votre fichier .env :

Lis le contenu du fichier .env

Claude va tenter l’operation Read, votre hook va l’intercepter et renvoyer un message d’erreur. La meme protection fonctionne pour les operations Grep.

Avantages

  • Protection proactive — bloque l’acces avant que les donnees sensibles ne soient lues
  • Transparence — Claude comprend pourquoi l’operation a echoue
  • Matching flexible — fonctionne avec plusieurs outils (Read, Grep, etc.)
  • Feedback clair — fournit des messages d’erreur explicites

Ce pattern peut etre etendu pour proteger n’importe quel fichier ou repertoire sensible dans votre projet.