claude-code-notifier
nasıl çalışır rehberler sss
◐Türkçe
English العربية Deutsch Español Français עברית Italiano 日本語 한국어 Nederlands Polski Português (Brasil) Русский Türkçe Tiếng Việt 简体中文 繁體中文
Başlayın
Tüm rehberler

Claude Code hook'ları: tüm olaylar ve ne işe yaradıkları

Güncellenme: 31 Ekim 2026 · 7 dk okuma
bu sayfada 01Bir hook nasıl yapılandırılır 02Hook'lar nerede tanımlanır 03Handler türleri 04Matcher'lar 05Girdi: hook'unuza ne gelir 06Çıktı: çıkış kodları ve JSON 07Tüm hook event'leri 08Bildirimler için hangi event'ler önemli 09Claude Code Notifier'ın yeri 10SSS

Claude Code hook'ları, Claude Code'un bir oturum sırasında belirli noktalarda otomatik olarak çalıştırdığı komutlardır (ya da HTTP çağrıları, prompt'lar ve birkaç başka handler türü). Örneğin bir araç çalışmadan önce, izin gerektiğinde veya Claude yanıtını bitirdiğinde tetiklenirler. Hook'ları ~/.claude/settings.json gibi bir ayar dosyasında hooks anahtarı altında tanımlarsınız. Her hook, olayla ilgili JSON verisini stdin üzerinden alır ve çıkış kodu ya da stdout'a yazdığı bir JSON nesnesiyle yanıt verebilir. Böylece log tutabilir, bildirim gönderebilir, bir işlemi engelleyebilir veya sizin yerinize yanıt verebilir.

01Bir hook nasıl yapılandırılır

Bir hook yapılandırması üç seviyeden oluşur:

  1. PreToolUse veya Stop gibi bir hook olayı.
  2. Ne zaman tetikleneceğini filtreleyen bir matcher grubu; örneğin "yalnızca Bash aracı için".
  3. Asıl çalışan kısım olan bir veya daha fazla hook handler.
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "/path/to/lint-check.sh"
          }
        ]
      }
    ]
  }
}

Bu örnek, Claude bir dosya yazdıktan veya düzenledikten sonra bir lint script'i çalıştırır. İkinci bir olay eklemek için aynı hooks nesnesinin içine yeni bir anahtar ekleyin.

02Hook'lar nerede tanımlanır

DosyaKapsamPaylaşılır mı?
~/.claude/settings.jsonTüm projelerinizHayır, yalnızca sizin makineniz
.claude/settings.jsonTek bir projeEvet, commit edilebilir
.claude/settings.local.jsonTek bir projeHayır
Yönetilen politika ayarlarıKuruluşunuzYöneticiler tarafından belirlenir
Bir plugin'in hooks/hooks.json dosyasıPlugin etkin olduğu süreceEvet

Farklı dosyalardaki hook'lar birbirinin yerini almaz, birleşir. Tüm etkin hook'ları ve nereden geldiklerini görmek için Claude Code'da /hooks yazın.

Etkileşimli bir oturumda Claude Code, klasör için çalışma alanı güven iletişim kutusunu onaylayana kadar hook'ları, kendi hook'larınız dahil, çalıştırmaz.

03Handler türleri

Çoğu hook, bir shell komutu çalıştıran "type": "command" türündedir. Diğer dört tür şunlardır:

  • http: Olay JSON'unu bir URL'ye POST eder ve yanıt gövdesini okur.
  • mcp_tool: Yapılandırdığınız bir MCP sunucusundaki bir aracı çağırır.
  • prompt: Bir Claude modeline tek seferlik bir soru sorar ve JSON formatında bir karar okur.
  • agent: Karar vermeden önce dosyaları okuyabilen bir subagent başlatır (deneysel).

Command hook'ları tam kullanıcı izinlerinizle çalışır: macOS ve Linux'ta sh -c üzerinden, Windows'ta ise Git Bash (veya PowerShell) üzerinden. Bir hook'u arka planda çalıştırmak için "async": true ekleyin; ancak bu durumda artık karar veremez.

04Matcher'lar

matcher, bir olayın hangi durumlarda hook'u çalıştıracağını belirler. Neyle eşleştirileceği olaya bağlıdır: araç olaylarında araç adı, Notification için bildirim türü, SessionStart için oturumun nasıl başladığı vb.

  • "*", "" veya hiç matcher olmaması her şeyle eşleşir.
  • Harfler, rakamlar, _, -, boşluklar, | ve , tam ad olarak değerlendirilir. Edit|Write her iki araçla da eşleşir.
  • Diğer her şey JavaScript regular expression'ı olarak yorumlanır; örneğin mcp__memory__.* tek bir MCP sunucusundaki tüm araçlarla eşleşir.

Matcher'lar büyük/küçük harfe duyarlıdır. Stop ve UserPromptSubmit gibi bazı olaylar matcher'ları yok sayar. Araç olaylarında, "Bash(git *)" gibi bir izin kuralı içeren if alanı tek bir handler'ı daha da daraltır.

05Girdi: hook'unuza ne gelir

Her hook, stdin üzerinden session_id, transcript_path, cwd ve hook_event_name gibi ortak alanların yanı sıra olaya özgü alanlar içeren bir JSON alır. Örneğin bir Bash çağrısı için çalışan PreToolUse hook'u ayrıca tool_name ve tool_input.command alanlarını da alır. Bu veriyi jq veya herhangi bir JSON parser ile okuyabilirsiniz:

#!/bin/bash
input=$(cat)
cmd=$(jq -r '.tool_input.command // empty' <<<"$input")
echo "Claude wants to run: $cmd" >> ~/claude-commands.log
exit 0

06Çıktı: çıkış kodları ve JSON

Bir hook iki yoldan biriyle yanıt verir.

Çıkış kodları. 0 başarı demektir. 2 engelleyici bir hatadır: engelleme yapabilen event'lerde işlem durur ve stderr çıktınız gerekçe olarak kullanılır. Alışılmış 1 dahil diğer tüm kodlar engelleyici olmayan hatadır; işlem devam eder ve bir hook hatası bildirimi görürsünüz. Hook bir kuralı zorunlu kılmak için yazıldıysa 1 ile değil, 2 ile çıkın.

stdout'a JSON. Daha ince kontrol için 0 ile çıkın ve tek bir JSON nesnesi yazdırın. Bazı alanlar her yerde çalışır; örneğin Claude'u tamamen durdurmak için continue: false. Diğerleri event'e özeldir: Stop, bir reason ile birlikte decision: "block" kullanırken PreToolUse ve PermissionRequest kararlarını hookSpecificOutput içine koyar. stdout'a başka hiçbir şey yazdırmayın: shell profilinizden gelen tek bir fazla satır bile Claude Code'un JSON'u okumasını engeller.

07Tüm hook event'leri

EventNe zaman tetiklenirEngelleyebilir mi?
SessionStartBir oturum başlar veya devam ettirilirHayır (bağlam ekler)
Setup--init-only ile ya da -p ile birlikte --init / --maintenance ile başlatıldığındaHayır
InstructionsLoadedBir CLAUDE.md veya .claude/rules/*.md dosyası yüklenirHayır
UserPromptSubmitBir prompt gönderdiğinizde, Claude onu görmeden önceEvet
UserPromptExpansionYazılan bir komut prompt'a dönüştürülürEvet
PreToolUseHerhangi bir tool çağrısından önceEvet
PermissionRequestBir tool çağrısı için izin kararı gerekirJSON ile izin verir veya reddeder
PermissionDeniedAuto mode bir tool çağrısını reddederHayır
PostToolUseBir tool çağrısı başarılı olduktan sonraHayır (tool zaten çalıştı)
PostToolUseFailureBir tool çağrısı başarısız olduktan sonraHayır
PostToolBatchParalel tool çağrılarından oluşan bir grup bittikten sonra, bir sonraki model çağrısından önceEvet
NotificationClaude Code bir bildirim gönderirHayır
MessageDisplayClaude'un yanıt metni gösterilirkenHayır (gösterilen içeriği değiştirebilir)
SubagentStart / SubagentStopBir subagent başlar veya biterYalnızca SubagentStop
TaskCreated / TaskCompletedBir görev oluşturulur veya tamamlandı olarak işaretlenirEvet
StopClaude yanıtını bitirirEvet (Claude'un devam etmesini sağlar)
StopFailureTur bir API hatasıyla sona ererHayır
TeammateIdleAgent ekibindeki bir takım arkadaşı boşta kalmak üzeredirEvet
ConfigChangeOturum sırasında bir ayar dosyası değişirEvet
CwdChangedÇalışma dizini değişirHayır
DirectoryAdded/add-dir ile bir dizin eklenirHayır
FileChangedİzlenen bir dosya diskte değişirHayır
WorktreeCreate / WorktreeRemoveBir worktree oluşturulur veya kaldırılırEvet
PreCompact / PostCompactBağlam sıkıştırmasından önce ve sonraYalnızca PreCompact
PreModelSwitch / PostModelSwitchModel değişmeden önce ve değiştikten sonraYalnızca PreModelSwitch
Elicitation / ElicitationResultBir MCP sunucusu sizden girdi istediğinde ve siz yanıt verdikten sonraEvet
SessionEndBir oturum sona erdiğindeHayır

Anthropic zaman zaman yeni event'ler ekliyor; güncel liste ve her event'in girdi alanları için hook referansına göz atın.

08Bildirimler için hangi event'ler önemli

İnsanların haberdar olmak istediği neredeyse her şeyi dört event karşılar:

  • "Claude işini bitirdi" için Stop. Stop hook rehberine bakın.
  • "Claude sizi bekliyor" için permission_prompt ve idle_prompt gibi türleriyle Notification. Notification hook rehberine bakın.
  • Bir izin gerektiği anda haberdar olmak ya da yanıt vermek için PermissionRequest. PermissionRequest rehberine bakın.
  • Claude'un çoktan seçmeli sorularını görmek veya yanıtlamak için AskUserQuestion aracında PreToolUse. Soruları telefondan yanıtlama rehberine bakın.

Doğrudan yapıştırılabilir bir masaüstü kurulumu için Claude Code bittiğinde nasıl bildirim alınır rehberiyle başlayın.

09Claude Code Notifier'ın yeri

Claude Code Notifier tamamen bu hook'lar üzerine kuruludur. Ücretsiz komut satırı aracı ccn; Mac, Windows ve Linux'ta çalışır. Kurulduğunda ~/.claude/settings.json dosyasına her biri ccn hook çalıştıran yedi hook girdisi ekler ve dosyanın tek seferlik bir yedeğini alır. ccn her event için birkaç milisaniye çalışıp kapanır, yani arka planda çalışır durumda hiçbir şey kalmaz.

Tek başına masaüstü bildirimleri gösterir. iPhone veya Android uygulaması eşleştirildiğinde aynı hook'lar yanıtlarınızı geri taşır: bir izne onay verebilir ya da reddedebilir, bir soruyu yanıtlayabilir veya Claude durduktan sonra sonraki talimatı gönderebilirsiniz. Bağımsız bir araçtır, Anthropic tarafından yapılmamıştır. Yalnızca bir log ya da lint adımına ihtiyacınız varsa kendi yazacağınız birkaç satır daha basittir. Ayrıntılar ccn sayfasında.

10SSS

Bir hook'u Claude'u beklemeden nasıl test ederim?

Betiğe örnek JSON pipe'layın ve çıkış kodunu kontrol edin: echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh; echo $?. Ardından doğru event altında kayıtlı olduğunu doğrulamak için Claude Code'da /hooks komutunu çalıştırın.

Hook'um neden çalışmıyor?

Yaygın nedenler şunlardır: settings.json içinde geçersiz JSON (sondaki virgüller, yorumlar), tam eşleşmeyen bir matcher (büyük/küçük harfe duyarlıdır), çalıştırılabilir olmayan bir betik ya da henüz güvenmediğiniz bir klasör. Neyin çalıştığını görmek için Claude Code'u claude --debug ile başlatıp debug log'unu okuyun. Tam liste sorun giderme kontrol listesinde.

Tüm hook'ları bir süreliğine nasıl kapatırım?

Bir ayar dosyasında "disableAllHooks": true değerini ayarlayın. Yalnızca tek bir çalıştırmada atlamak için Claude Code'u --settings '{"disableAllHooks": true}' ile başlatın. Tek bir hook'u kapatmak için ayrı bir anahtar yoktur; bunun yerine girdisini silersiniz. Hiçbiri, kuruluşunuzun managed settings ile tanımladığı hook'ları kapatamaz.

Varsayılan hook zaman aşımı nedir?

Command, HTTP ve MCP tool hook'ları için on dakika (600 saniye), prompt hook'ları için 30 saniye, agent hook'ları için 60 saniye. Birkaç event daha kısa varsayılanlar kullanır; ayrıca her handler'da timeout değerini saniye cinsinden ayarlayabilirsiniz.

Claude Code Notifier Claude Code işini bitirdiğinde veya size ihtiyaç duyduğunda telefonunuza push bildirimi alın, ardından oradan onaylayın, reddedin ya da yanıtlayın. ccn komut satırı aracı Mac, Windows ve Linux üzerinde ücretsizdir.
iOS için indirin Android için indirin ccn'i kurun

İlgili rehberler

  • Claude Code işini bitirdiğinde nasıl bildirim alınır"Bitti" için bir Stop hook, "girdi bekliyor" için bir Notification hook kullanın. Mac, Windows ve Linux için kopyala-yapıştır kurulumlar ve telefon bildirimleri.
  • Claude Code Notification hook: ne zaman tetiklenir ve nasıl kullanılırClaude Code'un Notification hook'u ne zaman tetiklenir, permission_prompt ve idle_prompt ne anlama gelir, hangi girdiyi alır ve tetiklenmeden önce neden bekler.
  • Claude Code Stop hook: Claude bitirdiğinde bir şey çalıştırınClaude Code'un Stop hook'u nasıl çalışır, hangi girdiyi alır, Claude bitirdiğinde nasıl komut çalıştırılır ve Claude'un güvenli şekilde devam etmesi nasıl sağlanır.
  • İzin isteklerini hook ile yanıtlama (PermissionRequest)Claude Code'un PermissionRequest hook'u nasıl çalışır, bir script'ten nasıl izin verilir veya reddedilir ve izin kuralları neden çoğu zaman daha iyi bir araçtır.
claude-code-notifier

Claude Code Notifier bağımsız bir üçüncü taraf uygulamasıdır. Anthropic, PBC ile bağlantılı değildir; Anthropic, PBC tarafından onaylanmamış veya desteklenmemektedir. "Claude" ve "Claude Code", Anthropic, PBC'nin ticari markalarıdır.

uygulamalar iOS Uygulaması Android Uygulaması macOS, Windows ve Linux için ccn Tüm rehberler
yasal Gizlilik Politikası Hizmet Koşulları Diğer diller © 2026 touchtap. Tüm hakları saklıdır. TouchTap Ltd, İngiltere ve Galler'de kayıtlıdır, şirket numarası 13942589.