Modül 3 · Hooks and the SDK · ⏱ 4 dakika

Hook tanımlamak

Defining hooks

Türkçe dublaj (Microsoft Edge Neural TTS). İngilizce orijinali için Skilljar'daki ders'ine bak.

Claude Code’daki hooks, tool çağrılarını çalışmadan önce veya sonra yakalamanıza ve kontrol etmenize olanak tanır. Bu, Claude’un geliştirme ortamınızda neler yapıp neler yapamayacağı üzerinde ince taneli kontrol sağlar.

Hook Oluşturmak

Bir hook oluşturmak dört ana adımdan oluşur:

Hook oluşturma adımları

  1. PreToolUse veya PostToolUse hook’una karar verin — PreToolUse hooks tool çağrılarının çalışmasını engelleyebilirken, PostToolUse hooks tool zaten kullanıldıktan sonra çalışır
  2. Hangi tool çağrı türünü izlemek istediğinizi belirleyin — Hook’unuzu hangi tool’ların tetikleyeceğini tam olarak belirtmeniz gerekir
  3. Tool çağrısını alacak bir command yazın — Bu command, önerilen tool çağrısı hakkındaki JSON verisini standard input üzerinden alır
  4. Gerekirse, command Claude’a geri bildirim sağlamalıdır — Command’inizin exit code’u Claude’a operasyona izin verip vermeyeceğini söyler

Mevcut Tools

Claude Code, hooks ile izleyebileceğiniz birkaç built-in tool sağlar:

Mevcut tool listesi

Mevcut kurulumunuzda tam olarak hangi tool’ların kullanılabilir olduğunu görmek için doğrudan Claude’a bir liste isteyebilirsiniz. Bu, özellikle custom MCP server’lar eklediğinizde mevcut tool’lar değişebildiği için faydalıdır.

 

Tool Çağrısı Veri Yapısı

Hook command’iniz çalıştığında, Claude önerilen tool çağrısının detaylarını içeren JSON verisini standard input üzerinden gönderir:

Tool çağrısı JSON yapısı

{
  "session_id": "2d6a1e4d-6...",
  "transcript_path": "/Users/sg/...",
  "hook_event_name": "PreToolUse",
  "tool_name": "Read",
  "tool_input": {
    "file_path": "/code/queries/.env"
  }
}

Command’iniz bu JSON’u standard input’tan okur, parse eder ve ardından tool adına ve input parametrelerine göre operasyona izin verip vermemeye karar verir.

Exit Code’lar ve Kontrol Akışı

Hook command’iniz Claude’a exit code’lar aracılığıyla geri bildirim verir:

Exit code davranışı

  • Exit Code 0 — Her şey yolunda, tool çağrısının devam etmesine izin ver
  • Exit Code 2 — Tool çağrısını engelle (yalnızca PreToolUse hooks)

Bir PreToolUse hook’unda exit code 2 ile çıktığınızda, standard error’a yazdığınız tüm hata mesajları operasyonun neden engellendiğini açıklayan geri bildirim olarak Claude’a gönderilir.

Örnek Kullanım Senaryosu

Yaygın bir kullanım senaryosu, Claude’un .env gibi hassas dosyaları okumasını engellemektir. Hem Read hem de Grep tool’ları dosya içeriğine erişebildiği için, her iki tool türünü de izlemek ve kısıtlanmış dosya yollarına erişmeye çalışıp çalışmadıklarını kontrol etmek istersiniz.

Bu yaklaşım, belirli operasyonların neden kısıtlandığına dair net geri bildirim sağlarken Claude’un dosya sistemi erişimi üzerinde tam kontrol sağlar.