Workbranch › Ohjeet
OhjeNäin käytät hookeja Claude Codessa
Haluat jonkin tapahtuvan joka kerta, kuten tiedoston muotoilun Clauden muokkauksen jälkeen tai ilmoituksen, kun Claude odottaa sinua, ilman että pitää toivoa Clauden muistavan. Juuri sitä hookit tekevät. Tämä ohje kertoo, mitä ne ovat, käy läpi ensimmäisen hookin ja näyttää, mihin ne laitetaan.
Lyhyesti: hook on shell-komento, jonka Claude Code ajaa automaattisesti tietyssä kohdassa, esimerkiksi ennen työkalun ajoa, tiedoston muokkauksen jälkeen tai kun Claude tarvitsee vastaustasi. Lisää hookit hooks-avaimen alle asetustiedostoon, kuten ~/.claude/settings.json (kaikki projektit) tai .claude/settings.json (yksi projekti), ja kirjoita sitten /hooks varmistaaksesi, että Claude Code näkee ne.
Alla olevat tapahtumien nimet, tiedostojen sijainnit ja toiminta perustuvat Anthropicin Claude Code -dokumentaatioon lokakuussa 2026. Claude Code päivittyy usein, joten aja claude update, jos jotain puuttuu.
Mitä hookit ovat ja miksi niistä on apua
Kehotteen tai CLAUDE.md-tiedoston ohjeet ovat ehdotuksia: Claude yleensä noudattaa niitä, mutta päätös on sen. Hook on eri asia. Claude Code itse ajaa komentosi aina, kun tapahtuma laukeaa, joten toiminto tapahtuu varmasti joka kerta. Tyypillisiä käyttötapoja Anthropicin ohjeesta:
- Ilmoitukset, kun Claude odottaa lupaa tai vastaustasi.
- Automaattinen muotoilu jokaiselle tiedostolle sen jälkeen, kun Claude on muokannut tai kirjoittanut sen.
- Muokkausten estäminen arkaluonteisiin tiedostoihin, kuten
.env, tai mihin tahansa kansiossa.git/. - Kontekstin lisääminen, esimerkiksi projektin käytäntöjen muistuttaminen Claudelle keskustelun tiivistämisen jälkeen.
Käytetyimpiä tapahtumia ovat SessionStart (istunto alkaa tai jatkuu), UserPromptSubmit (lähetät kehotteen), PreToolUse (ennen työkalun kutsua, ja se voi estää sen), PostToolUse (työkalun onnistuneen kutsun jälkeen), Notification, Stop (Claude lopettaa vastauksensa), PreCompact ja SessionEnd. Hookien referenssin koko lista on paljon pidempi.
Tee ensimmäinen hook: työpöytäilmoitus
Tämä Anthropicin esimerkistä muokattu hook ilmoittaa macOS:ssä aina, kun Claude Code tarvitsee huomiotasi.
- Avaa
~/.claude/settings.jsontekstieditorissa. Luo tiedosto, jos sitä ei ole. - Lisää
hooks-objekti, jossa onNotification-merkintä. Sen sisään tulee lista matcher-ryhmiä; jokaisessa onmatcher(jätä se tyhjäksi merkkijonoksi, niin hook laukeaa jokaisesta ilmoituksesta) jahooks-lista, jossa on yksi kohde"type": "command". - Aseta komennoksi
osascript -e 'display notification "Claude Code needs your attention" with title "Claude Code"'. Linuxissa Anthropicin esimerkki käyttää sen sijaan komentoanotify-send. Muista escapata sisemmät lainausmerkit JSONissa. - Jos tiedostossa on jo
hooks-avain, lisääNotificationolemassa olevien tapahtumien viereen äläkä korvaa koko objektia. - Kirjoita Claude Codessa
/hooks. Hookien selaimen pitäisi listata uusi hookisi kohdassa Notification. Palaa takaisin painamalla Esc. - Pyydä Claudelta jotain, mikä vaatii luvan, ja siirry toiseen ikkunaan. Ilmoituksen pitäisi tulla näkyviin.
Jos haluat hookin laukeavan vain osasta ilmoituksia, aseta matcheriksi tyyppi, kuten permission_prompt (lupakysely on odottanut noin kuusi sekuntia) tai idle_prompt (Claude on valmis etkä ole kirjoittanut mitään noin minuuttiin).
Toinen esimerkki: muotoile tiedostot muokkausten jälkeen
Projektikohtaista hookia varten laita määritys tiedostoon .claude/settings.json projektin juureen. Käytä PostToolUse-tapahtumaa matcherilla Edit|Write, jolloin hook ajetaan vain tiedostoja muokkaavien työkalujen jälkeen. Anthropicin esimerkkikomento lukee muokatun polun JSONista, jonka Claude Code antaa vakiosyötteeseen, ja välittää sen Prettierille: jq -r '.tool_input.file_path' | xargs npx prettier --write. Se vaatii, että jq on asennettu. Onnistunut hook ei näy keskustelussa mitenkään; näet vain, että tiedosto on muotoiltu uudelleen.
Missä hookit määritetään
| Sijainti | Koskee | Jaettu? |
|---|---|---|
~/.claude/settings.json | Kaikkia projektejasi | Ei, vain omalla koneellasi |
.claude/settings.json | Yhtä projektia | Kyllä, voidaan commitoida |
.claude/settings.local.json | Yhtä projektia | Ei, pidetään gitin ulkopuolella |
| Hallinnoidut käytäntöasetukset (managed policy settings) | Koko organisaatiota | Ylläpitäjien määrittämät |
Pluginin hooks/hooks.json | Niin kauan kuin plugin on käytössä | Pluginin mukana |
| Skillin frontmatter | Istunnon loppua skillin käynnistämisen jälkeen | Skill-tiedostossa |
| Subagentin frontmatter | Niin kauan kuin subagent on käynnissä | Subagent-tiedostossa |
Kytke hookit pois asettamalla asetustiedostoon "disableAllHooks": true. Hallinnoitujen asetusten hookit jatkavat toimintaansa, ellei asetusta ole tehty myös niihin.
Miten hook vastaa
Kun tapahtuma laukeaa, Claude Code lähettää tapahtuman tiedot JSONina komentosi vakiosyötteeseen. Komentosi vastaa exit-koodillaan:
- Exit 0: jatka. Joissakin tapahtumissa, kuten
SessionStart, vakiotulosteeseen tulostettu teksti lisätään Clauden kontekstiin. - Exit 2: estä toiminto, jos tapahtuma sen sallii. Kirjoita syy virhetulosteeseen (stderr);
PreToolUse-tapahtumassa Claude saa sen ja voi muuttaa suuntaa. - Muut koodit: tulkitaan yleensä virheeksi, joka ei estä; toiminto jatkuu ja keskustelussa näkyy hook-virhe.
Tarkempaa hallintaa varten palauta exit 0 ja tulosta sen sijaan JSON-objekti. Valitse yksi tapa hookia kohden.
Hyvä tietää
- Komento-hookit eivät voi itse ajaa slash-komentoja eivätkä kutsua työkaluja.
- Komento-hookien oletusaikakatkaisu on 10 minuuttia, muutamissa tapahtumissa lyhyempi; muuta sitä hookikohtaisella
timeout-asetuksella (sekunteina). PostToolUseei voi perua mitään, koska työkalu on jo ajettu. KäytäPreToolUse-tapahtumaa estääksesi toiminnon.Stoplaukeaa aina, kun Claude lopettaa vastauksen, ei vain silloin, kun tehtävä on valmis.
Jos se ei toimi
- Hook ei laukea koskaan: aja
/hooksja tarkista, että se on listattu oikean tapahtuman alle. Matcherit erottelevat isot ja pienet kirjaimet, ja niiden on vastattava työkalun nimeä tarkasti, esimerkiksiEdit, eiedit. - "/hooks" ei näytä mitään: tarkista, että JSON on kelvollista (ei ylimääräisiä pilkkuja lopussa eikä kommentteja) ja oikeassa tiedostossa. Muutokset tulevat yleensä voimaan automaattisesti; jos eivät, käynnistä istunto uudelleen.
- "hook error" keskustelussa: testaa skriptiä syöttämällä sille esimerkki-JSON putkella ja tarkistamalla
echo $?. Käytä skripteille absoluuttisia polkuja tai$CLAUDE_PROJECT_DIR-muuttujaa, asennajq, jos se puuttuu, ja tee skripteistä suoritettavia komennollachmod +x. - macOS-ilmoitusta ei tule: aja
osascript-komento kerran Päätteessä (Terminal) ja kytke sitten Script Editorille päälle Allow Notifications (Salli ilmoitukset) kohdassa System Settings > Notifications (Järjestelmäasetukset > Ilmoitukset).
Pidä kirjaa siitä, mitä kukin istunto jättää kesken
Workbranchin plugin Claude Codelle käyttää istunnon alussa näytettävää yhteenvetoa: kansiossa, joka on linkitetty Workbranch-projektiin, se näyttää istunnon alkaessa, mikä on vielä auki, ja kun sanot "save this to Workbranch", istunnon tehtävät, päätökset ja avoimet kysymykset tallentuvat siihen projektiin. Katso Workbranch for Claude. Onko Claude Code sinulle uusi? Aloita ohjeesta näin pääset alkuun Claude Coden kanssa.
Lähteet
- Use Claude Code with your Pro or Max plan (Claude Help Center, tarkistettu 30.10.2026)
- Automate actions with hooks (Claude Code docs, tarkistettu 30.10.2026)
Usein kysytyt kysymykset
Voiko Claude kirjoittaa hookin puolestani?
Kyllä. Anthropicin ohjeen mukaan voit kuvailla haluamasi hookin Claude Coden kehotteessa ja pyytää Claudea lisäämään sen asetuksiisi. Tarkista tulos jälkeenpäin komennolla /hooks.
Voiko hook pysäyttää Clauden myös bypass-tilassa?
PreToolUse-hook, joka palauttaa deny-päätöksen, estää työkalun kaikissa käyttöoikeustiloissa, myös bypassPermissions-tilassa. Siksi hookit sopivat sääntöihin, joita ei voi kiertää vaihtamalla tilaa.
Onko hookeja, jotka käyttävät mallia skriptin sijaan?
Kyllä. Shell-komentojen lisäksi hook voi olla HTTP-pyyntö, MCP-työkalun kutsu, yksittäinen Claude-mallin arvioima kehote tai kokeellinen agent-hook, jolla on pääsy työkaluihin.