संक्षिप्त सारांश: Claude Code हुक AI कोडिंग सत्रों के दौरान विशिष्ट जीवनचक्र बिंदुओं पर निष्पादित होने वाले स्वचालन स्क्रिप्ट हैं, जो डेवलपर्स को कस्टम कमांड चलाने, क्रियाओं को मान्य करने, कोड को प्रारूपित करने, सूचनाएं भेजने और प्रोजेक्ट नियमों को लागू करने की अनुमति देते हैं। ये हुक SessionStart, PreToolUse, और PostToolUse जैसी घटनाओं के माध्यम से Claude के वर्कफ़्लो के साथ एकीकृत होते हैं, कॉन्फ़िगर करने योग्य समय-सीमा और निकास कोड व्यवहार के साथ कमांड-आधारित, HTTP-आधारित और प्रॉम्प्ट-आधारित निष्पादन पैटर्न का समर्थन करते हैं।
Claude Code का हुक सिस्टम AI कोडिंग सहायक को एक सहायक उपकरण से एक पूर्ण स्वचालित विकास वातावरण में बदल देता है। अधिकांश डेवलपर्स यह नहीं समझते कि हुक के माध्यम से कितना नियंत्रण उपलब्ध है।
हालांकि, बात यह है - हुक केवल फ़ाइल संपादन के बाद स्क्रिप्ट चलाने के बारे में नहीं हैं। वे Claude की पूरी निर्णय लेने की प्रक्रिया के दौरान इंटरसेप्शन पॉइंट प्रदान करते हैं। इससे पहले कि यह कमांड निष्पादित करे। टूल कॉल विफल होने के बाद। जब उसे अनुमति की आवश्यकता हो। उपयोगकर्ता प्रॉम्प्ट को संसाधित करने से पहले भी।
यह मार्गदर्शिका आधिकारिक दस्तावेज़ीकरण द्वारा प्रदान की गई हर चीज़, साथ ही व्यावहारिक पैटर्न को भी कवर करती है जो सामुदायिक चर्चाओं से पता चलता है कि वे वास्तव में उत्पादन वातावरण में काम करते हैं।
Claude Code हुक वास्तव में क्या करते हैं
आधिकारिक Claude Code दस्तावेज़ीकरण के अनुसार, हुक उपयोगकर्ता-परिभाषित शेल कमांड, HTTP एंडपॉइंट, या प्रॉम्प्ट इंजेक्शन हैं जो Claude Code के जीवनचक्र में विशिष्ट बिंदुओं पर निष्पादित होते हैं। वे stdin के माध्यम से संरचित JSON इनपुट प्राप्त करते हैं और निकास कोड या HTTP प्रतिक्रियाओं के माध्यम से वर्कफ़्लो को नियंत्रित करते हैं।
स्वचालन अधिकांश गाइडों द्वारा सुझाए गए तरीकों से गहरा है। हुक पूरी तरह से टूल निष्पादन को ब्लॉक कर सकते हैं, Claude के तर्क में अतिरिक्त संदर्भ इंजेक्ट कर सकते हैं, बाहरी सेवाओं को ट्रिगर कर सकते हैं, और सत्यापन नियमों को लागू कर सकते हैं जिनका Claude को सम्मान करना चाहिए।
तीन मुख्य हुक प्रकार मौजूद हैं:
- कमांड हुक: stdout, stderr, और निकास कोड के माध्यम से संचार करने वाली शेल स्क्रिप्ट
- HTTP हुक: दूरस्थ एंडपॉइंट जो POST अनुरोध प्राप्त करते हैं और JSON प्रतिक्रियाएं लौटाते हैं
- प्रॉम्प्ट हुक: विशिष्ट घटनाओं पर Claude के संदर्भ में इंजेक्ट किए गए गतिशील निर्देश
प्रत्येक प्रकार विभिन्न स्वचालन पैटर्न को पूरा करता है। कमांड हुक स्थानीय सत्यापन और स्वरूपण को संभालते हैं। HTTP हुक बाहरी सेवाओं और डेटाबेस के साथ एकीकृत होते हैं। प्रॉम्प्ट हुक बाहरी प्रक्रियाओं के बिना Claude के व्यवहार को संशोधित करते हैं।
हुक जीवनचक्र और घटना प्रणाली
आधिकारिक दस्तावेज़ीकरण Claude Code के निष्पादन प्रवाह के दौरान कई हुक घटनाओं (SessionStart, UserPromptSubmit, PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, Notification, और अन्य) को परिभाषित करता है। प्रत्येक घटना के फायर होने के समय को समझना यह निर्धारित करता है कि कौन सा स्वचालन संभव हो जाता है।

| घटना | यह कब फायर होता है | ब्लॉक कर सकता है |
|---|---|---|
| SessionStart | जब एक सत्र शुरू या फिर से शुरू होता है | नहीं |
| UserPromptSubmit | जब आप एक प्रॉम्प्ट सबमिट करते हैं, Claude द्वारा संसाधित करने से पहले | हाँ |
| PreToolUse | एक टूल कॉल निष्पादित होने से पहले | हाँ |
| PermissionRequest | जब एक अनुमति संवाद दिखाई देता है | हाँ |
| PostToolUse | एक टूल कॉल सफल होने के बाद | नहीं |
| PostToolUseFailure | एक टूल कॉल विफल होने के बाद | नहीं |
| Notification | जब Claude Code एक सूचना भेजता है | नहीं |
| SubmitMessage | जब Claude उपयोगकर्ता को एक संदेश जमा करता है | नहीं |
| ContextCompaction | जब संदर्भ विंडो सीमा के करीब पहुंचती है | नहीं |
ब्लॉकिंग क्षमता सबसे महत्वपूर्ण है। PreToolUse हुक खतरनाक संचालन को निष्पादित होने से पहले रोक सकते हैं। निकास कोड 1 ऑपरेशन को ब्लॉक करता है। निकास कोड 0 इसे अनुमति देता है। निकास कोड 2 Claude को पुनर्विचार करने के लिए प्रेरित करता है।
लेकिन रुकिए। PostToolUse हुक कार्यों को पूर्ववत नहीं कर सकते क्योंकि टूल पहले ही निष्पादित हो चुका है। यह सीमा बताती है कि सत्यापन तर्क कैसे संरचित होता है। महत्वपूर्ण जांच PreToolUse में होनी चाहिए। सफाई और स्वरूपण PostToolUse में होने चाहिए।

Claude Code सेट अप करते समय AI टूल पर्क्स ब्राउज़ करें
यदि आप Claude Code हुक के साथ काम कर रहे हैं, तो आप शायद अपने वर्कफ़्लो के आसपास अन्य AI टूल भी चुन रहे होंगे। Get AI Perks AI और क्लाउड टूल के लिए स्टार्टअप क्रेडिट और सॉफ़्टवेयर छूटें एक ही स्थान पर एकत्र करता है। प्लेटफ़ॉर्म में 200+ ऑफ़र शामिल हैं, जिनमें से प्रत्येक के लिए पर्क्स शर्तें और क्लेम मार्गदर्शन हैं।
Claude या अन्य AI टूल पर्क्स की तलाश है?
Get AI Perks पर जांच करें:
- Claude और अन्य AI टूल ऑफ़र ब्राउज़ करें
- आवेदन करने से पहले पर्क्स शर्तों की तुलना करें
- अपने टूल स्टैक में स्टार्टअप छूटें खोजें
👉 वर्तमान AI सॉफ़्टवेयर पर्क्स का अन्वेषण करने के लिए Get AI Perks पर जाएं।
कॉन्फ़िगरेशन और फ़ाइल संरचना
हुक किसी प्रोजेक्ट के भीतर .claude/settings.json फ़ाइल में परिभाषित होते हैं। कॉन्फ़िगरेशन स्कीमा वैश्विक हुक और टूल-विशिष्ट मिलानकर्ताओं का समर्थन करता है जो फ़िल्टर करते हैं कि हुक कब निष्पादित होते हैं।
मूल कमांड हुक संरचना:
| { “hooks”: [ { “event”: “PostToolUse”, “command”: “prettier –write”, “args”: [“${file}”] } ] } |
${file} चर टूल इनपुट से वास्तविक फ़ाइल पथ तक विस्तारित होता है। आधिकारिक दस्तावेज़ीकरण के अनुसार, हुक कमांड और args फ़ील्ड में इन चर विस्तारों का समर्थन करते हैं।
हुक स्थान पदानुक्रम
Claude Code हुक परिभाषाओं के लिए कई स्थानों की जांच करता है, जिसमें एक स्पष्ट प्राथमिकता क्रम होता है:
- प्रोजेक्ट-स्तर: वर्तमान कार्यक्षेत्र में .claude/settings.json
- उपयोगकर्ता-स्तर: सभी सत्रों के लिए ~/.claude/settings.json
- प्लगइन-प्रदत्त: स्थापित प्लगइन्स के साथ बंडल किए गए हुक
प्रोजेक्ट हुक समान घटना के लिए उपयोगकर्ता हुक को ओवरराइड करते हैं। यह वैश्विक सूचना हैंडलर को बनाए रखते हुए प्रोजेक्ट-विशिष्ट स्वरूपण नियमों की अनुमति देता है।
चयनात्मक निष्पादन के लिए मिलानकर्ता पैटर्न
मिलानकर्ता प्रणाली हुक को विशिष्ट टूल या शर्तों के लिए फ़िल्टर करती है। मिलानकर्ताओं के बिना, हुक उनकी घटना के हर अवसर के लिए फायर होते हैं।
| { “hooks”: [ { “event”: “PreToolUse”, “matcher”: { “toolName”: “edit_file”, “pathPattern”: “src/**/*.ts” }, “command”: “./scripts/validate-typescript.sh” } ] } |
pathPattern फ़ील्ड ग्लोब सिंटैक्स को स्वीकार करता है। toolName फ़ील्ड Claude के अंतर्निहित टूल जैसे edit_file, execute_command, read_file, और create_directory के विरुद्ध मेल खाता है।
सामुदायिक चर्चाओं से पता चलता है कि मिलानकर्ता संयोजन AND तर्क के साथ काम करते हैं। हुक निष्पादित होने के लिए सभी निर्दिष्ट मिलानकर्ताओं का मिलान होना चाहिए।
कमांड हुक: शेल स्क्रिप्ट एकीकरण
कमांड हुक संरचित JSON इनपुट के साथ शेल कमांड या स्क्रिप्ट निष्पादित करते हैं। वे स्थानीय स्वचालन के लिए सबसे आम हुक प्रकार का प्रतिनिधित्व करते हैं।
आधिकारिक दस्तावेज़ीकरण निर्दिष्ट करता है कि कमांड हुक इस संरचना के साथ stdin के माध्यम से JSON प्राप्त करते हैं:
| { “event”: “PreToolUse”, “toolName”: “edit_file”, “toolInput”: { “path”: “src/app.ts”, “content”: “…” }, “sessionId”: “abc123”, “turnId”: “turn-456” }scripts इस इनपुट को निर्णय लेने के लिए पार्स करते हैं। एक Python सत्यापन हुक इस तरह दिख सकता है:#!/usr/bin/env python3 import sys import json input_data = json.load(sys.stdin) tool_input = input_data.get(‘toolInput’, {}) file_path = tool_input.get(‘path’, ”) if file_path.startswith(‘protected/’): print(“Cannot edit protected files”, file=sys.stderr) sys.exit(1) sys.exit(0) |
निकास कोड 0 ऑपरेशन की अनुमति देता है। निकास कोड 1 इसे ब्लॉक करता है और stderr संदेश Claude को दिखाता है। निकास कोड 2 घटना के आधार पर विशेष व्यवहार को ट्रिगर करता है।
निकास कोड 2 व्यवहार
आधिकारिक हुक संदर्भ दस्तावेज़ीकरण के अनुसार, निकास कोड 2 का घटना-विशिष्ट अर्थ है (PreToolUse: ब्लॉक करता है और पुनर्विचार के लिए प्रेरित करता है; UserPromptSubmit: ब्लॉक किए बिना संदर्भ प्रदान करता है; PermissionRequest: अनुमति को ब्लॉक करता है):
- PreToolUse: टूल को ब्लॉक करता है और stderr संदेश को संदर्भ के रूप में उपयोग करके Claude को पुनर्विचार करने के लिए प्रेरित करता है
- UserPromptSubmit: stderr आउटपुट को ब्लॉक किए बिना अतिरिक्त संदर्भ के रूप में प्रदान करता है
- PermissionRequest: अनुमति अनुदान को ब्लॉक करता है
यह हार्ड ब्लॉकिंग और अनुमति देने के बीच एक मध्य मैदान बनाता है। Claude को समस्या होने वाली कार्रवाई के बारे में प्रतिक्रिया मिलती है और वह अपने दृष्टिकोण को समायोजित कर सकता है।
अतुल्यकालिक कमांड हुक
async: true फ़्लैग Claude के वर्कफ़्लो को ब्लॉक किए बिना पृष्ठभूमि में हुक चलाता है। यह परिनियोजन सूचनाओं या मीट्रिक संग्रह जैसी धीमी संचालन के लिए महत्वपूर्ण है।
| { “event”: “PostToolUse”, “matcher”: { “toolName”: “execute_command” }, “command”: “./scripts/log-to-analytics.sh”, “async”: true, “timeout”: 30 } |
जब एक एसिंक हुक फायर होता है, तो Claude Code प्रक्रिया शुरू करता है और तुरंत जारी रहता है। timeout फ़ील्ड सेकंड में अधिकतम निष्पादन समय निर्धारित करता है। यदि निर्दिष्ट नहीं किया गया है, तो एसिंक हुक 10-मिनट की डिफ़ॉल्ट समय-सीमा का उपयोग करते हैं।
वास्तविक बात: एसिंक हुक संचालन को ब्लॉक नहीं कर सकते क्योंकि वे Claude के आगे बढ़ने के बाद चलते हैं। वे लॉगिंग, सूचनाओं और सफाई के लिए काम करते हैं - सत्यापन के लिए नहीं।
HTTP हुक: बाहरी सेवा एकीकरण
HTTP हुक दूरस्थ एंडपॉइंट पर JSON पेलोड POST करते हैं और निर्णय नियंत्रण के लिए प्रतिक्रियाओं को पार्स करते हैं। वे सत्यापन सेवाओं, डेटाबेस और तीसरे पक्ष के टूल के साथ एकीकरण को सक्षम करते हैं।
मूल HTTP हुक कॉन्फ़िगरेशन:
| { “event”: “PreToolUse”, “url”: “api.example.com/validate”, “headers”: { “Authorization”: “Bearer ${API_TOKEN}” }, “timeout”: 5 } |
पेलोड संरचना कमांड हुक इनपुट से मेल खाती है लेकिन HTTP POST बॉडी के रूप में आती है। प्रतिक्रिया Claude की अगली कार्रवाई निर्धारित करती है।
HTTP प्रतिक्रिया हैंडलिंग
आधिकारिक दस्तावेज़ीकरण के अनुसार, HTTP हुक स्थिति कोड और बॉडी सामग्री के आधार पर प्रतिक्रियाओं की व्याख्या करते हैं:
| स्थिति कोड | प्रभाव | संदेश स्रोत |
|---|---|---|
| 200 | संचालन की अनुमति दें | प्रतिक्रिया बॉडी (वैकल्पिक) |
| 400 | संचालन ब्लॉक करें | Claude को दिखाई गई प्रतिक्रिया बॉडी |
| 500 | हुक त्रुटि, संचालन की अनुमति दें | लॉग किया गया लेकिन Claude को नहीं दिखाया गया |
| अन्य | संचालन की अनुमति दें | हुक विफलता वर्कफ़्लो को ब्लॉक नहीं करती है |
प्रतिक्रिया बॉडी में एक संदेश फ़ील्ड शामिल हो सकता है जिसे Claude संदर्भ के रूप में देखता है। यह सत्यापन सेवाओं को यह समझाने में सक्षम बनाता है कि ऑपरेशन क्यों अवरुद्ध किया गया था।
पर्यावरण चर इंटरपोलेशन
HTTP हुक url, हेडर और अन्य स्ट्रिंग फ़ील्ड में ${VAR} सिंटैक्स का समर्थन करते हैं। चर उस वातावरण से विस्तारित होते हैं जहां Claude Code चलता है।
आधिकारिक MCP दस्तावेज़ीकरण के अनुसार, पर्यावरण चर विस्तार में एक डिफ़ॉल्ट फ़ॉलबैक सिंटैक्स शामिल है: ${VAR:-default} यदि सेट है तो VAR का विस्तार करता है, अन्यथा डिफ़ॉल्ट मान का उपयोग करता है।
सुरक्षा बाधा: GitHub इश्यू #28044 के अनुसार, HTTP हुक केवल allowedEnvVars कॉन्फ़िगरेशन फ़ील्ड में स्पष्ट रूप से सूचीबद्ध पर्यावरण चर तक पहुंच सकते हैं। यह आकस्मिक क्रेडेंशियल एक्सपोजर को रोकता है।
प्रॉम्प्ट हुक: संदर्भ इंजेक्शन
प्रॉम्प्ट हुक विशिष्ट घटनाओं पर Claude के संदर्भ में गतिशील निर्देश इंजेक्ट करते हैं। वे बाहरी प्रक्रियाओं या API कॉल के बिना व्यवहार को संशोधित करते हैं।
| { “event”: “SessionStart”, “prompt”: “आप एक TypeScript प्रोजेक्ट पर काम कर रहे हैं। हमेशा सख्त शून्य जांच का उपयोग करें और वादों के बजाय async/await को प्राथमिकता दें।” } |
इंजेक्ट किया गया पाठ उस सत्र के लिए Claude के सिस्टम निर्देशों का हिस्सा बन जाता है। प्रॉम्प्ट हुक टेम्प्लेट चर का भी उपयोग कर सकते हैं जो घटना डेटा के आधार पर विस्तारित होते हैं।
गतिशील प्रॉम्प्ट जनरेशन
आधिकारिक दस्तावेज़ीकरण के अनुसार, प्रॉम्प्ट हुक गतिशील प्रॉम्प्ट उत्पन्न करने वाले कमांड फ़ील्ड का समर्थन करते हैं:
| { “event”: “ContextCompaction”, “type”: “prompt”, “command”: “./scripts/generate-context-summary.sh” } |
कमांड stdin के माध्यम से मानक JSON इनपुट प्राप्त करता है और stdout पर प्रॉम्प्ट टेक्स्ट आउटपुट करता है। यह प्रोजेक्ट स्थिति के आधार पर संदर्भ-जागरूक निर्देश निर्माण को सक्षम बनाता है।
एजेंट-आधारित हुक
एजेंट हुक सीधे प्रॉम्प्ट इंजेक्शन के बजाय घटना को संभालने वाले सब-एजेंट को निर्दिष्ट करते हैं। सब-एजेंट को घटना के बारे में संदर्भ प्राप्त होता है और वह बहु-चरणीय तर्क कर सकता है।
| { “event”: “PostToolUseFailure”, “agent”: “debugger”, “agentPrompt”: “एक टूल कॉल विफल हो गया। त्रुटि का विश्लेषण करें और सुधारों का सुझाव दें।” } |
नामित सब-एजेंट को प्रोजेक्ट कॉन्फ़िगरेशन में परिभाषित किया जाना चाहिए। एजेंट हुक जटिल निर्णय तर्क को सक्षम करते हैं जो सरल प्रॉम्प्ट इंजेक्शन प्रदान नहीं कर सकता है।
व्यावहारिक हुक पैटर्न
सामुदायिक चर्चाएं और आधिकारिक उदाहरण विशिष्ट स्वचालन पैटर्न प्रकट करते हैं जो उत्पादन में मज़बूती से काम करते हैं।
संपादन के बाद कोड को स्वचालित रूप से प्रारूपित करें
सबसे आम पैटर्न Claude द्वारा फ़ाइलों को संपादित करने के बाद कोड को स्वचालित रूप से प्रारूपित करता है:
| { “event”: “PostToolUse”, “matcher”: { “toolName”: “edit_file”, “pathPattern”: “**/*.{js,ts,jsx,tsx}” }, “command”: “prettier”, “args”: [“–write”, “${toolInput.path}”] } |
${toolInput.path} चर संपादित फ़ाइल पथ का विस्तार करता है। PostToolUse सुनिश्चित करता है कि सफल संपादन के बाद स्वरूपण होता है लेकिन Claude के वर्कफ़्लो को ब्लॉक नहीं करता है।
संरक्षित फ़ाइल संशोधनों को ब्लॉक करें
PreToolUse हुक फ़ाइल सुरक्षा नियमों को लागू करते हैं:
| { “event”: “PreToolUse”, “matcher”: { “toolName”: “edit_file” }, “command”: “./scripts/check-protected.sh” } |
स्क्रिप्ट संरक्षित पैटर्न के विरुद्ध लक्ष्य पथ को मान्य करती है और निषिद्ध संपादन को ब्लॉक करने के लिए कोड 1 के साथ बाहर निकलती है।
जब Claude को इनपुट की आवश्यकता हो तो सूचित करें
आधिकारिक वर्कफ़्लो गाइड के अनुसार, Notification हुक डेस्कटॉप अलर्ट ट्रिगर कर सकते हैं या बाहरी सेवाओं पर संदेश भेज सकते हैं:
| { “event”: “Notification”, “command”: “osascript”, “args”: [“-e”, “display notification \”${message}\” with title \”Claude Code\””] } |
यह तब फायर होता है जब भी Claude Code कोई सूचना भेजता है, जिसमें उपयोगकर्ता इनपुट की प्रतीक्षा करते समय या कार्य पूर्ण होने के बाद शामिल है।
संकुचन के बाद संदर्भ को फिर से इंजेक्ट करें
ContextCompaction हुक बातचीत विंडो भरने पर महत्वपूर्ण संदर्भ को पुनर्स्थापित करते हैं:
| { “event”: “ContextCompaction”, “type”: “prompt”, “command”: “cat .claude/critical-context.md” } |
पुराने संदेशों को हटाने के बाद संकुचन Claude के संदर्भ में कमांड आउटपुट को वापस इंजेक्ट कर दिया जाता है। यह महत्वपूर्ण प्रोजेक्ट-विशिष्ट निर्देशों के नुकसान को रोकता है।
कॉन्फ़िगरेशन परिवर्तनों का ऑडिट करें
ट्रैक करें कि Claude कॉन्फ़िगरेशन फ़ाइलों को कब संशोधित करता है:
| { “event”: “PostToolUse”, “matcher”: { “toolName”: “edit_file”, “pathPattern”: “**/{package.json,.env,*.config.*}” }, “command”: “git”, “args”: [“add”, “${toolInput.path}”], “async”: true } |
एसिंक्रोनस निष्पादन मैन्युअल स्टेजिंग के बिना Claude को ब्लॉक करने से रोकता है जबकि git संचालन पूरा हो जाता है। यह कॉन्फ़िगरेशन परिवर्तनों का एक ऑडिट ट्रेल बनाता है।
JSON आउटपुट और निर्णय नियंत्रण
कमांड हुक सरल निकास कोड से परे विस्तृत प्रतिक्रिया प्रदान करने के लिए संरचित JSON आउटपुट कर सकते हैं। आधिकारिक संदर्भ के अनुसार, JSON आउटपुट बहु-फ़ील्ड प्रतिक्रियाओं को सक्षम करता है जिसे Claude निर्णय लेने के लिए व्याख्या करता है।
| { “allowed”: false, “message”: “यह फ़ाइल टीम नीति द्वारा संरक्षित है”, “suggestion”: “इसके बजाय src/features/ में एक नई फ़ाइल बनाएं” } |
allowed फ़ील्ड नियंत्रित करता है कि ऑपरेशन आगे बढ़ता है या नहीं। संदेश Claude को संदर्भ के रूप में दिखाई देता है। suggestion फ़ील्ड वैकल्पिक दृष्टिकोण प्रदान करता है।
JSON आउटपुट करने वाले हुक के लिए, उन्हें करना होगा:
- stdout पर मान्य JSON लिखें
- कोड 0 (अनुमत के लिए) या 1 (ब्लॉक के लिए) के साथ बाहर निकलें
- कम से कम अनुमत बूलियन फ़ील्ड शामिल करें
Claude Code JSON को पार्स करता है और प्रतिक्रिया लूप को बढ़ाने के लिए इसका उपयोग करता है। निकास कोड अभी भी प्राथमिक निर्णय निर्धारित करते हैं, लेकिन JSON समृद्ध संदर्भ प्रदान करता है।
हुक इनपुट फ़ील्ड संदर्भ
सभी हुक सामान्य फ़ील्ड के साथ stdin के माध्यम से एक JSON ऑब्जेक्ट प्राप्त करते हैं, साथ ही घटना-विशिष्ट डेटा भी। पूर्ण स्कीमा को समझना अधिक परिष्कृत हुक तर्क को सक्षम बनाता है।

सामान्य इनपुट फ़ील्ड
हर हुक को ये आधार फ़ील्ड मिलते हैं:
- event: हुक घटना का नाम (जैसे, "PreToolUse")
- sessionId: वर्तमान Claude सत्र के लिए अद्वितीय पहचानकर्ता
- turnId: वर्तमान वार्तालाप मोड़ के लिए पहचानकर्ता
- timestamp: घटना फायर होने का ISO 8601 टाइमस्टैंप
टूल घटना फ़ील्ड
PreToolUse, PostToolUse, और PostToolUseFailure घटनाओं में शामिल हैं:
- toolName: आमंत्रित किए जा रहे टूल का नाम (edit_file, execute_command, आदि)
- toolInput: टूल के इनपुट पैरामीटर युक्त ऑब्जेक्ट
- toolResponse: टूल आउटपुट डेटा (केवल PostToolUse)
- error: संदेश और कोड सहित त्रुटि विवरण (केवल PostToolUseFailure)
toolInput संरचना टूल के अनुसार भिन्न होती है। edit_file के लिए इसमें path और content शामिल हैं। execute_command के लिए इसमें command और args शामिल हैं।
अनुमति घटना फ़ील्ड
PermissionRequest घटनाओं में शामिल हैं:
- permissionType: अनुरोधित अनुमति का प्रकार (file_write, command_execute, आदि)
- requestedAction: अनुमति की आवश्यकता वाली विशिष्ट क्रिया
- resourcePath: प्रभावित फ़ाइल पथ या संसाधन पहचानकर्ता
MCP टूल हुक
आधिकारिक हुक संदर्भ के अनुसार, हुक mcpTool मिलानकर्ता फ़ील्ड का उपयोग करके मॉडल संदर्भ प्रोटोकॉल (MCP) टूल के विरुद्ध मिलान कर सकते हैं। यह हुक निष्पादन को सक्षम करता है जब Claude MCP सर्वर द्वारा प्रदान किए गए बाहरी टूल का उपयोग करता है।
| { “event”: “PreToolUse”, “matcher”: { “mcpTool”: “database/query” }, “command”: “./scripts/validate-sql.sh” } |
mcpTool मान प्रारूप server-name/tool-name में टूल नाम के विरुद्ध मेल खाता है। यह डेटाबेस क्वेरी, API कॉल, या अन्य बाहरी संचालन के लिए सत्यापन तर्क की अनुमति देता है।
GitHub सुविधा अनुरोध MCP के लिए गहरे एकीकरण में बढ़ती रुचि दर्शाते हैं, जिसमें हुक शामिल हैं जो MCP सर्वर सूचनाओं का निरीक्षण कर सकते हैं और बाहरी घटनाओं पर प्रतिक्रिया कर सकते हैं।
सुरक्षा संबंधी विचार
हुक Claude Code के समान अनुमतियों के साथ निष्पादित होते हैं। यह बहु-उपयोगकर्ता वातावरण और साझा कॉन्फ़िगरेशन के लिए सुरक्षा निहितार्थ बनाता है।
कमांड निष्पादन सैंडबॉक्स
GitHub इश्यू #28044 के अनुसार, HTTP हुक एक सैंडबॉक्स प्रॉक्सी के माध्यम से रूट होते हैं जो नेटवर्क एक्सेस को प्रतिबंधित करता है और पर्यावरण चर को फ़िल्टर करता है। कमांड हुक में कोई ऐसी प्रतिबंध नहीं होती है - वे पूर्ण शेल एक्सेस के साथ चलते हैं।
दस्तावेज़ीकरण इन प्रथाओं की अनुशंसा करता है:
- हुक कमांड में कभी भी क्रेडेंशियल संग्रहीत न करें
- संवेदनशील डेटा के लिए पर्यावरण चर का उपयोग करें
- ${…} विस्तारों से सभी इनपुट को मान्य करें
- बाहरी सेवाओं के लिए समय-सीमा सीमाएं लागू करें
- विफलताओं पर ब्लॉक करने से रोकने के लिए गैर-महत्वपूर्ण संचालन के लिए एसिंक हुक का उपयोग करें
हुक निष्पादन अलगाव
~/.claude/settings.json में उपयोगकर्ता-स्तरीय हुक सभी परियोजनाओं पर लागू होते हैं। यह विभिन्न विश्वास सीमाओं पर काम करते समय जोखिम पैदा करता है। प्रोजेक्ट-स्तरीय हुक उपयोगकर्ता हुक को ओवरराइड करते हैं लेकिन उन्हें पूरी तरह से अक्षम नहीं कर सकते।
Claude Code में /hooks मेनू वर्तमान सत्र के लिए सभी सक्रिय हुक दिखाता है। संवेदनशील परियोजनाओं पर काम करने से पहले इस सूची की समीक्षा करने से संभावित सुरक्षा चिंताओं की पहचान करने में मदद मिलती है।
डीबगिंग और समस्या निवारण
हुक विफलताएं हमेशा Claude की बातचीत में स्पष्ट रूप से सामने नहीं आती हैं। आधिकारिक दस्तावेज़ीकरण कई डीबगिंग दृष्टिकोण प्रदान करता है।
हुक निष्पादन लॉग
Claude Code सत्र डीबग आउटपुट में हुक निष्पादन लॉग करता है। समस्या निवारण गाइड के अनुसार, डीबग लॉगिंग को सक्षम करने से पता चलता है:
- प्रत्येक घटना के लिए कौन से हुक मेल खाते हैं
- प्रत्येक हुक को भेजा गया JSON इनपुट
- हुक प्रक्रियाओं से stdout और stderr आउटपुट
- निकास कोड और निष्पादन समय
- HTTP हुक के लिए HTTP प्रतिक्रिया कोड और बॉडी
Claude Code शुरू करने से पहले पर्यावरण में CLAUDE_DEBUG=1 सेट करके डीबग लॉगिंग सक्षम करें।
हुक को स्वतंत्र रूप से परीक्षण करना
कमांड हुक को मैन्युअल रूप से JSON इनपुट बनाकर Claude Code के बाहर परीक्षण किया जा सकता है:
| echo ‘{“event”:”PreToolUse”,”toolName”:”edit_file”,”toolInput”:{“path”:”test.txt”}}’ | ./scripts/my-hook.sh |
यह वास्तविक Claude संचालन को ट्रिगर किए बिना हुक तर्क को मान्य करता है। निकास कोड और stdout/stderr आउटपुट अपेक्षित व्यवहार से मेल खाना चाहिए।
सामान्य हुक विफलताएं
सामुदायिक चर्चाएं इन लगातार समस्याओं की पहचान करती हैं:
- समय-सीमा त्रुटियां: 10-मिनट की डिफ़ॉल्ट समय-सीमा धीमी संचालन के लिए बहुत कम है - timeout फ़ील्ड के साथ बढ़ाएं
- पथ विस्तार विफलताएं: ${file} जैसे चर उन घटनाओं के लिए अपरिभाषित हैं जिनमें फ़ाइल संदर्भ शामिल नहीं है
- अनुमति त्रुटियां: हुक स्क्रिप्ट में निष्पादन अनुमतियां नहीं हैं - chmod +x script.sh चलाएं
- JSON पार्स त्रुटियां: हुक से गलत JSON आउटपुट - लौटने से पहले jq के साथ मान्य करें
- पर्यावरण चर अनुपलब्धता: चर हुक प्रक्रिया में प्रचारित नहीं हो रहे हैं - Claude Code के पर्यावरण की जांच करें
हुक प्रदर्शन निहितार्थ
सिंक्रोनस हुक पूरा होने तक Claude के वर्कफ़्लो को ब्लॉक करते हैं। डिफ़ॉल्ट 10-मिनट की समय-सीमा अनिश्चित काल तक लटकने से रोकती है, लेकिन कई संचालन में छोटी देरी भी जमा हो जाती है।
अभ्यासकर्ता रिपोर्ट करते हैं कि सरल सत्यापन हुक का नगण्य प्रदर्शन प्रभाव होता है। फ़ाइल स्वरूपण हुक ध्यान देने योग्य लेकिन स्वीकार्य प्रदर्शन प्रभाव पैदा करते हैं। बाहरी API कॉल वर्कफ़्लो घर्षण पैदा कर सकते हैं। भारी संगणना संचालन एसिंक निष्पादन से लाभान्वित होते हैं।
हुक बैचिंग
कई हुक समान घटना से मेल खा सकते हैं। संदर्भ दस्तावेज़ीकरण के अनुसार, हुक परिभाषा क्रम में क्रमिक रूप से निष्पादित होते हैं। यदि कोई हुक ऑपरेशन को ब्लॉक करता है, तो शेष हुक निष्पादित नहीं होते हैं।
यह प्रदर्शन के लिए मायने रखता है। 200ms प्रत्येक पर पांच सिंक्रोनस हुक प्रति घटना एक सेकंड जोड़ते हैं। संबंधित सत्यापन को एक ही हुक में संयोजित करने से ओवरहेड कम हो जाता है।
उन्नत पैटर्न
बुनियादी स्वचालन से परे, हुक परिष्कृत वर्कफ़्लो अनुकूलन को सक्षम करते हैं।
स्टेटफुल हुक चेन
हुक फ़ाइलों या डेटाबेस का उपयोग करके निष्पादन के बीच स्थिति बनाए रख सकते हैं। एक PostToolUse हुक सफल संचालन को रिकॉर्ड कर सकता है जिसे एक PreToolUse हुक बाद में मान्य करता है:
| #!/bin/bash # सफल संपादन रिकॉर्ड करें echo “${toolInput.path}” >> .claude/edit-history.txt |
एक साथी PreToolUse हुक अनावश्यक संचालन को रोकने या क्रम बाधाओं को लागू करने के लिए इस इतिहास की जांच कर सकता है।
सशर्त हुक सक्रियण
पर्यावरण चर रनटाइम पर हुक व्यवहार को नियंत्रित करते हैं। CLAUDE_SKIP_HOOKS=1 सेट करने से आपातकालीन स्थितियों के लिए हुक अक्षम हो जाते हैं।
हुक स्वयं पर्यावरण झंडे की जांच कर सकते हैं:
| #!/bin/bash if [ “$STRICT_MODE” = “1” ]; तो # सख्त सत्यापन लागू करें exit 1 fi exit 0 |
यह कॉन्फ़िगरेशन परिवर्तनों के बिना विकास मोड बनाम उत्पादन मोड व्यवहार को सक्षम बनाता है।
बहु-चरणीय सत्यापन
PreToolUse हुक बहु-स्तरीय सत्यापन लागू कर सकते हैं जहां निकास कोड 2 Claude को चेतावनियों के साथ आगे बढ़ने की अनुमति देता है:
- कठोर विफलताएं (निकास 1): खतरनाक संचालन को ब्लॉक करें
- नरम चेतावनियां (निकास 2): Claude को पुनर्विचार करने के लिए सतर्क करें
- संदर्भ के साथ पास (निकास 0 + JSON): अतिरिक्त जानकारी प्रदान करें
यह एक सत्यापन स्पेक्ट्रम बनाता है जो बाइनरी अनुमति/अस्वीकार से अधिक सूक्ष्म है।
CI/CD के साथ एकीकरण
आधिकारिक प्लेटफ़ॉर्म एकीकरण दस्तावेज़ीकरण के अनुसार, Claude Code स्वचालित कोड समीक्षा और समस्या निवारण के लिए CI/CD वातावरण में चलता है। हुक इस स्वचालन का विस्तार करते हैं।
GitHub Actions वर्कफ़्लो हुक को परिभाषित कर सकते हैं जो स्वचालित सत्रों के दौरान टीम नीतियों को लागू करते हैं:
| – नाम: सख्त हुक के साथ Claude Code चलाएं env: STRICT_MODE: 1 run: | claude “इस पीआर की समीक्षा करें और सुधारों का सुझाव दें” |
STRICT_MODE फ़्लैग हुक स्क्रिप्ट में सशर्त सत्यापन तर्क को सक्रिय करता है। यह सुनिश्चित करता है कि स्वचालित सत्र इंटरैक्टिव विकास की तुलना में अधिक कठोर नियमों का पालन करते हैं।
ऑडिट ट्रेल जनरेशन
CI वातावरण में PostToolUse हुक सभी Claude संचालन के विस्तृत ऑडिट लॉग बनाते हैं:
| { “event”: “PostToolUse”, “command”: “./scripts/log-to-database.sh”, “async”: true } |
पृष्ठभूमि लॉगिंग प्रदर्शन को प्रभावित नहीं करती है लेकिन अनुपालन और डीबगिंग के लिए पूर्ण संचालन इतिहास प्रदान करती है।
$/hooks मेनू
Claude Code एक /hooks कमांड प्रदान करता है जो वर्तमान सत्र के लिए सभी सक्रिय हुक प्रदर्शित करता है। आधिकारिक दस्तावेज़ीकरण के अनुसार, यह मेनू दिखाता है:
- हुक घटना प्रकार
- मिलानकर्ता पैटर्न
- कमांड या URL एंडपॉइंट
- क्या हुक एसिंक चलता है
- कॉन्फ़िगरेशन स्रोत (परियोजना, उपयोगकर्ता, या प्लगइन)
एक हुक का चयन करना उसके पूर्ण कॉन्फ़िगरेशन को दिखाता है और वर्तमान सत्र के लिए इसे अस्थायी रूप से अक्षम करने की अनुमति देता है।
हुक अक्षम करें या हटाएं
हुक को "enabled": false को हुक परिभाषा में जोड़कर कॉन्फ़िगरेशन को हटाए बिना अक्षम किया जा सकता है। यह निष्पादन को रोकते हुए कॉन्फ़िगरेशन को संरक्षित करता है।
हुक को स्थायी रूप से हटाने के लिए, उपयुक्त settings.json फ़ाइल से प्रविष्टि हटा दें। परिवर्तन अगले सत्र पुनरारंभ पर या /reload चलाते समय प्रभावी होते हैं।
कौशल और एजेंटों में हुक
आधिकारिक दस्तावेज़ीकरण के अनुसार, कौशल या सब-एजेंट कॉन्फ़िगरेशन के भीतर परिभाषित हुक केवल तभी लागू होते हैं जब वह कौशल या एजेंट निष्पादित होता है। यह विशिष्ट वर्कफ़्लो के लिए विशेष स्वचालन को सक्षम करता है।
एक डीबगिंग सब-एजेंट में हुक शामिल हो सकते हैं जो सभी टूल कॉलों को लॉग करते हैं:
| { “name”: “debugger”, “hooks”: [ { “event”: “PostToolUse”, “command”: “./scripts/log-debug.sh”, “async”: true } ] } |
ये हुक सामान्य Claude Code संचालन के दौरान नहीं, बल्कि केवल डीबगर एजेंट सत्रों के दौरान फायर होते हैं।
पथ द्वारा स्क्रिप्ट का संदर्भ लें
हुक कमांड सापेक्ष और निरपेक्ष दोनों पथों का समर्थन करते हैं। सापेक्ष पथ उस प्रोजेक्ट रूट से हल होते हैं जहां Claude Code चलता है।
सामुदायिक चर्चाओं से सर्वोत्तम प्रथाएं:
- हुक स्क्रिप्ट को .claude/hooks/ निर्देशिका में संग्रहीत करें
- वर्णनात्मक नामों का प्रयोग करें: validate-typescript.sh न कि hook1.sh
- स्क्रिप्ट को निष्पादन योग्य बनाएं: chmod +x .claude/hooks/*.sh
- शेबांग लाइन शामिल करें: #!/usr/bin/env bash या #!/usr/bin/env python3
- bash स्क्रिप्ट में set -e के साथ त्रुटि हैंडलिंग जोड़ें
भविष्य के हुक क्षमताएं
GitHub सुविधा अनुरोध नियोजित और अनुरोधित हुक एन्हांसमेंट प्रकट करते हैं:
- इनलाइन स्क्रिप्ट हुक: बाहरी फ़ाइलों के बिना सीधे settings.json में हुक तर्क परिभाषित करें
- MCP टूल एकीकरण: शेल कमांड के बजाय हुक से MCP सर्वर टूल को आमंत्रित करें
- बहु-एजेंट सहयोग: हुक जो विभिन्न मशीनों पर Claude उदाहरणों के बीच समन्वय करते हैं
- उन्नत टाइपिंग: हुक इनपुट/आउटपुट स्कीमा के लिए टाइपस्क्रिप्ट प्रकार परिभाषाएँ
GitHub इश्यू #4274 के अनुसार, एकीकृत हुक प्रकार (MCP टूल, इनलाइन स्क्रिप्ट, API कॉल) के लिए अनुरोध कॉन्फ़िगरेशन को सरल बनाने और डेवलपर अनुभव को बेहतर बनाने का लक्ष्य रखता है।
अक्सर पूछे जाने वाले प्रश्न
क्या हुक Claude को खतरनाक कमांड निष्पादित करने से रोक सकते हैं?
हाँ। PreToolUse हुक किसी भी टूल निष्पादन को कोड 1 के साथ बाहर निकल कर ब्लॉक कर सकते हैं। इसमें फ़ाइल संपादन, कमांड निष्पादन और MCP टूल कॉल शामिल हैं। हुक को पूरा टूल इनपुट प्राप्त होता है और वह ऑपरेशन की अनुमति देने से पहले किसी भी मानदंड के विरुद्ध मान्य कर सकता है।
मैं एक हुक को डीबग कैसे करूं जो काम नहीं कर रहा है?
Claude Code शुरू करने से पहले CLAUDE_DEBUG=1 के साथ डीबग लॉगिंग सक्षम करें। हुक निष्पादन विवरण के लिए सत्र लॉग की जांच करें जिसमें कौन से हुक मेल खाते हैं, JSON इनपुट भेजा गया, stdout/stderr आउटपुट, और निकास कोड शामिल हैं। नमूना JSON को हुक स्क्रिप्ट में पाइप करके हुक का स्वतंत्र रूप से परीक्षण करें।
क्या हुक सभी Claude Code प्लेटफार्मों के साथ काम करते हैं?
हुक CLI, डेस्कटॉप ऐप और VS Code एक्सटेंशन में काम करते हैं। आधिकारिक दस्तावेज़ीकरण के अनुसार, हुक जहां भी Claude Code फ़ाइल सिस्टम तक पहुंच के साथ चलता है, वहां निष्पादित होते हैं। ब्राउज़र-आधारित Claude और मोबाइल ऐप सैंडबॉक्सिंग बाधाओं के कारण हुक का समर्थन नहीं करते हैं।
क्या हुक Claude के प्रतिक्रियाओं या व्यवहार को संशोधित कर सकते हैं?
प्रॉम्प्ट हुक ऐसे निर्देश इंजेक्ट करते हैं जो Claude के व्यवहार को प्रभावित करते हैं। एजेंट हुक घटनाओं को विशेष सब-एजेंटों को सौंपते हैं। हालांकि, हुक सीधे Claude के उत्पन्न पाठ या तर्क प्रक्रिया को संशोधित नहीं कर सकते हैं - वे संदर्भ प्रदान करके और संचालन को अवरुद्ध करके काम करते हैं।
एसिंक और सिंक हुक के बीच क्या अंतर है?
सिंक्रोनस हुक पूरा होने या समय-सीमा तक Claude के वर्कफ़्लो को ब्लॉक करते हैं। अतुल्यकालिक हुक पृष्ठभूमि में बिना ब्लॉक किए चलते हैं। सिंक हुक निकास कोड के माध्यम से संचालन को रोक सकते हैं। एसिंक हुक ब्लॉक नहीं कर सकते क्योंकि Claude हुक के पूरा होने से पहले जारी रहता है। लॉगिंग और सूचनाओं के लिए एसिंक, सत्यापन के लिए सिंक का उपयोग करें।
मैं एक टीम में हुक कैसे साझा करूं?
संस्करण नियंत्रण में .claude/settings.json फ़ाइल को कमिट करें। प्रोजेक्ट-स्तरीय हुक उन सभी टीम सदस्यों पर लागू होते हैं जो रिपॉजिटरी को क्लोन करते हैं। संगठन-व्यापी नीतियों के लिए, टीमें एक साझा उपयोगकर्ता-स्तरीय सेटिंग्स फ़ाइल बनाए रख सकती हैं जिसे सदस्य ~/.claude/settings.json पर कॉपी करते हैं।
क्या HTTP हुक फ़ायरवॉल के पीछे आंतरिक API को कॉल कर सकते हैं?
हाँ, यदि Claude Code उन API तक नेटवर्क पहुंच वाले वातावरण में चलता है। HTTP हुक Claude Code चलाने वाली मशीन से मानक POST अनुरोध करते हैं। कॉर्पोरेट फ़ायरवॉल और VPN सामान्य रूप से लागू होते हैं। दस्तावेज़ीकरण में उल्लिखित सैंडबॉक्स प्रॉक्सी पर्यावरण चर एक्सपोज़र को नियंत्रित करता है, नेटवर्क रूटिंग को नहीं।
क्या हुक Claude Code के टोकन उपयोग को बढ़ाते हैं?
प्रॉम्प्ट हुक Claude के संदर्भ में टेक्स्ट इंजेक्ट करते हैं, जो टोकन का उपभोग करता है। कमांड और HTTP हुक सीधे टोकन उपयोग को प्रभावित नहीं करते हैं, लेकिन उनका आउटपुट (त्रुटि संदेश, सुझाव) वार्तालाप संदर्भ का हिस्सा बन जाता है। निकास कोड 2 व्याख्यात्मक संदेशों के साथ निकास कोड 1 की तुलना में अधिक संदर्भ जोड़ता है।
निष्कर्ष
Claude Code हुक AI सहायक को एक शक्तिशाली उपकरण से एक पूर्ण स्वचालित विकास मंच में बदलते हैं। घटना प्रणाली Claude के वर्कफ़्लो में - सत्र आरंभीकरण से लेकर संदर्भ संकुचन तक - अवरोधन बिंदु प्रदान करती है।
कमांड हुक स्थानीय सत्यापन और स्वरूपण को संभालते हैं। HTTP हुक बाहरी सेवाओं और डेटाबेस को एकीकृत करते हैं। प्रॉम्प्ट हुक संदर्भ इंजेक्शन के माध्यम से व्यवहार को संशोधित करते हैं। साथ में, ये स्वचालन पैटर्न को सक्षम करते हैं जो टीम नीतियों को लागू करते हैं, कोड गुणवत्ता बनाए रखते हैं, और मौजूदा विकास अवसंरचना के साथ एकीकृत होते हैं।
मिलानकर्ता प्रणाली हुक को विशिष्ट टूल और फ़ाइल पैटर्न तक फ़िल्टर करती है। निकास कोड और JSON आउटपुट निर्णय प्रवाह को नियंत्रित करते हैं। एसिंक निष्पादन धीमी संचालन पर अवरोधन को रोकता है। पूर्ण कॉन्फ़िगरेशन स्कीमा सरल ऑटो-फ़ॉर्मेटिंग से लेकर जटिल बहु-चरणीय सत्यापन तक सब कुछ का समर्थन करता है।
कोड स्वरूपण के लिए बुनियादी PostToolUse हुक से शुरू करें। नीतियों के उभरने के साथ PreToolUse सत्यापन जोड़ें। व्यवहार संशोधन के लिए प्रॉम्प्ट हुक के साथ प्रयोग करें। टीम-व्यापी प्रवर्तन के लिए HTTP एकीकरण बनाएं।
नई क्षमताओं के शिप होने पर पूर्ण हुक संदर्भ और अद्यतन कॉन्फ़िगरेशन स्कीमा के लिए आधिकारिक Claude Code दस्तावेज़ीकरण देखें।

