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

İzin isteklerini hook ile yanıtlama (PermissionRequest)

Güncellenme: 31 Ekim 2026 · 6 dk okuma
bu sayfada 01PermissionRequest, PreToolUse ve Notification karşılaştırması 02Hook'un aldığı veriler 03Decision nesnesi 04Örnek: tek bir prompt'u otomatik onaylamak 05Örnek: komuta bakarak karar vermek 06Örnek: izin vermek ve oturum boyunca hatırlamak 07Çoğu zaman permission kuralı daha iyi bir araçtır 08Sık yapılan hatalar 09Claude Code Notifier'ın yeri 10SSS

Claude Code PermissionRequest hook'u, Claude Code size bir izin prompt'u göstermek üzereyken çalışır ve bu prompt'u sizin yerinize yanıtlayabilir. İzin vermek için hook 0 ile çıkar ve {"hookSpecificOutput": {"hookEventName": "PermissionRequest", "decision": {"behavior": "allow"}}} yazdırır; reddetmek için Claude'a yönelik bir message ile birlikte "behavior": "deny" kullanır. Tool adına göre eşleşir, deny kurallarınızı geçersiz kılamaz ve bu event'te 2 exit code'unun hiçbir etkisi yoktur. Hook bir karar yazdırmazsa normal prompt görünür.

01PermissionRequest, PreToolUse ve Notification karşılaştırması

İzinlerle ilgili üç hook event'i vardır ve her biri farklı bir iş görür:

EventNe zaman çalışırKarar verebilir mi?
PreToolUseİzin gerekip gerekmediğine bakılmaksızın her tool çağrısından önceEvet: allow, deny, ask veya defer
PermissionRequestYalnızca Claude Code size sormak üzereykenEvet: allow veya deny
Notification (permission_prompt)Siz uzaktayken bir prompt yaklaşık altı saniye bekledikten sonraHayır

Prompt'ların kendisiyle ilgileniyorsanız (yanıtlamak, loglamak veya bir yere iletmek) PermissionRequest kullanın. Altı saniyelik gecikme olmadan hemen tetiklenir. "Asla rm -rf çalıştırma" gibi her çağrıya uygulanması gereken kurallar için PreToolUse kullanın, çünkü hiçbir prompt görünmeyecek olsa bile çalışır. Bu event'in zamanlaması Notification hook rehberinde açıklanıyor.

02Hook'un aldığı veriler

Ortak alanların yanı sıra bir PermissionRequest hook'u, Claude'un yapmak istediği çağrının tool_name ve tool_input değerlerini ve isteğe bağlı bir permission_suggestions dizisini alır:

{
  "session_id": "abc123",
  "cwd": "/Users/...",
  "permission_mode": "default",
  "hook_event_name": "PermissionRequest",
  "tool_name": "Bash",
  "tool_input": {
    "command": "rm -rf node_modules",
    "description": "Remove node_modules directory"
  },
  "permission_suggestions": [
    {
      "type": "addRules",
      "rules": [{ "toolName": "Bash", "ruleContent": "rm -rf node_modules" }],
      "behavior": "allow",
      "destination": "localSettings"
    }
  ]
}

permission_suggestions, Claude Code'un bu istek için önereceği kural değişikliklerini içerir. Her diyalog kendi seçeneklerini oluşturduğu için diyalogdaki seçeneklerin birebir kopyası değildir.

03Decision nesnesi

hookSpecificOutput içinde bir decision döndürün:

AlanKullanın
behavior"allow" veya "deny"
updatedInputYalnızca allow. Tool'un tüm input'unu değiştirir, bu yüzden değişmeyen alanları da ekleyin
updatedPermissionsYalnızca allow. Uygulanacak izin değişiklikleri, örneğin kural eklemek veya modu değiştirmek
messageYalnızca deny. Claude'a nedenini söyler
interruptYalnızca deny. true olursa Claude'u da durdurur

Akılda tutmanız gereken iki kural:

  • Deny ve ask kuralları yine geçerlidir. "allow" döndüren bir hook, ayarlarınızdaki eşleşen bir deny kuralını geçersiz kılmaz; değiştirilmiş girdi de bu kurallara göre yeniden kontrol edilir.
  • Burada 2 çıkış kodu yok sayılır. Çoğu olayda 2 ile çıkmak işlemi engeller, ancak decision nesnesi olmadan 2 ile çıkan bir PermissionRequest hook'u prompt'u olduğu gibi bırakır. Reddetmek için kararı döndürün.

04Örnek: tek bir prompt'u otomatik onaylamak

Anthropic'in kendi örneği, Claude bir planı bitirdiğinde çıkan ExitPlanMode prompt'unu onaylar; böylece her seferinde size sorulmaz:

{
  "hooks": {
    "PermissionRequest": [
      {
        "matcher": "ExitPlanMode",
        "hooks": [
          {
            "type": "command",
            "command": "echo '{\"hookSpecificOutput\": {\"hookEventName\": \"PermissionRequest\", \"decision\": {\"behavior\": \"allow\"}}}'"
          }
        ]
      }
    ]
  }
}

Matcher'ları dar tutun. Boş bir matcher ya da genel bir allow ile birlikte .*, dosya yazma ve shell komutları dahil her prompt'u onaylar.

05Örnek: komuta bakarak karar vermek

Bu script (jq gerektirir) git push içeren her şeyi, Claude'un okuyabileceği bir gerekçeyle reddeder; diğer tüm prompt'ları ise hiçbir şey yazdırmayarak size bırakır:

#!/bin/bash
# ~/.claude/hooks/permission-check.sh
input=$(cat)
cmd=$(jq -r '.tool_input.command // empty' <<<"$input")

case "$cmd" in
  *"git push"*)
    jq -nc '{hookSpecificOutput: {hookEventName: "PermissionRequest",
             decision: {behavior: "deny",
                        message: "Pushing is not allowed from this session. Commit and stop."}}}'
    ;;
esac
exit 0
{
  "hooks": {
    "PermissionRequest": [
      {
        "matcher": "Bash",
        "hooks": [{ "type": "command", "command": "~/.claude/hooks/permission-check.sh" }]
      }
    ]
  }
}

Mesajdaki tırnak işaretleri bozulmaya yol açmasın diye JSON'u string birleştirerek değil, jq ile oluşturun. Ayrıca stdout'a başka hiçbir şeyin yazılmadığından emin olun. Shell profiliniz bir satır yazdırırsa Claude Code kararı okuyamaz.

06Örnek: izin vermek ve oturum boyunca hatırlamak

Bir isteği onaylayıp Claude'un oturum bitene kadar tekrar sormasını engellemek için destination: "session" içeren bir updatedPermissions girdisi ekleyin. Hook, aldığı permission_suggestions öğelerinden birini yalnızca destination'ı değiştirerek geri döndürebilir:

#!/bin/bash
input=$(cat)
jq -c '{hookSpecificOutput: {hookEventName: "PermissionRequest",
        decision: {behavior: "allow",
                   updatedPermissions: [(.permission_suggestions // [])[]
                                        | select(.type == "addRules")
                                        | .destination = "session"]}}}' <<<"$input"

Bu haliyle gördüğü her isteğe izin verir, bu yüzden dar bir matcher ile kullanın. Destination ayrıca localSettings, projectSettings veya userSettings olabilir; bunlar kuralı bellekte tutmak yerine bir ayar dosyasına yazar.

07Çoğu zaman permission kuralı daha iyi bir araçtır

Cevap hiç değişmiyorsa hook'a ihtiyacınız yok. Kuralı settings.json dosyasına ekleyin, Claude Code hiçbir şey çalıştırmadan uygular:

{
  "permissions": {
    "allow": ["Bash(npm run *)"],
    "deny": ["Bash(git push *)"]
  }
}

Kurallar önce deny, sonra ask, sonra allow sırasıyla değerlendirilir. Hook, kararın bir kuralın göremeyeceği bir şeye bağlı olduğu durumlarda işe yarar: günün saati, bulunduğunuz branch ya da başka bir yerden yanıt veren bir kişi gibi. Diğer yerleşik seçenekler için Permission modları açıklaması yazısına bakın.

08Sık yapılan hatalar

  • Etkileşimsiz çalıştırmalar. claude -p ile soru sorulacak kimse yoktur. PermissionRequest hook'ları yine çalışır ve hiçbiri karar döndürmezse çağrı reddedilir.
  • Zaman aşımları. Bir command hook'u varsayılan olarak 600 saniyeye kadar çalışabilir ve Claude bekler. Hook'unuz bir kişi gibi yavaş bir şeyi bekliyorsa timeout değerini (saniye cinsinden) ayarlayın.
  • Bazı prompt'lar onu tetiklemez. Sandbox içindeki bir komutun ağ isteği PermissionRequest çalıştırmaz. Bunun için permission_prompt bildirim türünü kullanın.
  • Güvenlik. "allow" döndüren bir hook, sizin adınıza ve kullanıcınızın yetkileriyle işlemleri onaylıyor demektir. Komut çalıştırabilen diğer kodlar gibi onu da gözden geçirin.

09Claude Code Notifier'ın yeri

PermissionRequest hook'u yazmanın en yaygın nedeni, klavyenin başında değilken prompt'ları yanıtlamaktır. Kendi yapacağınız bir çözümde hook'un isteği bir yere göndermesi, yanıtı beklemesi ve zaman aşımından önce döndürmesi gerekir. Bu yapılabilir; bazıları bunu bir chat bot ile kuruyor.

Claude Code Notifier bunu sizin için yapar. Ücretsiz komut satırı aracı ccn, Mac, Windows ve Linux üzerinde çalışır ve hook'larını ~/.claude/settings.json dosyasına kurar. iPhone veya Android uygulaması eşleştirildiğinde permission isteği telefona gelir; bir kez izin verebilir, oturum boyunca izin verebilir ya da reddedebilirsiniz. ccn bu kararı PermissionRequest hook'undan döndürür. Son 30 saniye içinde bir şey yazdıysanız beklenmez ve terminal her zamanki gibi sorar. Uzaktaysanız terminal, belirlediğiniz üst sınıra kadar (hold_ceiling_seconds, varsayılan 600) telefonu bekler ve klavyeye dokunduğunuz anda beklemeyi bırakır. Bağımsız bir araçtır, Anthropic tarafından yapılmamıştır. İş akışı için izinleri telefonunuzdan onaylama, güvenlik tarafı için uzaktan onay güvenli mi? yazılarına bakın.

10SSS

İzinleri bir hook ile nasıl otomatik onaylarım?

Dar bir matcher ile bir PermissionRequest hook'u ekleyin; hookSpecificOutput içinde "behavior": "allow" bulunan bir JSON kararı yazdırsın ve 0 ile çıksın. Aynı komuta her zaman izin verilecekse, settings.json içindeki bir permissions.allow kuralı daha basittir ve hook gerektirmez.

2 çıkış kodu neden isteği reddetmiyor?

PermissionRequest, 2 ile çıkışın dikkate alınmadığı olaylardan biridir. Claude Code bunu yok sayar ve normal prompt'u gösterir. Bunun yerine karar nesnesinde "behavior": "deny" döndürün.

Bir PermissionRequest hook'u deny kurallarımı geçersiz kılabilir mi?

Hayır. Deny ve ask kuralları yine değerlendirilir; bu nedenle hook'tan gelen bir "allow", eşleşen bir deny kuralını aşamaz. Döndürdüğünüz her updatedInput da bu kurallara göre kontrol edilir.

PermissionRequest ile PreToolUse arasındaki fark nedir?

PreToolUse her araç çağrısından önce çalışır ve allow, deny, ask veya defer yapabilir. PermissionRequest yalnızca Claude Code bir prompt göstermek üzereyken çalışır ve ona izin verebilir ya da reddedebilir. Politika için PreToolUse, prompt'ları yanıtlamak için PermissionRequest kullanın.

Hook'um hiçbir şey yazdırmazsa ne olur?

Hiçbir şey değişmez. Claude Code, hook hiç yokmuş gibi terminalde normal permission prompt'unu gösterir.

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 permission isteklerini telefonunuzdan onaylayınClaude Code'un PermissionRequest hook'u allow veya deny döndürebilir. Permission prompt'larını telefonunuzdan, elle ya da ccn ile nasıl yanıtlayacağınızı burada bulabilirsiniz.
  • Claude Code hook'ları: tüm olaylar ve ne işe yaradıklarıClaude Code hook'ları nedir, settings.json içinde nereye yazılır, matcher'lar, girdi ve exit code'lar nasıl çalışır ve her hook olayı ne işe yarar.
  • Claude Code izin modları açıklaması (default, acceptEdits, plan, bypassPermissions)Her Claude Code izin modunun (default, acceptEdits, plan, auto, dontAsk, bypassPermissions) ne yaptığı, nasıl geçiş yapılacağı ve her birinin ne zaman güvenli olduğu.
  • Claude Code işlemlerini telefonunuzdan onaylamak güvenli mi?Claude Code için uzaktan onayın nasıl çalıştığı, neyin ters gidebileceği, hangi verilerin bilgisayarınızdan çıktığı ve güvenliği sağlayan ayarlar.
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.