पाठ 18 / 25

Pre-Action Hooks

हर tool call से पहले अपनी नीति जाँच चलाएँ और साफ़ कारण के साथ रोकें।

हर कर्म से पहले चलने वाला कोड

Hook वह command है जिसे आपका agent tool तय क्षण पर अपने आप चलाता है। Pre-tool hook को योजित कर्म (tool का नाम और arguments) मिलता है, वह इस कोर्स के तर्क (parsed allowlist, path guard, protected paths) से उसे जाँच सकता है और ऐसे संदेश के साथ उसे रोक सकता है जिसे model पढ़कर बदलाव करता है। चूँकि harness hook चलाता है, यह तब भी काम करता है जब model भूल जाए या बहका दिया जाए। Hook inputs और exit-code परंपराएँ tool व version के अनुसार अलग हैं, इसलिए अपने tool का दस्तावेज़ देखें।

ऐसे नियम जो हर बार चलते हैं

Hooks और budgets guardrail विचारों को ऐसे कोड में बदलते हैं जो हर कर्म पर चलता है।

तीन हिस्से: पहले जाँच, बाद में जाँच, सीमा।
चित्र 6.1 — पहले जाँच, बाद में जाँच और सीमा।

Blocking hook का खाका

यह Claude Code की परंपरा का अनुसरण करता है (stdin पर JSON, exit code 2 रोकता है और stderr model को दिखाता है)। allowed function permissions खंड का parsed allowlist है; अन्य tools अलग formats उपयोग करते हैं।

#!/usr/bin/env python3
# .claude/hooks/check_bash.py
import json, sys
event = json.load(sys.stdin)
cmd = event.get("tool_input", {}).get("command", "")

if not allowed(cmd):        # parsed allowlist from earlier
    print(f"Blocked: '{cmd}' is not on the approved command list. "
          "Use a listed command or ask the user.", file=sys.stderr)
    sys.exit(2)
sys.exit(0)

Hooks तेज़ और साधारण रखें

धीमा या अस्थिर hook हर कर्म धीमा करता है और लोगों को उसे बंद करने का लालच देता है। उसे छोटा, निश्चित और अच्छी तरह परखा हुआ रखें, और hook ख़ुद crash हो तो fail closed (रोक) करें।

त्वरित जाँच: Hook कब विफल (रोक) होना चाहिए?

  • Closed: hook crash करे तो कर्म रोक दें
  • Open: hook crash करे तो कर्म allow
  • यादृच्छिक रूप से
  • कभी नहीं
Answer

Closed: hook crash करे तो कर्म रोक दें — Fail closed टूटी हुई जाँच को जोखिम भरे कर्म चुपचाप निकलने देने से रोकता है।