Claude Code Hooks: Täydellinen opas (2026)

Author Avatar
Andrew
AI Perks Team
8,335
Claude Code Hooks: Täydellinen opas (2026)

Lyhyt yhteenveto: Claude Code -koukut ovat automaatiokomennukset, jotka suoritetaan tiettyinä elinkaaren vaiheina tekoälykoodausistuntojen aikana. Ne antavat kehittäjille mahdollisuuden suorittaa mukautettuja komentoja, validoida toimintoja, muotoilla koodia, lähettää ilmoituksia ja valvoa projektisääntöjä. Nämä koukut integroituvat Claude’n työnkulkuun tapahtumien, kuten SessionStart, PreToolUse ja PostToolUse, kautta, ja tukevat komento-, HTTP- ja kehoteperusteisia suoritustapoja konfiguroitavilla aikakatkaisuilla ja poistumiskoodikäyttäytymisellä.

Claude Code’n koukkujärjestelmä muuttaa tekoälykoodausavustajan hyödyllisestä työkalusta täysin automatisoiduksi kehitysympäristöksi. Useimmat kehittäjät eivät ymmärrä koukkujen kautta saatavan hallinnan laajuutta.

Tässä on se juttu – koukut eivät ole vain skriptien suorittamista tiedostomuokkausten jälkeen. Ne tarjoavat katkeamispisteitä läpi Claude’n koko päätöksentekoprosessin. Ennen kuin se suorittaa komennon. Työkalukutsun epäonnistumisen jälkeen. Kun se tarvitsee lupaa. Jopa ennen käyttäjäkehotteiden käsittelyä.

Tämä opas kattaa kaiken, mitä virallinen dokumentaatio tarjoaa, sekä käytännön malleja, jotka yhteisön keskusteluissa paljastuvat tuotantoympäristöissä todella toimiviksi.

Mitä Claude Code -koukut todella tekevät

Virallisen Claude Code -dokumentaation mukaan koukut ovat käyttäjän määrittelemiä komentokehotteita, HTTP-päätepisteitä tai kehoteinjektioita, jotka suoritetaan tiettyinä aikoina Claude Code’n elinkaaren aikana. Ne vastaanottavat jäsenneltyä JSON-syötettä stdin-syötteen kautta ja ohjaavat työnkulkua poistumiskoodien tai HTTP-vastausten avulla.

Automaatio menee syvemmälle kuin useimmat oppaat antavat ymmärtää. Koukut voivat estää työkalujen suorittamisen kokonaan, injektoida lisäkontekstia Claude’n päättelyyn, käynnistää ulkoisia palveluita ja valvoa validointisääntöjä, joita Claude’n on noudatettava.

Kolme ydinkoukkutyyppiä on olemassa:

  • Komentokoukut: Komentotiedostot, jotka kommunikoivat stdoutin, stderrin ja poistumiskoodien kautta
  • HTTP-koukut: Etäpäätepisteet, jotka vastaanottavat POST-pyyntöjä ja palauttavat JSON-vastauksia
  • Kehotekoukut: Dynaamiset ohjeet, jotka injektoidaan Claude’n kontekstiin tietyissä tapahtumissa

Jokainen tyyppi palvelee erilaisia automaatiomalleja. Komentokoukut käsittelevät paikallista validointia ja muotoilua. HTTP-koukut integroivat ulkoisiin palveluihin ja tietokantoihin. Kehotekoukut muokkaavat Claude’n käyttäytymistä ilman ulkoisia prosesseja.

Koukkujen elinkaari ja tapahtumajärjestelmä

Virallinen dokumentaatio määrittelee useita koukkutapahtumia (SessionStart, UserPromptSubmit, PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, Notification ja muita), jotka käynnistyvät Claude Code’n suoritusvirran aikana. Ymmärtämällä, milloin kukin käynnistyy, määritetään, mikä automaatio on mahdollista.

Claude Code -koukkujen tapahtumat ja niiden suoritusvirta tyypillisessä istunnossa
TapahtumaMilloin se käynnistyyVoiko estää 
SessionStartKun istunto alkaa tai jatkuuEi
UserPromptSubmitKun lähetät kehotteen, ennen kuin Claude käsittelee senKyllä
PreToolUseEnnen kuin työkalukutsu suoritetaanKyllä
PermissionRequestKun lupavalintaikkuna ilmestyyKyllä
PostToolUseKun työkalukutsu onnistuuEi
PostToolUseFailureKun työkalukutsu epäonnistuuEi
NotificationKun Claude Code lähettää ilmoituksenEi
SubmitMessageKun Claude lähettää viestin käyttäjälleEi
ContextCompactionKun konteksti-ikkuna lähestyy rajojaEi

Estokyky on tärkein. PreToolUse-koukut voivat estää vaaralliset toiminnot ennen niiden suorittamista. Poistumiskoodi 1 estää toimenpiteen. Poistumiskoodi 0 sallii sen. Poistumiskoodi 2 pyytää Claudea harkitsemaan uudelleen.

Mutta odota. PostToolUse-koukut eivät voi peruuttaa toimintoja, koska työkalu on jo suoritettu. Tämä rajoitus muokkaa, miten validointilogiikka rakentuu. Kriittiset tarkistukset kuuluvat PreToolUse-tapahtumaan. Puhdistus ja muotoilu kuuluvat PostToolUse-tapahtumaan.

Selaa tekoälytyökalujen etuja asentaessasi Claude Codea

Jos työskentelet Claude Code -koukkujen kanssa, saatat myös valita muita tekoälytyökaluja työnkulkuusi. Get AI Perks kerää startup-luottoja ja ohjelmistotarjouksia tekoäly- ja pilvityökaluille yhdestä paikasta. Alusta sisältää yli 200 tarjousta, joissa on etujen ehdot ja lunastusohjeet kullekin.

Etsitkö Claude- tai muita tekoälytyökalujen etuja?

Tarkista Get AI Perks, jotta voit:

  • selata Claude- ja muita tekoälytyökalujen tarjouksia
  • vertailla etujen ehtoja ennen hakemista
  • löytää startup-alennuksia työkalupakettiisi

👉 Vieraile Get AI Perksissä tutustuaksesi nykyisiin tekoälyohjelmistojen etuihin.

Konfiguraatio ja tiedostorakenne

Koukut määritellään projektin .claude/settings.json -tiedostossa. Konfiguraatioskeema tukee globaaleja koukkuja ja työkalu-kohtaisia vastaavuuksia, jotka suodattavat, milloin koukut suoritetaan.

Peruskomentokoukun rakenne:

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

`${file}`-muuttuja laajenee työkalun syötteestä tulevaksi todelliseksi tiedostopoluksi. Virallisen dokumentaation mukaan koukut tukevat näitä muuttujalaajennuksia komento- ja args-kentissä.

Koukkujen sijaintihierarkia

Claude Code tarkistaa useita sijainteja koukkumäärityksiä varten selkeällä etusijajärjestyksellä:

  1. Projektitaso: .claude/settings.json nykyisessä työtilassa
  2. Käyttäjätaso: ~/.claude/settings.json kaikille istunnoille
  3. Lisäosien tarjoamat: Asennettujen lisäosien mukana tulevat koukut

Projektikoukut ohittavat käyttäjäkoukut samalle tapahtumalle. Tämä mahdollistaa projektikohtaisten muotoilusääntöjen luomisen samalla, kun globaalit ilmoituskäsittelijät säilyvät.

Vastaavuusmallit valikoivaan suoritukseen

Vastaavuusjärjestelmä suodattaa koukut tietyille työkaluille tai ehdoille. Ilman vastaavuuksia koukut käynnistyvät jokaiselle tapahtumalleen.

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

`pathPattern`-kenttä hyväksyy glob-syntaksin. `toolName`-kenttä vastaa Claude’n sisäänrakennettuja työkaluja, kuten edit_file, execute_command, read_file ja create_directory.

Yhteisön keskustelut paljastavat, että vastaavuusyhdistelmät toimivat AND-logiikalla. Kaikkien määritettyjen vastaavuuksien on täytyttävä, jotta koukku suoritetaan.

Komentokoukut: Komentotiedostojen integrointi

Komentokoukut suorittavat komentotiedostoja tai komentosarjoja jäsennellyllä JSON-syötteellä. Ne edustavat yleisintä koukkutyyppiä paikalliselle automaatiolle.

Virallinen dokumentaatio määrittelee, että komentokoukut vastaanottavat JSON-tiedostoa stdin-syötteen kautta seuraavalla rakenteella:

{
  “event”: “PreToolUse”,
  “toolName”: “edit_file”,
  “toolInput”: {
    “path”: “src/app.ts”,
    “content”: “…”
  },
  “sessionId”: “abc123”,
  “turnId”: “turn-456”
}Skriptit jäsentävät tämän syötteen päätösten tekemiseksi. Python-validointikoukku voisi näyttää tältä:#!/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)

Poistumiskoodi 0 sallii toiminnon. Poistumiskoodi 1 estää sen ja näyttää stderr-viestin Claudelle. Poistumiskoodi 2 käynnistää erityiskäyttäytymistä tapahtumasta riippuen.

Poistumiskoodin 2 käyttäytyminen

Virallisen koukkujen viitedokumentaation mukaan poistumiskoodilla 2 on tapahtumakohtainen merkitys (PreToolUse: estää ja pyytää harkitsemaan uudelleen; UserPromptSubmit: tarjoaa kontekstia estämättä; PermissionRequest: estää luvan pyytämisen):

  • PreToolUse: Estää työkalun ja pyytää Claudea harkitsemaan uudelleen stderr-viestiä kontekstina
  • UserPromptSubmit: Tarjoaa stderr-ulostulon lisäkontekstina estämättä
  • PermissionRequest: Estää luvan myöntämisen

Tämä luo keskitien kovan estämisen ja sallimisen välille. Claude saa palautetta siitä, miksi toimenpide voi olla ongelmallinen, ja voi mukauttaa lähestymistapaansa.

Asynkroniset komentokoukut

`async: true`-lippu suorittaa koukut taustalla estämättä Claude’n työnkulkua. Tämä on tärkeää hitaille toiminnoille, kuten käyttöönottoilmoituksille tai metriikan keräämiselle.

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

Kun asynkroninen koukku käynnistyy, Claude Code aloittaa prosessin ja jatkaa välittömästi. `timeout`-kenttä asettaa maksimisuoritusajan sekunneissa. Jos sitä ei ole määritetty, asynkroniset koukut käyttävät 10 minuutin oletusaikakatkaisua.

Rehellisesti sanottuna asynkroniset koukut eivät voi estää toimintoja, koska ne suoritetaan sen jälkeen, kun Claude on edennyt. Ne toimivat lokitukseen, ilmoituksiin ja siivoukseen – eivät validointiin.

HTTP-koukut: Ulkoisten palveluiden integrointi

HTTP-koukut lähettävät JSON-payloadteja etäpäätepisteisiin ja jäsentävät vastauksia päätöksenteon hallintaan. Ne mahdollistavat integroinnin validointipalveluihin, tietokantoihin ja kolmannen osapuolen työkaluihin.

Perus HTTP-koukun konfiguraatio:

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

Payload-rakenne vastaa komentokoukkujen syötettä, mutta se toimitetaan POST-pyynnön rungossa. Vastaus määrittää Claude’n seuraavan toimenpiteen.

HTTP-vastauksen käsittely

Virallisen dokumentaation mukaan HTTP-koukut tulkitsevat vastauksia tila- ja runkokoodin perusteella:

Tila-koodiVaikutusViestin lähde 
200Salli toimintoVastausrunko (valinnainen)
400Estä toimintoClaude’lle näytetty vastausrunko
500Koukkuvirhe, sallii toiminnonKirjattu, mutta ei näytetty Claudelle
MuuSalli toimintoKoukkujen epäonnistuminen ei estä työnkulkua

Vastausrunko voi sisältää `message`-kentän, jonka Claude näkee kontekstina. Tämä mahdollistaa validointipalveluiden selittää, miksi toiminto estettiin.

Ympäristömuuttujien interpolointi

HTTP-koukut tukevat `${VAR}`-syntaksia URL-, header- ja muissa merkkijonokentissä. Muuttujat laajenevat ympäristöstä, jossa Claude Code toimii.

Virallisen MCP-dokumentaation mukaan ympäristömuuttujien laajennus sisältää oletusarvoisen varasyntaksin: `${VAR:-default}` laajenee VAR-arvoksi, jos se on asetettu, muuten käytetään oletusarvoa.

Turvallisuusrajoitus: GitHub-ongelman #28044 mukaan HTTP-koukut voivat käyttää vain `allowedEnvVars`-konfiguraatiokentässä erikseen lueteltuja ympäristömuuttujia. Tämä estää vahingossa tapahtuvan tunnistetietojen paljastumisen.

Kehotekoukut: Kontekstin injektointi

Kehotekoukut injektoivat dynaamisia ohjeita Claude’n kontekstiin tietyissä tapahtumissa. Ne muokkaavat käyttäytymistä ilman ulkoisia prosesseja tai API-kutsuja.

{
  “event”: “SessionStart”,
  “prompt”: “Työskentelet TypeScript-projektin parissa. Käytä aina tiukkoja null-tarkistuksia ja suosi async/awaitia promisejen sijaan.”
}

Injektoitu teksti tulee osaksi Claude’n järjestelmäohjeita kyseiselle istunnolle. Kehotekoukut voivat myös käyttää mallimuuttujia, jotka laajenevat tapahtumatiedoista.

Dynaaminen kehoteiden luonti

Virallisen dokumentaation mukaan kehotekoukut tukevat komento-kenttiä, jotka luovat dynaamisia kehotteita:

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

Komento vastaanottaa standardin JSON-syötteen stdin-syötteen kautta ja lähettää kehote-tekstin stdout-syötteeseen. Tämä mahdollistaa kontekstitietoisen ohjeiden luomisen projektin tilan perusteella.

Agenttipohjaiset koukut

Agenttikoukut määrittelevät alagentin, joka käsittelee tapahtuman suoran kehoteinjektion sijaan. Alagentti saa tietoa tapahtumasta ja voi suorittaa monivaiheista päättelyä.

{
  “event”: “PostToolUseFailure”,
  “agent”: “debugger”,
  “agentPrompt”: “Työkalukutsu epäonnistui. Analysoi virhe ja ehdota korjauksia.”
}

Nimetty alagentti on määriteltävä projektikonfiguraatiossa. Agenttikoukut mahdollistavat monimutkaisen päätöksenteon logiikan, jota yksinkertainen kehoteinjektio ei voi tarjota.

Käytännön koukkumallit

Yhteisön keskustelut ja viralliset esimerkit paljastavat erityisiä automaatiomalleja, jotka toimivat luotettavasti tuotannossa.

Koodin automaattinen muotoilu muokkausten jälkeen

Yleisin malli muotoilee koodin automaattisesti sen jälkeen, kun Claude muokkaa tiedostoja:

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

`${toolInput.path}`-muuttuja laajenee muokattuun tiedostopolkuun. PostToolUse varmistaa, että muotoilu tapahtuu onnistuneiden muokkausten jälkeen, mutta ei estä Claude’n työnkulkua.

Suojattujen tiedostojen muokkausten estäminen

PreToolUse-koukut valvoivat tiedostonsuojaussääntöjä:

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

Skripti validoi kohdepolun suojattuihin malleihin ja poistuu koodilla 1 estääkseen kielletyt muokkaukset.

Saat ilmoituksen, kun Claude tarvitsee syötettä

Virallisen työnkulkuoppaan mukaan ilmoituskoukut voivat käynnistää työpöytähälytyksiä tai lähettää viestejä ulkoisiin palveluihin:

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

Tämä käynnistyy aina, kun Claude Code lähettää ilmoituksen, mukaan lukien odottaessaan käyttäjän syötettä tai tehtävän suorittamisen jälkeen.

Kontekstin uudelleeninjektointi tiivistämisen jälkeen

ContextCompaction-koukut palauttavat tärkeän kontekstin, kun keskusteluikkuna täyttyy:

{
  “event”: “ContextCompaction”,
  “type”: “prompt”,
  “command”: “cat .claude/critical-context.md”
}

Komennon ulostulo injektoidaan takaisin Claude’n kontekstiin tiivistämisen jälkeen, kun vanhemmat viestit poistetaan. Tämä estää kriittisten projektikohtaisten ohjeiden menetyksen.

Konfiguraatiomuutosten auditointi

Seuraa, milloin Claude muokkaa konfiguraatiotiedostoja:

{
  “event”: “PostToolUse”,
  “matcher”: {
    “toolName”: “edit_file”,
    “pathPattern”: “**/{package.json,.env,*.config.*}”
  },
  “command”: “git”,
  “args”: [“add”, “${toolInput.path}”],
  “async”: true
}

Asynkroninen suoritus estää Claude’n estämisen git-toimintojen valmistuessa. Tämä luo auditointijäljen konfiguraatiomuutoksista ilman manuaalista pysäytystä.

JSON-ulostulo ja päätöksenteon hallinta

Komentokoukut voivat lähettää jäsenneltyä JSON-tietoa antaakseen yksityiskohtaista palautetta pelkkien poistumiskoodien lisäksi. Virallisen viitteen mukaan JSON-ulostulo mahdollistaa monikenttäiset vastaukset, joita Claude tulkitsee päätöksentekoa varten.

{
  “allowed”: false,
  “message”: “Tämä tiedosto on tiimikäytäntöjen suojaama”,
  “suggestion”: “Luo uusi tiedosto src/features/-kansioon sen sijaan”
}

`allowed`-kenttä määrittää, eteneekö toimenpide. `message`-kenttä näkyy Claudelle kontekstina. `suggestion`-kenttä tarjoaa vaihtoehtoisia lähestymistapoja.

Jotta koukut voivat tuottaa JSON-tietoa, niiden on:

  1. Kirjoitettava kelvollista JSON-tietoa stdout-syötteeseen
  2. Poistuttava koodilla 0 (sallittu) tai 1 (estetty)
  3. Sisällettävä vähintään `allowed`-boolean-kenttä

Claude Code jäsentää JSON-tiedon ja käyttää sitä palautesilmukan parantamiseen. Poistumiskoodit määrittävät edelleen ensisijaisen päätöksen, mutta JSON tarjoaa rikkaamman kontekstin.

Koukun syötekenttien viite

Kaikki koukut vastaanottavat JSON-objektin stdin-syötteen kautta, joka sisältää yhteisiä kenttiä sekä tapahtumakohtaisia tietoja. Täydellisen skeeman ymmärtäminen mahdollistaa kehittyneemmän koukkulogiikan.

Koukun syötteen JSON-skeema, joka näyttää yhteiset kentät ja tapahtumakohtaiset laajennukset

Yleiset syötekentät

Jokainen koukku vastaanottaa nämä peruskentät:

  • event: Koukkutapahtuman nimi (esim. “PreToolUse”)
  • sessionId: Nykyisen Claude-istunnon yksilöllinen tunniste
  • turnId: Nykyisen keskustelukierroksen tunniste
  • timestamp: ISO 8601 -aikaleima, kun tapahtuma käynnistyi

Työkalutapahtumakentät

PreToolUse, PostToolUse ja PostToolUseFailure -tapahtumat sisältävät:

  • toolName: Kutsuttavan työkalun nimi (edit_file, execute_command jne.)
  • toolInput: Objekti, joka sisältää työkalun syöteparametrit
  • toolResponse: Työkalun ulostulodata (vain PostToolUse)
  • error: Virhetiedot, mukaan lukien viesti ja koodi (vain PostToolUseFailure)

`toolInput`-rakenne vaihtelee työkaluittain. `edit_file`-työkalulla se sisältää polun ja sisällön. `execute_command`-työkalulla se sisältää komennon ja argumentit.

Lupatapahtumakentät

PermissionRequest-tapahtumat sisältävät:

  • permissionType: Pyydetyn luvan tyyppi (file_write, command_execute jne.)
  • requestedAction: Laitetta vaativa tietty toimenpide
  • resourcePath: Tiedostopolku tai resurssitunniste, johon toimenpide vaikuttaa

MCP-työkalukoukut

Virallisen koukkujen viitteen mukaan koukut voivat vastaavuusmallia `mcpTool` käyttäen vastaamaan Model Context Protocol (MCP) -työkaluja. Tämä mahdollistaa koukkujen suorittamisen, kun Claude käyttää MCP-palvelimien tarjoamia ulkoisia työkaluja.

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

`mcpTool`-arvo vastaa työkalun nimeä muodossa palvelin-nimi/työkalun-nimi. Tämä mahdollistaa validointilogiikan tietokantakyselyille, API-kutsuille tai muille ulkoisille toiminnoille.

GitHubin ominaisuuspyynnöt osoittavat kasvavaa kiinnostusta syvempään MCP-integraatioon, mukaan lukien koukkuihin, jotka voivat tarkastella MCP-palvelimen ilmoituksia ja reagoida ulkoisiin tapahtumiin.

Turvallisuusnäkökohdat

Koukut suoritetaan samoilla oikeuksilla kuin Claude Code itse. Tämä luo turvallisuusriskejä monen käyttäjän ympäristöissä ja jaetuissa konfiguraatioissa.

Komentojen suorituksen hiekkalaatikko

GitHub-ongelman #28044 mukaan HTTP-koukut kulkevat hiekkalaatikon välityspalvelimen kautta, joka rajoittaa verkkoyhteyksiä ja suodattaa ympäristömuuttujia. Komentokoukuilla ei ole tällaisia rajoituksia – ne suoritetaan täydellä komentorivillä.

Dokumentaatio suosittelee seuraavia käytäntöjä:

  • Älä koskaan tallenna tunnistetietoja komentoihin
  • Käytä ympäristömuuttujia arkaluonteisille tiedoille
  • Validoi kaikki syöte `${…}`-laajennuksista
  • Toteuta aikakatkaisurajat ulkoisille palveluille
  • Käytä asynkronisia koukkuja ei-kriittisille toiminnoille estämisen välttämiseksi epäonnistumisen sattuessa

Koukkujen suorituksen eristäminen

Käyttäjätason koukut tiedostossa ~/.claude/settings.json koskevat kaikkia projekteja. Tämä luo riskejä työskenneltäessä eri luottamusrajojen yli. Projektitason koukut ohittavat käyttäjäkoukut, mutta eivät voi poistaa niitä kokonaan.

Claude Code’n `/hooks`-valikko näyttää kaikki aktiiviset koukut nykyiselle istunnolle. Tämän luettelon tarkistaminen ennen arkaluontoisten projektien kanssa työskentelyä auttaa tunnistamaan mahdolliset turvallisuushuolenaiheet.

Vianmääritys ja ongelmanratkaisu

Koukkujen epäonnistumiset eivät aina näy selkeästi Claude’n keskustelussa. Virallinen dokumentaatio tarjoaa useita vianmääritystapoja.

Koukkujen suorituslokit

Claude Code kirjaa koukkujen suorittamisen istunnon virheenkorjausulostuloon. Vianmääritysoppaan mukaan virheenkorjauslokituksen käyttöönotto paljastaa:

  • Mitkä koukut vastaavat kutakin tapahtumaa
  • JSON-syöte, joka lähetettiin kullekin koukulle
  • Komentoprosessien stdout- ja stderr-ulostulo
  • Poistumiskoodit ja suoritusaika
  • HTTP-vastaukset ja rungot HTTP-koukkuille

Ota virheenkorjauslokitus käyttöön asettamalla CLAUDE_DEBUG=1 ympäristöön ennen Claude Code’n käynnistämistä.

Koukkujen itsenäinen testaus

Komentokoukut voidaan testata Claude Code’n ulkopuolella rakentamalla JSON-syöte manuaalisesti:

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

Tämä validoi koukkulogiikan ilman, että Claude-toiminnot todella käynnistyvät. Poistumiskoodin ja stdout/stderr-ulostulon tulisi vastata odotettua käyttäytymistä.

Yleiset koukkujen epäonnistumiset

Yhteisön keskustelut tunnistavat nämä yleiset ongelmat:

  • Aikakatkaisuvirheet: Oletus 10 minuutin aikakatkaisu liian lyhyt hitaalle toiminnalle – lisää `timeout`-kentällä
  • Polun laajennusvirheet: Muuttujat kuten `${file}` määrittelemättömiä tapahtumissa, jotka eivät sisällä tiedostokontekstia
  • Oikeusvirheet: Koukkuskripteillä ei ole suoritusoikeuksia – suorita `chmod +x script.sh`
  • JSON-jäsentelyvirheet: Virheellinen JSON-ulostulo koukuista – validoi `jq`-työkalulla ennen palautusta
  • Ympäristömuuttujien puuttuminen: Muuttujat eivät välity koukkutiedostoon – tarkista Claude Code’n ympäristö

Koukkujen suorituskykyvaikutukset

Synkroniset koukut estävät Claude’n työnkulun valmistumiseen asti. Oletus 10 minuutin aikakatkaisu estää loputtomat jäätymiset, mutta jopa lyhyet viiveet kertyvät useiden toimintojen aikana.

Käytännön kokemukset kertovat, että yksinkertaisilla validointikoukuilla on merkityksetön suorituskykyvaikutus. Tiedostomuotoilukoukut aiheuttavat havaittavan, mutta hyväksyttävän suorituskykyvaikutuksen. Ulkoiset API-kutsut voivat aiheuttaa kitkaa työnkulussa. Raskaat laskentatoiminnot hyötyvät asynkronisesta suorituksesta.

Koukkujen eräajo

Useat koukut voivat vastata samaan tapahtumaan. Viitedokumentaation mukaan koukut suoritetaan peräkkäin määritysjärjestyksessä. Jos jokin koukku estää toiminnon, jäljellä olevat koukut eivät suoritu.

Tämä on tärkeää suorituskyvyn kannalta. Viisi synkronista koukkua, jotka kestävät 200 ms kukin, lisäävät yhden sekunnin per tapahtuma. Samankaltaisten validointien yhdistäminen yhteen koukkuun vähentää ylikuormitusta.

Edistyneet mallit

Perusautomaation lisäksi koukut mahdollistavat monimutkaisen työnkulun räätälöinnin.

Tilatiedot koukkuketjut

Koukut voivat ylläpitää tilaa suoritusten välillä käyttämällä tiedostoja tai tietokantoja. PostToolUse-koukku voi kirjata onnistuneet toiminnot, joita PreToolUse-koukku myöhemmin validoi:

#!/bin/bash
# Kirjaa onnistuneet muokkaukset
echo “${toolInput.path}” >> .claude/edit-history.txt

Tukeva PreToolUse-koukku voisi tarkistaa tämän historian estääkseen tarpeettomat toiminnot tai valvoakseen järjestysrajoituksia.

Ehdollinen koukkujen aktivointi

Ympäristömuuttujat ohjaavat koukkujen käyttäytymistä ajon aikana. `CLAUDE_SKIP_HOOKS=1`-asetus poistaa koukut käytöstä hätätilanteita varten.

Koukut itse voivat tarkistaa ympäristölippuja:

#!/bin/bash
if [ “$STRICT_MODE” = “1” ]; then
  # Käytä tiukkaa validointia
  exit 1
fi
exit 0

Tämä mahdollistaa kehitystilan tai tuotantotilan käyttäytymisen ilman konfiguraatiomuutoksia.

Monivaiheinen validointi

PreToolUse-koukut voivat toteuttaa monitasoisen validoinnin, jossa poistumiskoodi 2 antaa Claude’n jatkaa varoituksilla:

  1. Kovat virheet (poistumiskoodi 1): Estää vaaralliset toiminnot
  2. Pehmeät varoitukset (poistumiskoodi 2): Hälyttää Claude’ta harkitsemaan uudelleen
  3. Passi kontekstin kanssa (poistumiskoodi 0 + JSON): Tarjoaa lisätietoja

Tämä luo validointispektrin, joka on hienovaraisempi kuin binäärinen sallia/kieltää.

Integrointi CI/CD:hen

Virallisen alustaintegraatiodokumentaation mukaan Claude Code toimii CI/CD-ympäristöissä automatisoidun koodin tarkistuksen ja ongelmien käsittelyn varmistamiseksi. Koukut laajentavat tätä automaatiota.

GitHub Actions -työnkulut voivat määrittää koukkuja, jotka valvovat tiimin käytäntöjä automatisoitujen istuntojen aikana:

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

`STRICT_MODE`-lippu aktivoi ehdollisen validointilogiikan koukkuskripteissä. Tämä varmistaa, että automatisoidut istunnot noudattavat tiukempia sääntöjä kuin interaktiivinen kehitys.

Auditointijäljen luonti

CI-ympäristöjen PostToolUse-koukut luovat yksityiskohtaisia auditointilokeja kaikista Claude-toiminnoista:

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

Taustalokitus ei vaikuta suorituskykyyn, mutta tarjoaa täydellisen toimintahistorian vaatimustenmukaisuuden ja vianmäärityksen kannalta.

The /hooks Menu

Claude Code tarjoaa `/hooks`-komennon, joka näyttää kaikki aktiiviset koukut nykyiselle istunnolle. Virallisen dokumentaation mukaan tämä valikko näyttää:

  • Koukkutapahtuman tyyppi
  • Vastaavuusmallit
  • Komento tai URL-päätepiste
  • Onko koukku asynkroninen
  • Konfiguraation lähde (projekti, käyttäjä tai lisäosa)

Koukun valitseminen näyttää sen täydellisen konfiguraation ja antaa mahdollisuuden poistaa sen käytöstä väliaikaisesti nykyiselle istunnolle.

Koukkujen poistaminen käytöstä tai poistaminen

Koukkuja voidaan poistaa käytöstä ilman konfiguraation poistamista lisäämällä `"enabled": false` koukkumääritykseen. Tämä säilyttää konfiguraation estäen samalla suorituksen.

Jos haluat poistaa koukun pysyvästi, poista sen merkintä asianmukaisesta settings.json-tiedostosta. Muutokset tulevat voimaan seuraavan istunnon uudelleenkäynnistyksen yhteydessä tai kun `/reload` suoritetaan.

Koukut taidoissa ja agenteissa

Virallisen dokumentaation mukaan taitojen tai alagenttien konfiguraatioiden sisällä määritellyt koukut pätevät vain kyseisen taidon tai agentin suorittaessa. Tämä mahdollistaa erikoistuneen automaation tiettyjä työnkulkuja varten.

Debuggaava alagentti voi sisältää koukkuja, jotka kirjaavat kaikki työkalukutsut:

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

Nämä koukut käynnistyvät vain debuggaaja-agentin istunnoissa, eivät normaalissa Claude Code -käytössä.

Viittaa skripteihin polun avulla

Komentokoukut tukevat sekä suhteellisia että absoluuttisia polkuja. Suhteelliset polut ratkeavat projektin juuresta, jossa Claude Code toimii.

Yhteisön keskustelujen parhaat käytännöt:

  • Tallenna koukkuskriptit .claude/hooks/-hakemistoon
  • Käytä kuvaavia nimiä: validate-typescript.sh, ei hook1.sh
  • Tee skripteistä suoritettavia: chmod +x .claude/hooks/*.sh
  • Sisällytä shebang-rivi: #!/usr/bin/env bash tai #!/usr/bin/env python3
  • Lisää virheenkäsittely `set -e`-komennolla bash-skripteissä

Tulevaisuuden koukkuominaisuudet

GitHubin ominaisuuspyynnöt paljastavat suunniteltuja ja pyydettyjä koukkujen parannuksia:

  • Inline-skriptikoukut: Määritä koukkulogiikka suoraan settings.json-tiedostossa ilman ulkoisia tiedostoja
  • MCP-työkalujen integraatio: Kutsu MCP-palvelintyökaluja koukuista komentotiedostojen sijaan
  • Monen agentin yhteistyö: Koukut, jotka koordinoivat Claude-instanssien välillä eri koneilla
  • Parannettu tyypitys: TypeScript-tyyppimääritykset koukkujen syöte-/ulostuloskeemoille

GitHub-ongelman #4274 mukaan pyyntö integroiduista koukkutyypeistä (MCP-työkalu, inline-skripti, API-kutsu) pyrkii yksinkertaistamaan konfiguraatiota ja parantamaan kehittäjäkokemusta.

Usein kysytyt kysymykset

Voivatko koukut estää Claudea suorittamasta vaarallisia komentoja?

Kyllä. PreToolUse-koukut voivat estää minkä tahansa työkalun suorittamisen poistumalla koodilla 1. Tämä sisältää tiedostomuokkaukset, komennon suorittamisen ja MCP-työkalukutsut. Koukku vastaanottaa täydellisen työkalusyötteen ja voi validoida minkä tahansa kriteerin mukaan ennen toiminnon sallimista.

Miten voin korjata koukun, joka ei toimi?

Ota virheenkorjauslokitus käyttöön asetuksella CLAUDE_DEBUG=1 ennen Claude Code’n käynnistämistä. Tarkista istuntolokit koukkujen suoritusyksityiskohdista, mukaan lukien mitkä koukut vastasivat, lähetetty JSON-syöte, stdout/stderr-ulostulo ja poistumiskoodit. Testaa koukkuja itsenäisesti syöttämällä näyte-JSON-tietoa koukkuskriptille.

Toimivatko koukut kaikilla Claude Code -alustoilla?

Koukut toimivat komentorivillä, työpöytäsovelluksessa ja VS Code -lisäosassa. Virallisen dokumentaation mukaan koukut suoritetaan aina, kun Claude Code toimii ja sillä on pääsy tiedostojärjestelmään. Selainpohjaiset Claude- ja mobiilisovellukset eivät tue koukkuja hiekkalaatikkorajoitusten vuoksi.

Voivatko koukut muokata Claude’n vastauksia tai käyttäytymistä?

Kehotekoukut injektoivat ohjeita, jotka vaikuttavat Claude’n käyttäytymiseen. Agenttikoukut delegoivat tapahtumien käsittelyn erikoistuneisiin alagentteihin. Koukut eivät kuitenkaan voi suoraan muokata Claude’n tuottamaa tekstiä tai päättelyprosessia – ne toimivat tarjoamalla kontekstia ja estämällä toimintoja.

Mikä on ero asynkronisten ja synkronisten koukkujen välillä?

Synkroniset koukut estävät Claude’n työnkulun valmistumiseen tai aikakatkaisuun asti. Asynkroniset koukut suoritetaan taustalla estämättä. Synkroniset koukut voivat estää toimintoja poistumiskoodien avulla. Asynkroniset koukut eivät voi estää, koska Claude jatkaa ennen kuin koukku valmistuu. Käytä asynkronisia lokitukseen ja ilmoituksiin, synkronisia validointiin.

Miten voin jakaa koukkuja tiimin kanssa?

Vientitiedostoon `.claude/settings.json`-tiedosto versionhallintaan. Projektitason koukut koskevat kaikkia tiimin jäseniä, jotka kloonaavat arkiston. Organisaatiotason käytäntöjä varten tiimit voivat ylläpitää jaettua käyttäjätason asetustiedostoa, jonka jäsenet kopioivat tiedostoon `~/.claude/settings.json`.

Voivatko HTTP-koukut kutsua sisäisiä API-rajapintoja palomuurien takana?

Kyllä, jos Claude Code toimii ympäristössä, jolla on verkkoyhteys näihin API-rajapintoihin. HTTP-koukut tekevät tavallisia POST-pyyntöjä Claude Codea ajavalta koneelta. Yritysverkkopalomuurit ja VPN-yhteydet toimivat normaalisti. Dokumentaatiossa mainittu hiekkalaatikon välityspalvelin hallitsee ympäristömuuttujien paljastumista, ei verkkoreititystä.

Lisäävätkö koukut Claude Code’n merkkiaineiden käyttöä?

Kehotekoukut injektoivat tekstiä Claude’n kontekstiin, mikä kuluttaa merkkiaineita. Komento- ja HTTP-koukut eivät vaikuta suoraan merkkiaineiden käyttöön, mutta niiden ulostulo (virheviestit, ehdotukset) tulee osaksi keskustelujen kontekstia. Poistumiskoodi 2 selittävillä viesteillä lisää kontekstia kuin poistumiskoodi 1 pelkällä estämisellä.

Yhteenveto

Claude Code -koukut muuttavat tekoälyavustajan tehokkaasta työkalusta täysin automatisoiduksi kehitysalustaksi. Tapahtumajärjestelmä tarjoaa katkeamispisteitä läpi Claude’n työnkulun – istunnon alusta aina kontekstin tiivistämiseen asti.

Komentokoukut hoitavat paikallisen validoinnin ja muotoilun. HTTP-koukut integroivat ulkoisia palveluita ja tietokantoja. Kehotekoukut muokkaavat käyttäytymistä kontekstin injektoinnin avulla. Yhdessä nämä mahdollistavat automaatiomallit, jotka valvovat tiimin käytäntöjä, ylläpitävät koodin laatua ja integroituvat olemassa olevaan kehitysinfrastruktuuriin.

Vastaavuusjärjestelmä suodattaa koukut tietyille työkaluille ja tiedostomalleille. Poistumiskoodit ja JSON-ulostulo ohjaavat päätöksentekoa. Asynkroninen suoritus estää hidastoimintojen estymisen. Täysi konfiguraatioskeema tukee kaikkea yksinkertaisesta automaattisesta muotoilusta monimutkaiseen monivaiheiseen validointiin.

Aloita yksinkertaisilla PostToolUse-koukuilla koodin muotoiluun. Lisää PreToolUse-validointia käytäntöjen kehittyessä. Kokeile kehotekoukkuja käyttäytymisen muokkaamiseen. Rakenna HTTP-integraatioita tiimilaajuiseen valvontaan.

Tarkista virallisesta Claude Code -dokumentaatiosta täydellinen koukkujen viite ja päivitetty konfiguraatioskeema uusien ominaisuuksien julkaisun myötä.

AI Perks

AI Perks tarjoaa pääsyn eksklusiivisiin alennuksiin, krediitteihin ja tarjouksiin AI-työkaluissa, pilvipalveluissa ja API-rajapinnoissa auttaakseen startup-yrityksiä ja kehittäjiä säästämään rahaa.

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.