Kacper Sieradziński

Materiały do odcinków

Hooki w Claude Code: 3 bezpieczniki do skopiowania

Hooki to zwykłe skrypty, które odpalają się przed albo po akcji agenta i mogą ją zablokować, zanim cokolwiek się stanie. Tu są trzy bezpieczniki z odcinka: blokada rm -rf, ochrona pliku .env i ustawień oraz powiadomienie na telefon, kiedy agent czeka na Twoją decyzję.

Miniatura filmu: Hooki w Claude Code: jak blokować ryzykowne działania AIOdcinek na YouTube · 15 minHooki w Claude Code: jak blokować ryzykowne działania AI

Pliki z odcinka

Wymaga jq. Sprawdzenie: w Claude Code wpisz /hooks.

Instalacja w projekcie

mkdir -p .claude/hooks
cp pierwszy_hook.sh sekrety.sh .claude/hooks/
chmod +x .claude/hooks/*.sh
cp settings.json .claude/settings.json   # albo dopisz sekcję "hooks" do istniejącego pliku
export NTFY_TOPIC=twoj-unikalny-temat    # temat w aplikacji ntfy na telefonie

Zanim podepniesz. Hooków od innych osób nie podpinaj w ciemno: działają z Twoimi uprawnieniami, więc najpierw przeczytaj każdy skrypt (moje też). Hook to jedna warstwa ochrony, nie cała. Proste dopasowanie tekstu da się obejść, np. inną komendą usuwającą pliki. Do ważnych projektów: kopie, git i ograniczone uprawnienia. Dokumentacja hooków.

pierwszy_hook.sh

Blokuje komendy z rm -rf (PreToolUse, Bash).

Pobierz
#!/usr/bin/env bash
# Najprostszy bezpiecznik: blokuje rm -rf. Claude Code podaje na wejście JSON z opisem akcji.
komenda=$(jq -r '.tool_input.command // ""')

if echo "$komenda" | grep -q 'rm -rf'; then
  echo "Zablokowane: rm -rf jest nieodwracalne. Poproś człowieka." >&2
  exit 2
fi

exit 0

sekrety.sh

Blokuje zmiany w .env i .claude/settings* oraz zapis klucza API (PreToolUse, Write/Edit).

Pobierz
#!/usr/bin/env bash
# Bezpiecznik 2: agent nie zapisze klucza API ani nie zmieni ustawień i .env
wejscie=$(cat)
plik=$(echo "$wejscie" | jq -r '.tool_input.file_path // ""')
tresc=$(echo "$wejscie" | jq -r '.tool_input.content // .tool_input.new_string // ""')

if [[ "$plik" == *".claude/settings"* || "$plik" == *".env"* ]]; then
  echo "Zablokowane: agent nie zmienia ustawień ani pliku .env." >&2
  exit 2
fi
if echo "$tresc" | grep -qE 'sk-[A-Za-z0-9_-]{20,}|api_key *='; then
  echo "Zablokowane: w treści jest klucz API. Sekrety trzymaj poza repozytorium." >&2
  exit 2
fi
exit 0

settings.json

Podpina oba hooki i wysyła powiadomienie na telefon (ntfy), gdy agent czeka na decyzję.

Pobierz
{
  "hooks": {
    "PreToolUse": [
      { "matcher": "Bash",
        "hooks": [{ "type": "command", "command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/pierwszy_hook.sh\"" }] },
      { "matcher": "Write|Edit",
        "hooks": [{ "type": "command", "command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/sekrety.sh\"" }] }
    ],
    "Notification": [
      { "hooks": [{ "type": "command", "command": "curl -s -d \"Agent czeka na Twoją decyzję\" ntfy.sh/$NTFY_TOPIC" }] }
    ]
  }
}

Chcesz więcej?

Pięć kolejnych skilli do Claude Code dostaniesz w bezpłatnym pakiecie po zapisie do newslettera Dokodu.

Odbierz 5 skilli