Secret-in-commit hooks never run: Claude Code doesn't set $TOOL_INPUT
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 1/5
- Temps estimé
- Moins d'une heure
- Accessibilité débutants
- 92/100
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
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de nylas/cli
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
`XOAUTH2` / `OAUTHBEARER` supportPeut-être à nouveau libre @qasim-nylas l’a pris il y a 155 jours, et aucune pull request n’est ouverte. Ouvertebug enhancement
Toutes les issues de nylas/cli
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour
-
Mend: dependency security vulnerability
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
kube-tarian/sigrun#202 ·
-
good first issue help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
eugenioenko/ttt#1085 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
fullsend-ai/fullsend#8688 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
question raised-by:verifier
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
medici-finance/assay#4013 ·
Les mainteneurs répondent en général sous 1 jour