Claude Code Hooks. Լրիվ Ուղեցույց (2026)

Author Avatar
Andrew
AI Perks Team
8,855
Claude Code Hooks. Լրիվ Ուղեցույց (2026)

Արագ ամփոփում. Claude Code hook-երը ավտոմատացման սկրիպտներ են, որոնք կատարվում են AI կոդավորման նստաշրջանների կյանքի ցիկլի որոշակի կետերում, թույլ տալով մշակողներին կատարել մաքսային հրամաններ, հաստատել գործողությունները, ձևաչափել կոդը, ուղարկել ծանուցումներ և կիրառել նախագծի կանոնները։ Այս hook-երը ինտեգրվում են Claude-ի աշխատանքային հոսքին այնպիսի իրադարձությունների միջոցով, ինչպիսիք են SessionStart, PreToolUse և PostToolUse, աջակցելով հրամանային, HTTP-ի վրա հիմնված և prompt-ի վրա հիմնված կատարման ձևերին՝ կազմաձևվող ժամկետներով և ելքային կոդի վարքագծով։

Claude Code-ի hook համակարգը AI կոդավորման օգնականը վերածում է օգտակար գործիքից ամբողջովին ավտոմատացված մշակման միջավայրի։ Մշակողների մեծ մասը չի գիտակցում hook-երի միջոցով հասանելի վերահսկողության չափը։

Ահա գլխավորը՝ hook-երը ոչ միայն ֆայլերի փոփոխություններից հետո սկրիպտներ գործարկելու մասին են։ Նրանք տրամադրում են միջամտության կետեր Claude-ի ամբողջ որոշում կայացնելու գործընթացում։ Մինչև այն կկատարի հրամանը։ Գործիքի կանչը ձախողվելուց հետո։ Երբ նրան թույլտվություն է հարկավոր։ Նույնիսկ օգտվողի prompts-ը մշակելուց առաջ։

Այս ուղեցույցը ընդգրկում է այն ամենը, ինչը տրամադրում է պաշտոնական փաստաթղթերը, գումարած գործնական ձևեր, որոնք համայնքի քննարկումները բացահայտում են, որոնք իրականում աշխատում են արտադրական միջավայրերում։

Ի՞նչ են իրականում անում Claude Code Hook-երը

Ըստ Claude Code-ի պաշտոնական փաստաթղթերի, hook-երը օգտվողի կողմից սահմանված shell հրամաններ են, HTTP վերջակետեր կամ prompt ներարկումներ, որոնք կատարվում են Claude Code-ի կյանքի ցիկլի որոշակի կետերում։ Նրանք ստանում են կառուցվածքային JSON մուտք stdin-ի միջոցով և վերահսկում աշխատանքային հոսքը ելքային կոդերի կամ HTTP պատասխանների միջոցով։

Ավտոմատացումն ավելի խորն է, քան մեծ մասը ուղեցույցների ենթադրում է։ Hook-երը կարող են ամբողջովին արգելափակել գործիքի կատարումը, լրացուցիչ կոնտեքստ ներարկել Claude-ի մտահանգումներում, գործարկել արտաքին ծառայություններ և կիրառել հաստատման կանոններ, որոնց Claude-ը պետք է հնազանդվի։

Կան երեք հիմնական hook տեսակ.

  • Հրամանային hook-եր. Shell սկրիպտներ, որոնք հաղորդակցվում են stdout, stderr և ելքային կոդերի միջոցով։
  • HTTP hook-եր. Հեռավոր վերջակետեր, որոնք ստանում են POST հարցումներ և վերադարձնում JSON պատասխաններ։
  • Prompt hook-եր. Դինամիկ հրահանգներ, որոնք ներարկվում են Claude-ի կոնտեքստին որոշակի իրադարձություններում։

Յուրաքանչյուր տեսակ ծառայում է տարբեր ավտոմատացման ձևեր։ Հրամանային hook-երը մշակում են տեղական հաստատում և ձևավորում։ HTTP hook-երը ինտեգրվում են արտաքին ծառայությունների և բազաների հետ։ Prompt hook-երը փոփոխում են Claude-ի վարքագիծը արտաքին գործընթացների միջոցով։

Hook Կյանքի Ցիկլ և Իրադարձությունների Համակարգ

Պաշտոնական փաստաթղթերը սահմանում են բազմաթիվ hook իրադարձություններ (SessionStart, UserPromptSubmit, PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, Notification և այլն), որոնք կատարվում են Claude Code-ի կատարման հոսքի ընթացքում։ Յուրաքանչյուրը երբ է կատարվում հասկանալը որոշում է, թե որ ավտոմատացումն է հնարավոր։

Claude Code hook events and their execution flow during a typical session
ԻրադարձությունԵ՞րբ է կատարվումԿարող է արգելափակել 
SessionStartԵրբ նստաշրջանը սկսվում կամ վերսկսվում էՈչ
UserPromptSubmitԵրբ դուք ներկայացնում եք prompt, մինչև Claude-ը մշակում է այնԱյո
PreToolUseՄինչև գործիքի կանչը կատարվիԱյո
PermissionRequestԵրբ հայտնվում է թույլտվության երկխոսությունԱյո
PostToolUseԳործիքի կանչը հաջողվելուց հետոՈչ
PostToolUseFailureԳործիքի կանչը ձախողվելուց հետոՈչ
NotificationԵրբ Claude Code-ը ծանուցում է ուղարկումՈչ
SubmitMessageԵրբ Claude-ը հաղորդագրություն է ներկայացնում օգտատիրոջըՈչ
ContextCompactionԵրբ կոնտեքստային պատուհանը մոտենում է սահմաններինՈչ

Արգելափակման հնարավորությունը ամենակարևորն է։ PreToolUse hook-երը կարող են կանխել վտանգավոր գործողությունները մինչև դրանց կատարումը։ Exit code 1-ը արգելափակում է գործողությունը։ Exit code 0-ը թույլատրում է այն։ Exit code 2-ը դրդում է Claude-ին վերանայել։

Բայց սպասեք։ PostToolUse hook-երը չեն կարող չեղարկել գործողությունները, քանի որ գործիքն արդեն կատարվել է։ Այս սահմանափակումը ձևավորում է, թե ինչպես է կառուցվում հաստատման տրամաբանությունը։ Կրիտիկական ստուգումները պատկանում են PreToolUse-ին։ Մաքրումը և ձևավորումը պատկանում են PostToolUse-ին։

Թերթեք AI Գործիքային Perks-երը Claude Code-ը Կարգավորելիս

Եթե դուք աշխատում եք Claude Code hook-երի հետ, դուք նաև կարող եք ընտրել այլ AI գործիքներ ձեր աշխատանքային հոսքի շուրջ։ Get AI Perks-ը հավաքում է ստարտափ վարկեր և ծրագրային զեղչեր AI և cloud գործիքների համար մեկ տեղում։ Պլատֆորմը ներառում է 200+ առաջարկներ, յուրաքանչյուրի համար perks պայմաններով և պահանջի ուղեցույցներով։

Փնտրում եք Claude կամ Այլ AI Գործիքային Perks-եր?

Ստուգեք Get AI Perks-ը՝

  • թերթել Claude-ը և այլ AI գործիքային առաջարկները
  • համեմատել perks պայմանները դիմելուց առաջ
  • գտնել ստարտափ զեղչեր ձեր գործիքային փաթեթում

👉 Այցելեք Get AI Perks-ը՝ ներկայիս AI ծրագրային perks-երը ուսումնասիրելու համար։

Կարգաւորում և Ֆայլային Կառուցվածք

Hook-երը սահմանվում են .claude/settings.json ֆայլում՝ նախագծի ներսում։ Կարգաւորման սխեման աջակցում է գլոբալ hook-երին և գործիքին-հատուկ մատչերներին, որոնք զտում են, երբ hook-երն են կատարվում։

Հիմնական հրամանային hook կառուցվածք:

{
  “hooks”: [
    {
      “event”: “PostToolUse”,
      “command”: “prettier –write”,
      “args”: [“${file}”]
    }
  ]
}

${file} փոփոխականը ընդլայնվում է գործիքային մուտքի իրական ֆայլի ուղուն։ Ըստ պաշտոնական փաստաթղթերի, hook-երը աջակցում են այս փոփոխական ընդլայնումները հրամանային և args դաշտերում։

Hook Դիրքի Հիերարխիա

Claude Code-ը ստուգում է բազմաթիվ վայրեր hook սահմանումների համար, հստակ առաջնահերթության կարգով:

  1. Նախագծային մակարդակ. .claude/settings.json ընթացիկ աշխատատեղում
  2. Օգտատիրոջ մակարդակ. ~/.claude/settings.json բոլոր նստաշրջանների համար
  3. Plugin-ի տրամադրած. Hook-եր՝ տեղադրված plugin-ների հետ փաթեթավորված

Նախագծային hook-երը գերակշռում են օգտատիրոջ hook-երի վրա նույն իրադարձության համար։ Սա թույլ է տալիս նախագծին-հատուկ ձևավորման կանոններ, պահպանելով գլոբալ ծանուցման բաժանորդներին:

Մատչերի Ձևաչափեր Ընտրովի Կատարման համար

Մատչեր համակարգը զտում է hook-երը դեպի որոշակի գործիքներ կամ պայմաններ։ Առանց մատչերների, hook-երը կատարվում են իրենց իրադարձության յուրաքանչյուր դեպքի համար։

{
  “hooks”: [
    {
      “event”: “PreToolUse”,
      “matcher”: {
        “toolName”: “edit_file”,
        “pathPattern”: “src/**/*.ts”
      },
      “command”: “./scripts/validate-typescript.sh”
    }
  ]
}

pathPattern դաշտը ընդունում է glob սինտաքս։ toolName դաշտը համընկնում է Claude-ի ներկառուցված գործիքների հետ, ինչպիսիք են edit_file, execute_command, read_file, և create_directory:

Համայնքային քննարկումները ցույց են տալիս, որ մատչեր համադրությունները աշխատում են AND տրամաբանությամբ։ Բոլոր նշված մատչերները պետք է համընկնեն, որպեսզի hook-ը կատարվի։

Հրամանային Hook-եր: Shell Սկրիպտների Ինտեգրում

Հրամանային hook-երը կատարում են shell հրամաններ կամ սկրիպտներ՝ կառուցվածքային JSON մուտքով։ Նրանք ներկայացնում են ամենատարածված hook տեսակը տեղական ավտոմատացման համար։

Պաշտոնական փաստաթղթերը նշում են, որ հրամանային hook-երը ստանում են JSON stdin-ի միջոցով այս կառուցվածքով:

{
  “event”: “PreToolUse”,
  “toolName”: “edit_file”,
  “toolInput”: {
    “path”: “src/app.ts”,
    “content”: “…”
  },
  “sessionId”: “abc123”,
  “turnId”: “turn-456”
}Scripts parse this input to make decisions. A Python validation hook might look like:#!/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)

Exit code 0-ը թույլատրում է գործողությունը։ Exit code 1-ը արգելափակում է այն և stderr հաղորդագրությունը ցույց է տալիս Claude-ին։ Exit code 2-ը գործարկում է հատուկ վարքագիծ՝ կախված իրադարձությունից։

Exit Code 2 Վարքագիծ

Ըստ պաշտոնական hooks հղման փաստաթղթերի, exit code 2-ը ունի իրադարձություն-հատուկ իմաստ (PreToolUse: արգելափակում է և խնդրում վերանայել; UserPromptSubmit: տրամադրում է կոնտեքստ առանց արգելափակման; PermissionRequest: արգելափակում է թույլտվությունը):

  • PreToolUse. Արգելափակում է գործիքը և խնդրում Claude-ին վերանայել stderr հաղորդագրությունը՝ որպես կոնտեքստ։
  • UserPromptSubmit. Դիտարկում է stderr ելքը որպես լրացուցիչ կոնտեքստ՝ առանց արգելափակման։
  • PermissionRequest. Արգելափակում է թույլտվությունը։

Սա ստեղծում է միջին գոտի կոշտ արգելափակման և թույլատրման միջև։ Claude-ը ստանում է հետադարձ կապ, թե ինչու գործողությունը կարող է խնդրահարույց լինել, և կարող է փոխել իր մոտեցումը։

Ասինխրոն Հրամանային Hook-եր

async: true դրոշը գործարկում է hook-երը ֆոնային ռեժիմում՝ չարգելափակելով Claude-ի աշխատանքային հոսքը։ Սա կարևոր է դանդաղ գործողությունների համար, ինչպիսիք են deployment ծանուցումները կամ մետրիկայի հավաքումը։

{
  “event”: “PostToolUse”,
  “matcher”: {
    “toolName”: “execute_command”
  },
  “command”: “./scripts/log-to-analytics.sh”,
  “async”: true,
  “timeout”: 30
}

Երբ async hook-ը կատարվում է, Claude Code-ը գործարկում է գործընթացը և անմիջապես շարունակում։ timeout դաշտը սահմանում է առավելագույն կատարման ժամանակը վայրկյաններով։ Եթե չի նշված, async hook-երը օգտագործում են 10-րոպեանոց լռելյայն ժամկետ։

Իրական խոսք. async hook-երը չեն կարող արգելափակել գործողությունները, քանի որ դրանք կատարվում են այն բանից հետո, երբ Claude-ը շարունակում է։ Նրանք աշխատում են logging, ծանուցումների և մաքրման համար՝ ոչ թե հաստատման։

HTTP Hook-եր: Արտաքին Ծառայության Ինտեգրում

HTTP hook-երը POST JSON payload-ներ են ուղարկում հեռավոր վերջակետերին և վերլուծում պատասխանները՝ որոշում կայացնելու համար։ Նրանք հնարավորություն են տալիս ինտեգրվել հաստատման ծառայությունների, բազաների և երրորդ կողմի գործիքների հետ։

Հիմնական HTTP hook-ի կարգաւորում:

{
  “event”: “PreToolUse”,
  “url”: “api.example.com/validate”,
  “headers”: {
    “Authorization”: “Bearer ${API_TOKEN}”
  },
  “timeout”: 5
}

Payload-ի կառուցվածքը համընկնում է հրամանային hook-ի մուտքի հետ, բայց ժամանում է որպես HTTP POST մարմին։ Պատասխանը որոշում է Claude-ի հաջորդ գործողությունը։

HTTP Պատասխանի Մշակում

Ըստ պաշտոնական փաստաթղթերի, HTTP hook-երը մեկնաբանում են պատասխանները՝ ելնելով կարգավիճակի կոդից և մարմնի բովանդակությունից:

Կարգավիճակի ԿոդԱզդեցությունՀաղորդագրության Աղբյուր 
200Թույլատրել գործողությունըՊատասխանի մարմին (ըստ ցանկության)
400Արգելափակել գործողությունըՊատասխանի մարմինը ցուցադրվում է Claude-ին
500Hook-ի սխալ, թույլատրել գործողությունըԳրանցված է, բայց չի ցուցադրվում Claude-ին
ԱյլԹույլատրել գործողությունըHook-ի ձախողումը չի արգելափակում աշխատանքային հոսքը

Պատասխանի մարմինը կարող է ներառել message դաշտ, որը Claude-ը տեսնում է որպես կոնտեքստ։ Սա թույլ է տալիս հաստատման ծառայություններին բացատրել, թե ինչու է գործողությունը արգելափակվել։

Շրջակա Միջավայրի Փոփոխականների Փոխարինում

HTTP hook-երը աջակցում են ${VAR} սինտաքսը url, headers և այլ string դաշտերում։ Փոփոխականները ընդլայնվում են Claude Code-ի կատարման միջավայրից։

Ըստ MCP-ի պաշտոնական փաստաթղթերի, շրջակա միջավայրի փոփոխականների ընդլայնումը ներառում է լռելյայն fallback սինտաքս. ${VAR:-default} ընդլայնվում է VAR-ով, եթե սահմանված է, հակառակ դեպքում օգտագործում է լռելյայն արժեքը։

Անվտանգության սահմանափակում. Ըստ GitHub issue #28044-ի, HTTP hook-երը կարող են մուտք գործել միայն այն շրջակա միջավայրի փոփոխականներին, որոնք հստակ նշված են allowedEnvVars կարգաւորման դաշտում։ Սա կանխում է պատահական հավաստագրերի բացահայտումը։

Prompt Hook-եր: Կոնտեքստի Ներարկում

Prompt hook-երը ներարկում են դինամիկ հրահանգներ Claude-ի կոնտեքստին որոշակի իրադարձություններում։ Նրանք փոփոխում են վարքագիծը՝ առանց արտաքին գործընթացների կամ API կանչերի։

{
  “event”: “SessionStart”,
  “prompt”: “Դուք աշխատում եք TypeScript նախագծի վրա։ Միշտ օգտագործեք strict null checks և նախընտրեք async/await-ը promises-ի վրա։”
}

Ներարկված տեքստը դառնում է Claude-ի համակարգային հրահանգների մասը այդ նստաշրջանի համար։ Prompt hook-երը կարող են նաև օգտագործել template փոփոխականներ, որոնք ընդլայնվում են՝ ելնելով իրադարձության տվյալներից։

Դինամիկ Prompt Ստեղծում

Ըստ պաշտոնական փաստաթղթերի, prompt hook-երը աջակցում են հրամանային դաշտերին, որոնք ստեղծում են դինամիկ prompts:

{
  “event”: “ContextCompaction”,
  “type”: “prompt”,
  “command”: “./scripts/generate-context-summary.sh”
}

Հրամանը ստանում է ստանդարտ JSON մուտք stdin-ի միջոցով և արտահանում է prompt տեքստը stdout-ին։ Սա թույլ է տալիս կոնտեքստ-գիտակցված հրահանգների ստեղծում, որոնք հիմնված են նախագծի վիճակի վրա։

Գործակալ-Հիմնված Hook-եր

Գործակալ hook-երը նշում են ենթագործակալ, որը մշակում է իրադարձությունը՝ ուղղակի prompt ներարկման փոխարեն։ Ենթագործակալը ստանում է կոնտեքստ իրադարձության մասին և կարող է կատարել բազմափուլ մտահանգում։

{
  “event”: “PostToolUseFailure”,
  “agent”: “debugger”,
  “agentPrompt”: “Գործիքի կանչը ձախողվեց։ Վերլուծեք սխալը և առաջարկեք լուծումներ։”
}

Անունով ենթագործակալը պետք է սահմանվի նախագծի կարգաւորման մեջ։ Գործակալ hook-երը թույլ են տալիս բարդ որոշում կայացնելու տրամաբանություն, որը պարզ prompt ներարկումը չի կարող ապահովել։

Գործնական Hook Ձևեր

Համայնքային քննարկումները և պաշտոնական օրինակները բացահայտում են կոնկրետ ավտոմատացման ձևեր, որոնք հուսալիորեն աշխատում են արտադրության մեջ:

Ավտո-Ձևավորել Կոդը Փոփոխություններից Հետո

Ամենատարածված ձևը ավտոմատ կերպով ձևավորում է կոդը, երբ Claude-ը փոփոխում է ֆայլերը:

{
  “event”: “PostToolUse”,
  “matcher”: {
    “toolName”: “edit_file”,
    “pathPattern”: “**/*.{js,ts,jsx,tsx}”
  },
  “command”: “prettier”,
  “args”: [“–write”, “${toolInput.path}”]
}

${toolInput.path} փոփոխականը ընդլայնվում է փոփոխված ֆայլի ուղուց։ PostToolUse-ը ապահովում է, որ ձևավորումը կատարվի հաջողված փոփոխություններից հետո, բայց չի արգելափակում Claude-ի աշխատանքային հոսքը։

Արգելափակել Պահպանված Ֆայլերի Փոփոխությունները

PreToolUse hook-երը կիրառում են ֆայլերի պահպանման կանոնները:

{
  “event”: “PreToolUse”,
  “matcher”: {
    “toolName”: “edit_file”
  },
  “command”: “./scripts/check-protected.sh”
}

Սկրիպտը հաստատում է թիրախային ուղին պաշտպանված ձևերի դեմ և ավարտվում է 1 կոդով՝ արգելելով արգելված փոփոխությունները:

Ստանալ Ծանուցումներ, Երբ Claude-ին Մուտք է Հարկավոր

Ըստ պաշտոնական աշխատանքային հոսքի ուղեցույցի, Notification hook-երը կարող են գործարկել desktop ահազանգեր կամ հաղորդագրություններ ուղարկել արտաքին ծառայություններին:

{
  “event”: “Notification”,
  “command”: “osascript”,
  “args”: [“-e”, “display notification \”${message}\” with title \”Claude Code\””]
}

Սա կատարվում է ամեն անգամ, երբ Claude Code-ը ծանուցում է ուղարկում, ներառյալ, երբ սպասում է օգտատիրոջ մուտքին կամ առաջադրանքի ավարտից հետո։

Վերա-Ներարկել Կոնտեքստը Կոմպակտացումից Հետո

ContextCompaction hook-երը վերականգնում են կարևոր կոնտեքստը, երբ զրույցի պատուհանը լցվում է:

{
  “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 Արտահանում և Որոշումների Վերահսկում

Հրամանային hook-երը կարող են արտահանել կառուցվածքային JSON՝ ավելի մանրամասն հետադարձ կապ տրամադրելու համար, պարզ ելքային կոդերից դուրս։ Ըստ պաշտոնական հղման, JSON արտահանումը թույլ է տալիս բազմադաշտ պատասխաններ, որոնք Claude-ը մեկնաբանում է՝ որոշումներ կայացնելու համար։

{
  “allowed”: false,
  “message”: “Այս ֆայլը պաշտպանված է թիմի քաղաքականությամբ”,
  “suggestion”: “Ստեղծեք նոր ֆայլ src/features/ դաշտում։”
}

allowed դաշտը վերահսկում է, արդյոք գործողությունը կշարունակվի։ Հաղորդագրությունը հայտնվում է Claude-ին՝ որպես կոնտեքստ։ suggestion դաշտը տրամադրում է այլընտրանքային մոտեցումներ։

Հուկերի համար JSON արտահանելու համար, դրանք պետք է.

  1. Գրել վավեր JSON stdout-ին
  2. Ավարտվել 0 (թույլատրվածի համար) կամ 1 (արգելվածի համար) կոդով
  3. Ներառել առնվազն allowed բուլյան դաշտ

Claude Code-ը վերլուծում է JSON-ը և օգտագործում այն՝ հետադարձ կապի հանգույցը հարստացնելու համար։ Exit կոդերը դեռ որոշում են հիմնական որոշումը, բայց JSON-ը ապահովում է ավելի հարուստ կոնտեքստ։

Hook Մուտքային Դաշտերի Հղում

Բոլոր hook-երը ստանում են JSON օբյեկտ stdin-ի միջոցով՝ ընդհանուր դաշտերով, գումարած իրադարձություն-հատուկ տվյալներ։ Ամբողջական սխեման հասկանալը թույլ է տալիս ավելի բարդ hook տրամաբանություն։

Hook input JSON schema showing common fields and event-specific extensions

Ընդհանուր Մուտքային Դաշտեր

Յուրաքանչյուր hook ստանում է այս հիմնական դաշտերը:

  • event. Hook-ի իրադարձության անունը (օր.՝ "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 Գործիքային Hook-եր

Ըստ պաշտոնական hooks հղման, hook-երը կարող են համընկնել Model Context Protocol (MCP) գործիքների հետ՝ օգտագործելով mcpTool մատչեր դաշտը։ Սա հնարավորություն է տալիս hook-երի կատարմանը, երբ Claude-ը օգտագործում է MCP սերվերների կողմից տրամադրվող արտաքին գործիքներ:

{
  “event”: “PreToolUse”,
  “matcher”: {
    “mcpTool”: “database/query”
  },
  “command”: “./scripts/validate-sql.sh”
}

mcpTool արժեքը համընկնում է գործիքի անվան հետ `server-name/tool-name` ձևաչափով։ Սա թույլ է տալիս հաստատման տրամաբանություն database queries, API calls, կամ այլ արտաքին գործողությունների համար։

GitHub-ի հատկությունների խնդրանքները ցույց են տալիս MCP ինտեգրման աճող հետաքրքրություն, ներառյալ hook-երը, որոնք կարող են ստուգել MCP սերվերի ծանուցումները և արձագանքել արտաքին իրադարձություններին:

Անվտանգության )').' ');

Hook-երը կատարվում են Claude Code-ի նույն թույլտվություններով։ Սա ստեղծում է անվտանգության հետևանքներ բազմաօգտատեր միջավայրերի և համօգտագործված կարգաւորումների համար:

Հրամանի Կատարման Sandbox

Ըստ GitHub issue #28044-ի, HTTP hook-երը անցնում են sandbox proxy-ի միջով, որը սահմանափակում է ցանցային մուտքը և զտում է շրջակա միջավայրի փոփոխականները։ Հրամանային hook-երը նման սահմանափակումներ չունեն - դրանք կատարվում են լիարժեք shell մուտքով:

Փաստաթղթերը խորհուրդ են տալիս այս պրակտիկաները.

  • Երբեք հավաստագրեր մի պահեք hook հրամաններում
  • Օգտագործեք շրջակա միջավայրի փոփոխականներ զգայուն տվյալների համար
  • Հաստատեք բոլոր մուտքերը ${...} ընդլայնումներից
  • Կիրառեք ժամկետային սահմանափակումներ արտաքին ծառայությունների համար
  • Օգտագործեք async hook-եր ոչ-կրիտիկական գործողությունների համար, որպեսզի կանխեք ձախողումների արգելափակումը

Hook Կատարման Մեկուսացում

Օգտատիրոջ մակարդակի hook-երը ~/.claude/settings.json-ում կիրառվում են բոլոր նախագծերում։ Սա ռիսկեր է ստեղծում տարբեր վստահության սահմաններում աշխատելիս։ Նախագծային մակարդակի hook-երը գերակշռում են օգտատիրոջ hook-երը, բայց չեն կարող ամբողջովին անջատել դրանք:

Claude Code-ի /hooks մենյուն ցույց է տալիս բոլոր ակտիվ hook-երը ընթացիկ նստաշրջանի համար։ Այս ցուցակը վերանայելը՝ զգայուն նախագծերի վրա աշխատելուց առաջ, օգնում է բացահայտել պոտենցիալ անվտանգության մտահոգությունները:

Debugging և Մտահանգում

Hook-ի ձախողումները միշտ չէ, որ հստակ երևում են Claude-ի զրույցում։ Պաշտոնական փաստաթղթերը տրամադրում են մի քանի debugging մոտեցումներ:

Hook Կատարման Գրանցումներ

Claude Code-ը գրանցում է hook-ի կատարումը նստաշրջանի debug ելքին։ Ըստ troubleshooting ուղեցույցի, debug գրանցման միացումը բացահայտում է:

  • Որ hook-երն են համընկել յուրաքանչյուր իրադարձության համար
  • JSON մուտքը, որը ուղարկվել է յուրաքանչյուր hook-ին
  • Stdout և stderr ելքը hook գործընթացներից
  • Exit կոդերը և կատարման ժամանակը
  • HTTP պատասխանի կոդերը և մարմինները HTTP hook-երի համար

Միացրեք debug գրանցումը՝ սահմանելով CLAUDE_DEBUG=1 շրջակա միջավայրում՝ Claude Code-ը գործարկելուց առաջ:

Hook-երի Անկախ Փորձարկում

Հրամանային hook-երը կարող են փորձարկվել Claude Code-ից դուրս՝ ձեռքով կառուցելով JSON մուտք:

echo ‘{“event”:”PreToolUse”,”toolName”:”edit_file”,”toolInput”:{“path”:”test.txt”}}’ | ./scripts/my-hook.sh

Սա հաստատում է hook տրամաբանությունը՝ չգործարկելով Claude-ի իրական գործողությունները։ Exit code-ը և stdout/stderr ելքը պետք է համապատասխանեն սպասվող վարքագծին:

Ընդհանուր Hook Ձախողումներ

Համայնքային քննարկումները բացահայտում են այս հաճախակի խնդիրները:

  • Timeout սխալներ. 10-րոպեանոց լռելյայն ժամկետը չափազանց կարճ է դանդաղ գործողությունների համար - ավելացրեք timeout դաշտով
  • Path ընդլայնման ձախողումներ. Փոփոխականները, ինչպիսիք են ${file}, անորոշ են այն իրադարձությունների համար, որոնք չեն ներառում ֆայլային կոնտեքստ
  • Թույլտվության սխալներ. Hook սկրիպտներին բավարար կատարման թույլտվություններ չկան - կատարեք chmod +x script.sh
  • JSON վերլուծման սխալներ. Hook-երից ոչ պատշաճ JSON ելք - հաստատեք jq-ով՝ նախքան վերադարձնելը
  • Շրջակա միջավայրի փոփոխականների անմատչելիություն. Փոփոխականները չեն փոխանցվում hook գործընթացին - ստուգեք Claude Code-ի միջավայրը

Hook Կատարողականության Հետևանքներ

Սինխրոն hook-երը արգելափակում են Claude-ի աշխատանքային հոսքը մինչև ավարտը։ Լռելյայն 10-րոպեանոց ժամկետը կանխում է անվերջ կախումները, բայց նույնիսկ կարճ ուշացումները կուտակվում են բազմաթիվ գործողությունների ընթացքում:

Գործնական մասնագետները հաղորդում են, որ պարզ հաստատման hook-երը ունեն աննշան կատարողականության ազդեցություն։ Ֆայլերի ձևավորման hook-երը առաջացնում են նկատելի, բայց ընդունելի կատարողականության ազդեցություն։ Արտաքին API-ի կանչերը կարող են ստեղծել աշխատանքային հոսքի խոչընդոտներ։ Ծանր հաշվողական գործողությունները օգուտ են ստանում ասինխրոն կատարումից:

Hook Փաթեթավորում

Բազմաթիվ hook-եր կարող են համընկնել նույն իրադարձության հետ։ Ըստ հղման փաստաթղթերի, hook-երը կատարվում են հաջորդաբար՝ սահմանման կարգով։ Եթե որևէ hook արգելափակի գործողությունը, մնացած hook-երը չեն կատարվի:

Սա կարևոր է կատարողականության համար։ Հինգ սինխրոն hook յուրաքանչյուրը 200 մմ-ով ավելացնում է մեկ վայրկյան մեկ իրադարձության համար։ Առնչվող հաստատումները մեկ hook-ում համատեղելը նվազեցնում է ավելորդ ծախսը:

Advanced Ձևեր

Հիմնական ավտոմատացումից դուրս, hook-երը թույլ են տալիս բարդ աշխատանքային հոսքի հարմարեցում:

Stateful Hook Շղթաներ

Hook-երը կարող են պահպանել վիճակը՝ կատարումների միջև՝ օգտագործելով ֆայլեր կամ բազաներ։ PostToolUse hook-ը կարող է գրանցել հաջողված գործողությունները, որոնք PreToolUse hook-ը հետագայում կհաստատի:

#!/bin/bash
# Record successful edits
echo “${toolInput.path}” >> .claude/edit-history.txt

Ուղեկից PreToolUse hook-ը կարող է ստուգել այս պատմությունը՝ կանխելու կրկնվող գործողությունները կամ կիրառելու կարգի սահմանափակումներ:

Պայմանական Hook Ակտիվացում

Շրջակա միջավայրի փոփոխականները վերահսկում են hook-երի վարքագիծը կատարման ժամանակ։ CLAUDE_SKIP_HOOKS=1-ը սահմանելը անջատում է hook-երը արտակարգ իրավիճակների համար:

Hook-երն ինքները կարող են ստուգել շրջակա միջավայրի դրոշակները:

#!/bin/bash
if [ “$STRICT_MODE” = “1” ]; then
  # Apply strict validation
  exit 1
fi
exit 0

Սա թույլ է տալիս մշակման ռեժիմը ընդդեմ արտադրական ռեժիմի վարքագծի՝ առանց կարգաւորման փոփոխությունների:

Բազմափուլ Հաստատում

PreToolUse hook-երը կարող են իրականացնել բազմաշերտ հաստատում, որտեղ exit code 2-ը թույլ է տալիս Claude-ին շարունակել զգուշացումներով:

  1. Կոշտ ձախողումներ (exit 1). Արգելափակում է վտանգավոր գործողությունները
  2. Փափուկ զգուշացումներ (exit 2). Ծանուցում է Claude-ին՝ վերանայելու համար
  3. Անցում կոնտեքստով (exit 0 + JSON). Լրացուցիչ տեղեկատվություն է տրամադրում

Սա ստեղծում է հաստատման սպեկտր, որն ավելի նրբորեն է, քան binary թույլատրել/հրաժարվել:

Ինտեգրում CI/CD-ի Հետ

Ըստ պաշտոնական պլատֆորմի ինտեգրման փաստաթղթերի, Claude Code-ը գործարկվում է CI/CD միջավայրերում՝ ավտոմատացված կոդի վերանայման և խնդիրների վերլուծման համար։ Hook-երը ընդլայնում են այս ավտոմատացումը:

GitHub Actions աշխատանքային հոսքերը կարող են սահմանել hook-եր, որոնք կիրառում են թիմային քաղաքականություններ ավտոմատացված նստաշրջանների ընթացքում:

– name: Run Claude Code with strict hooks
  env:
    STRICT_MODE: 1
  run: |
    claude “Review this PR and suggest improvements”

STRICT_MODE դրոշը ակտիվացնում է պայմանական հաստատման տրամաբանությունը hook սկրիպտներում։ Սա ապահովում է, որ ավտոմատացված նստաշրջանները հետևեն ավելի կոշտ կանոններին, քան ինտերակտիվ մշակումը:

Աուդիտային Հետքի Ստեղծում

PostToolUse hook-երը CI միջավայրերում ստեղծում են Claude-ի բոլոր գործողությունների մանրամասն աուդիտային գրանցամատյաններ:

{
  “event”: “PostToolUse”,
  “command”: “./scripts/log-to-database.sh”,
  “async”: true
}

Ֆոնային գրանցումը չի ազդում կատարողականության վրա, բայց ապահովում է գործողությունների ամբողջական պատմություն համապատասխանության և debugging-ի համար:

The /hooks Մենյու

Claude Code-ը տրամադրում է /hooks հրաման, որը ցույց է տալիս բոլոր ակտիվ hook-երը ընթացիկ նստաշրջանի համար։ Ըստ պաշտոնական փաստաթղթերի, այս մենյուն ցույց է տալիս:

  • Hook իրադարձության տեսակը
  • Մատչերի ձևաչափերը
  • Հրամանը կամ URL վերջակետը
  • Արդյո՞ք hook-ը կատարվում է async
  • Կարգաւորման աղբյուրը (նախագիծ, օգտատեր կամ plugin)

Hook-ը ընտրելը ցույց է տալիս դրա ամբողջական կարգաւորումը և թույլ է տալիս ժամանակավորապես անջատել այն ընթացիկ նստաշրջանի համար:

Անջատել կամ Հեռացնել Hook-երը

Hook-երը կարող են անջատվել՝ առանց կարգաւորումը հեռացնելու՝ ավելացնելով "enabled": false hook-ի սահմանմանը։ Սա պահպանում է կարգաւորումը՝ միաժամանակ կանխելով կատարումը:

Hook-ը մշտապես հեռացնելու համար, ջնջեք դրա գրառումը համապատասխան settings.json ֆայլից։ Փոփոխությունները ուժի մեջ են մտնում հաջորդ նստաշրջանի վերսկսումից կամ /reload կատարելուց հետո:

Hook-եր Գիտելիքներում և Գործակալներում

Ըստ պաշտոնական փաստաթղթերի, գիտելիքի կամ ենթագործակալի կարգաւորումներում սահմանված hook-երը կիրառվում են միայն այն ժամանակ, երբ այդ գիտելիքը կամ գործակալը կատարվում է։ Սա թույլ է տալիս մասնագիտացված ավտոմատացում կոնկրետ աշխատանքային հոսքերի համար:

Debugging ենթագործակալը կարող է ներառել hook-եր, որոնք գրանցում են բոլոր գործիքային կանչերը:

{
  “name”: “debugger”,
  “hooks”: [
    {
      “event”: “PostToolUse”,
      “command”: “./scripts/log-debug.sh”,
      “async”: true
    }
  ]
}

Այս hook-երը կատարվում են միայն debugger գործակալի նստաշրջանների ընթացքում, ոչ թե Claude Code-ի սովորական գործողության ժամանակ:

Հղում Scripts Ուղուց

Hook հրամանները աջակցում են ինչպես հարաբերական, այնպես էլ բացարձակ ուղիներ։ Հարաբերական ուղիները լուծվում են նախագծի արմատից, որտեղ Claude Code-ը գործում է:

Լավագույն պրակտիկաներ համայնքային քննարկումներից:

  • Hook սկրիպտները պահեք .claude/hooks/ դաշտում
  • Օգտագործեք նկարագրական անուններ. validate-typescript.sh, ոչ թե hook1.sh
  • Դարձրեք սկրիպտները կատարելի. chmod +x .claude/hooks/*.sh
  • Ներառեք shebang տողը. #!/usr/bin/env bash կամ #!/usr/bin/env python3
  • Ավելացրեք սխալների մշակում՝ set -e bash սկրիպտներում

Ապագա Hook Հնարավորություններ

GitHub-ի հատկությունների խնդրանքները բացահայտում են պլանավորված և խնդրված hook բարելավումներ:

  • Inline script hook-եր. Hook տրամաբանությունը սահմանեք ուղղակի settings.json-ում՝ առանց արտաքին ֆայլերի
  • MCP գործիքային ինտեգրում. MCP սերվերի գործիքներ կանչեք hook-երից՝ shell հրամանների փոխարեն
  • Բազմագործակալ համագործակցություն. Hook-եր, որոնք համակարգում են Claude-ի ինստանսների միջև տարբեր մեքենաներում
  • Բարելավված types. TypeScript տիպի սահմանումներ hook մուտքային/ելքային սխեմաների համար

Ըստ GitHub issue #4274-ի, ինտեգրված hook տեսակների (MCP գործիք, inline script, API կանչ) խնդրանքը նպատակ ունի պարզեցնել կարգաւորումը և բարելավել մշակողի փորձը:

Հաճախ Տրվող Հարցեր

Կարո՞ղ են hook-երը կանխել Claude-ին վտանգավոր հրամաններ կատարելուց։

Այո։ PreToolUse hook-երը կարող են արգելափակել ցանկացած գործիքի կատարում՝ ավարտվելով 1 կոդով։ Սա ներառում է ֆայլերի խմբագրում, հրամանների կատարում և MCP գործիքային կանչեր։ Hook-ը ստանում է գործիքի ամբողջական մուտքը և կարող է հաստատել ցանկացած չափանիշի դեմ՝ նախքան գործողությունը թույլատրելը:

Ինչպե՞ս debug անել hook, որը չի աշխատում։

Միացրեք debug գրանցումը CLAUDE_DEBUG=1-ով՝ Claude Code-ը գործարկելուց առաջ։ Ստուգեք նստաշրջանի գրանցումները hook-ի կատարման մանրամասների համար, ներառյալ, թե որ hook-երն են համընկել, ուղարկված JSON մուտքը, stdout/stderr ելքը և exit կոդերը։ Անկախ փորձարկեք hook-երը՝ փոխանցելով նմուշային JSON hook սկրիպտին:

Hook-երն աշխատո՞ւմ են Claude Code-ի բոլոր պլատֆորմների հետ։

Hook-երը աշխատում են CLI, desktop app, և VS Code extension-ներում։ Ըստ պաշտոնական փաստաթղթերի, hook-երը կատարվում են այնտեղ, որտեղ Claude Code-ը գործում է՝ ֆայլային համակարգի մուտքով։ Թերթի վրա հիմնված Claude-ը և բջջային հավելվածները չեն աջակցում hook-երին՝ sandbox-ի սահմանափակումների պատճառով:

Կարո՞ղ են hook-երը փոփոխել Claude-ի պատասխանները կամ վարքագիծը։

Prompt hook-երը ներարկում են հրահանգներ, որոնք ազդում են Claude-ի վարքագծի վրա։ Agent hook-երը իրադարձությունների մշակումը պատվիրակում են մասնագիտացված ենթագործակալներին։ Այնուամենայնիվ, hook-երը չեն կարող ուղղակիորեն փոփոխել Claude-ի ստեղծած տեքստը կամ մտահանգման գործընթացը - նրանք աշխատում են՝ տրամադրելով կոնտեքստ և արգելափակելով գործողությունները:

Ո՞րն է async և sync hook-երի տարբերությունը։

Սինխրոն hook-երը արգելափակում են Claude-ի աշխատանքային հոսքը մինչև ավարտը կամ ժամկետի լրանալը։ Ասինխրոն hook-երը կատարվում են ֆոնային ռեժիմում՝ առանց արգելափակման։ Sync hook-երը կարող են կանխել գործողությունները՝ ելքային կոդերի միջոցով։ Async hook-երը չեն կարող արգելափակել, քանի որ Claude-ը շարունակում է hook-ի ավարտից առաջ։ Օգտագործեք async logging-ի և ծանուցումների համար, sync հաստատման համար:

Ինչպե՞ս համօգտագործել hook-երը թիմի հետ։

Ներկայացրեք .claude/settings.json ֆայլը տարբերակի վերահսկմանը։ Նախագծային մակարդակի hook-երը կիրառվում են բոլոր թիմի անդամների վրա, ովքեր դեպոզիտարիան են քլոնում։ Կազմակերպության մակարդակի քաղաքականությունների համար թիմերը կարող են պահպանել ընդհանուր օգտատիրոջ մակարդակի settings ֆայլ, որը անդամները պատճենում են ~/.claude/settings.json-ին:

Կարո՞ղ են HTTP hook-երը կանչել ներքին API-ներ հրդեհային պատերի ետևում։

Այո, եթե Claude Code-ը գործում է այնպիսի միջավայրում, որն ունի ցանցային մուտք այդ API-ներին։ HTTP hook-երը կատարում են ստանդարտ POST հարցումներ Claude Code-ը գործարկող մեքենայից։ Կորպորատիվ հրդեհային պատերը և VPN-ները կիրառվում են սովորաբար։ Sandbox proxy-ն, որը նշված է փաստաթղթերում, վերահսկում է շրջակա միջավայրի փոփոխականների բացահայտումը, ոչ թե ցանցային երթևեկությունը:

Hook-երը մեծացնո՞ւմ են Claude Code-ի token-ի օգտագործումը։

Prompt hook-երը տեքստ են ներարկում Claude-ի կոնտեքստի մեջ, որը սպառում է tokens։ Հրամանային և HTTP hook-երը չեն ազդում token-ի օգտագործման վրա, բայց դրանց ելքը (սխալի հաղորդագրություններ, առաջարկներ) դառնում է զրույցի կոնտեքստի մաս։ Exit code 2-ը՝ բացատրական հաղորդագրություններով, ավելի շատ կոնտեքստ է ավելացնում, քան exit code 1-ը՝ պարզ արգելափակմամբ:

Եզրակացություն

Claude Code hook-երը AI օգնականը վերածում են հզոր գործիքից լիովին ավտոմատացված մշակման պլատֆորմի։ Իրադարձությունների համակարգը միջամտության կետեր է տրամադրում Claude-ի աշխատանքային հոսքի ընթացքում՝ նստաշրջանի նախաձեռնումից մինչև կոնտեքստի կոմպակտացում:

Հրամանային hook-երը մշակում են տեղական հաստատում և ձևավորում։ HTTP hook-երը ինտեգրում են արտաքին ծառայություններ և բազաներ։ Prompt hook-երը փոփոխում են վարքագիծը՝ կոնտեքստի ներարկման միջոցով։ Միասին, դրանք հնարավորություն են տալիս ավտոմատացման ձևեր, որոնք կիրառում են թիմային քաղաքականություններ, պահպանում կոդի որակը և ինտեգրվում են գոյություն ունեցող մշակման ենթակառուցվածքի հետ:

Մատչերի համակարգը զտում է hook-երը կոնկրետ գործիքների և ֆայլային ձևերի համար։ Exit կոդերը և JSON ելքը վերահսկում են որոշումների հոսքը։ Ասինխրոն կատարումը կանխում է դանդաղ գործողությունների արգելափակումը։ Ամբողջական կարգաւորման սխեման աջակցում է ամեն ինչից՝ պարզ ավտո-ձևավորումից մինչև բարդ բազմափուլ հաստատում:

Սկսեք պարզ PostToolUse hook-երով՝ կոդի ձևավորման համար։ Ավելացրեք PreToolUse հաստատում, երբ քաղաքականությունները սկսեն առաջանալ։ Փորձարկեք prompt hook-երը վարքագծի փոփոխության համար։ Կառուցեք HTTP ինտեգրումներ՝ թիմի մակարդակով կիրառման համար:

Ստուգեք Claude Code-ի պաշտոնական փաստաթղթերը՝ ամբողջական hooks հղման և թարմացված կարգաւորման սխեմայի համար, քանի որ նոր հնարավորություններ են թողարկվում:

AI Perks

AI Perks-ը տրամադրում է մուտք դեպի բացառիկ զեղdelays, կdelays delay և deal AI գործիqualifications, ամdelays delays delay API- delays dles, delay startap-delays delay ders delay delays delete.

AI Perks Cards

This content is for informational purposes only and may contain inaccuracies. Credit programs, amounts, and eligibility requirements change frequently. Always verify details directly with the provider.