Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Secret-in-commit hooks never run: Claude Code doesn't set $TOOL_INPUT

Ouverte Adaptée aux débutants
#124 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
1/5
Temps estimé
Moins d'une heure
Accessibilité débutants
92/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
shell
Domaine
devtools

Piste de recherche

Lis .claude/settings.json et les trois commandes de hook (deux PreToolUse, un PostToolUse) qui font actuellement transiter echo "$TOOL_INPUT" vers grep via un pipe. Selon la référence des hooks de Claude Code, l'entrée de l'outil arrive sur stdin, donc supprime le pipe et laisse grep lire stdin directement, et envoie le message de blocage sur stderr afin que Claude Code le signale comme motif de rejet. On considère que c'est terminé quand chaque hook se termine avec le code 2 et bloque un .env stagé ou un appel git commit, en le vérifiant en alimentant le hook avec le JSON envoyé par Claude Code.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

The two PreToolUse hooks in .claude/settings.json that stop a commit containing a sensitive file or a possible secret, and the PostToolUse security scan, all start with echo "$TOOL_INPUT" | grep -q 'git commit'. Claude Code passes the tool call to a hook as JSON on stdin and does not set $TOOL_INPUT (the hooks reference lists the variables it does set), so the grep never matches and none of the three checks runs.

I checked with Claude Code 2.1.292 that TOOL_INPUT is empty inside a hook. Then, in a repo with .env staged and fed the JSON Claude Code sends for git commit -m wip, both PreToolUse hooks exit 0 and the commit would go ahead.

The fix is to drop echo "$TOOL_INPUT" | so grep reads stdin. Sending the message to stderr also makes it the reason Claude Code gives for the block:

"command": "if grep -q 'git commit'; then git diff --cached --name-only | grep -E '\\.(env|pem|key|p12)$' && echo >&2 '⛔ BLOCKED: Sensitive file in commit' && exit 2 || exit 0; fi"

With that change and the same staged .env, the first hook exits 2 with "Sensitive file in commit" and the second exits 2 with "Possible secret in commit". The same one-line change applies to the PostToolUse scan.

Found this while testing Claude Code guards for Paveo. Happy to open a PR with the fix.

Langage dominant
Go
Étoiles
75
Forks
2
Merge moyen
16 j 4 h
PR mergées (30 j)
1

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de nylas/cli

Toutes les issues de nylas/cli

Issues similaires

Plus d'issues Go

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.