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.