हुक और ऑटोमेशन
संदर्भ को स्वतः लोड करने के लिए SessionStart हुक को वायर करें। खतरनाक कमांड को ब्लॉक करने के लिए PreToolUse का उपयोग करें। अनुमोदन गेट के साथ क्रॉन पर Claude चलाएँ।
हुक वे कमांड हैं जिन्हें Claude Code विशिष्ट जीवनचक्र घटनाओं पर चलाता है। ~/.claude/settings.json में एक बार कॉन्फ़िगर करें; वे स्वचालित रूप से फायर होते हैं। हुक उस अनुशासन को लागू करते हैं जिसे आप अन्यथा भूल जाएंगे: हर सत्र में STATE.md लोड करना, कमिट करने से पहले स्टेज्ड .env फ़ाइलों की जाँच करना। सेटअप लागत 10 मिनट है। इसका लाभ स्थायी है।
SessionStart एक सत्र खुलते ही फायर होता है; यह जो कुछ भी प्रिंट करता है वह आपके पहले संदेश से पहले संदर्भ बन जाता है:
{
"hooks": {
"SessionStart": [
{
"command": "cat ~/notes/STATE.md ~/notes/MEMORY.md 2>/dev/null || true"
}
]
}
}|| true मायने रखता है: यदि फ़ाइलें गायब हैं तो सत्र प्रारंभ को न तोड़ें। हुक को 50ms से कम रखें और सत्र खुलने पर कोई नेटवर्क कॉल न करें। ताज़ा API डेटा चाहिए? एक क्रॉन चलाएँ जो एक स्थानीय फ़ाइल लिखता है; हुक में फ़ाइल लोड करें।
चार और हुक इवेंट:
Stop: एक सत्र समाप्त होने पर फायर होता है। अनुस्मारक के लिए उपयोग करें: "बंद करने से पहले: STATE.md अपडेट करें।"
PreToolUse: Claude द्वारा एक टूल को कॉल करने से पहले फायर होता है। आपकी सुरक्षा प्रवर्तन परत: खतरनाक कमांड को ब्लॉक करें, ऑडिट ट्रेल के लिए कॉल लॉग करें। Exit 0 कॉल की अनुमति देता है; exit 2 इसे ब्लॉक करता है।
PostToolUse: एक टूल के लौटने के बाद फायर होता है। एक फ़ाइल लिखने के बाद एक लिंटर चलाएँ, एक SQL माइग्रेशन के बाद RLS नीतियों की जाँच करें।
UserPromptSubmit: जब आप एंटर दबाते हैं तो फायर होता है। बाहरी सामग्री के लिए संदर्भ इंजेक्ट करें या प्रॉम्प्ट इंजेक्शन सुरक्षा लागू करें।
एक PreToolUse हुक जो rm -rf वाले किसी भी Bash कॉल को ब्लॉक करता है:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -q 'rm -rf'; then echo 'BLOCKED: rm -rf not allowed' >&2; exit 2; fi"
}
]
}
}matcher फ़ील्ड एक विशिष्ट टूल को लक्षित करता है। इसके बिना, हुक हर टूल कॉल पर फायर होता है। हुक को तेज़ और लक्षित रखने के लिए मैचर्स का उपयोग करें।
जब कोई हुक फायर नहीं हो रहा हो, तो क्रम में जाँच करें:
सिंटैक्स: वैध JSON? cat ~/.claude/settings.json | python3 -m json.tool चलाएँ।
फ़ाइल पथ: अपने टर्मिनल में हुक कमांड का मैन्युअल रूप से परीक्षण करें।
एग्जिट कोड: क्या || true गायब है?
गति: 3 सेकंड से अधिक? धीमे हिस्से को क्रॉन में ले जाएँ।
दो उत्पादन गोटचास। हर हुक पर एक स्पष्ट timeout फ़ील्ड सेट करें ताकि व्यवहार अनुमानित रहे। और हुक एक स्ट्रिप्ड वातावरण में चलते हैं, न कि आपके पूर्ण शेल में: यदि किसी हुक को एक पर्यावरण चर (जैसे एक Slack टोकन) की आवश्यकता है, तो हुक कमांड में अपनी .env को स्पष्ट रूप से स्रोत करें। यह हुक का सबसे आम कारण है जो आपके टर्मिनल में काम करते हैं लेकिन Claude Code में चुपचाप विफल हो जाते हैं।
क्रॉन-चालित Claude Code। वही एजेंट claude --headless के माध्यम से एक शेड्यूल पर चल सकता है: सुबह 7 बजे Slack पर एक सुबह की ब्रीफिंग पोस्ट की गई, हर 4 घंटे में सोशल मीडिया निगरानी, हर 30 मिनट में एक परिनियोजन स्वास्थ्य जांच।
महत्वपूर्ण पैटर्न: अनुमोदन गेट। क्रॉन ड्राफ्ट करता है, आप समीक्षा करते हैं, सिस्टम भेजता है। एक स्वायत्त एजेंट जो समीक्षा के बिना आउटबाउंड संदेश भेजता है, अंततः कुछ गलत भेजेगा: गलत टेम्पलेट, गलत दर्शक, गलत समय। वास्तुकला: एजेंट खोजता है और ड्राफ्ट करता है, मानव समीक्षा करता है और जारी करता है। कार्यान्वयन: एजेंट ड्राफ्ट को एक Slack चैनल पर लिखता है; जब तक कोई मानव अनुमोदित नहीं करता तब तक कुछ भी आउटबाउंड नहीं होता है। यह दर्जनों एजेंटों तक बढ़ता है बिना किसी के भी दुष्ट हुए।
चरणों में हुक प्रणाली का निर्माण करें:
चरण 1 (सप्ताह 1-2), हुक लोड करें: SessionStart STATE.md और MEMORY.md लोड करता है; Stop आपको अपडेट करने की याद दिलाता है।
चरण 2 (सप्ताह 3-4), गार्ड हुक: PreToolUse अपरिवर्तनीय कमांड (मुख्य पर बल-पुश, DROP TABLE, rm -rf) के लिए हार्ड ब्लॉक करता है।
चरण 3 (महीना 2+), ऑडिट हुक: PostToolUse जाँचता है कि वास्तव में क्या लिखा गया था: RLS नीतियों को याद करने वाले SQL माइग्रेशन, दर सीमित करने वाली नई API मार्ग, किसी भी लिखित फ़ाइल में रहस्य।
PostToolUse ऑडिट के लिए PreToolUse से अधिक मजबूत है क्योंकि यह लिखित फ़ाइल सामग्री, जमीनी सच्चाई को पढ़ता है, न कि केवल Claude का इरादा क्या था। अपनी वास्तविक विफलता मोड के आसपास हुक बनाएँ: दो हुक जो वास्तविक समस्याओं को हल करते हैं, दस सैद्धांतिक लोगों को हराते हैं।
SessionStart संदर्भ लोड करता है, Stop याद दिलाता है, PreToolUse खतरनाक कमांड को ब्लॉक करता है (exit 2), PostToolUse जाँचता है कि क्या लिखा गया था, और क्रॉन प्लस अनुमोदन गेट Claude को एक मानव के साथ एक निर्धारित प्रणाली में बदल देता है। एक हुक से शुरू करें: SessionStart में cat ~/notes/STATE.md 2>/dev/null || true। हर महीने अगला चरण जोड़ें।