Workbranch › Veiledninger
VeiledningSlik bruker du hooks i Claude Code
Du vil at noe skal skje hver gang, for eksempel at en fil formateres etter at Claude har redigert den, eller et varsel når Claude venter på deg, uten å håpe at Claude husker det. Det er akkurat det hooks gjør. Denne veiledningen forklarer hva de er, går gjennom en første hook og viser hvor de skal ligge.
Kort svar: en hook er en skallkommando som Claude Code kjører automatisk på et fast tidspunkt, for eksempel før et verktøy kjører, etter at en fil er redigert, eller når Claude trenger input fra deg. Du legger til hooks under en hooks-nøkkel i en innstillingsfil som ~/.claude/settings.json (alle prosjekter) eller .claude/settings.json (ett prosjekt), og skriver så /hooks for å bekrefte at Claude Code ser dem.
Navn på hendelser, filplasseringer og oppførsel nedenfor kommer fra Anthropics dokumentasjon for Claude Code per oktober 2026. Claude Code oppdateres ofte, så kjør claude update hvis noe mangler.
Hva hooks er og hvorfor de hjelper
Instruksjoner i en prompt eller en CLAUDE.md-fil er forslag: Claude følger dem som regel, men det er Claude som bestemmer. En hook er noe annet. Claude Code kjører selv kommandoen din hver gang hendelsen inntreffer, så handlingen er deterministisk. Typiske bruksområder fra Anthropics veiledning:
- Varsler når Claude venter på en tillatelse eller på svaret ditt.
- Automatisk formatering av hver fil etter at Claude har redigert eller skrevet den.
- Blokkering av endringer i sensitive filer som
.enveller alt i.git/. - Ekstra kontekst, for eksempel å minne Claude på prosjektets konvensjoner etter at samtalen er komprimert.
Noen av de mest brukte hendelsene er SessionStart (en økt starter eller gjenopptas), UserPromptSubmit (du sender en prompt), PreToolUse (før et verktøykall, og den kan blokkere det), PostToolUse (etter at et verktøykall har lykkes), Notification, Stop (Claude er ferdig med å svare), PreCompact og SessionEnd. Den fullstendige listen i referansen for hooks er mye lengre.
Sett opp din første hook: et skrivebordsvarsel
Dette eksempelet, tilpasset fra Anthropics gjennomgang, varsler deg på macOS hver gang Claude Code trenger oppmerksomheten din.
- Åpne
~/.claude/settings.jsoni en teksteditor. Lag filen hvis den ikke finnes. - Legg til et
hooks-objekt med enNotification-oppføring. Inne i den ligger en liste med matcher-grupper; hver har enmatcher(la den være en tom streng for å reagere på alle varsler) og enhooks-liste med ett element med"type": "command". - Sett kommandoen til
osascript -e 'display notification "Claude Code needs your attention" with title "Claude Code"'. På Linux bruker Anthropics eksempelnotify-sendi stedet. Husk å escape de indre doble anførselstegnene i JSON. - Har filen allerede en
hooks-nøkkel, legger duNotificationved siden av de eksisterende hendelsene i stedet for å erstatte hele objektet. - I Claude Code skriver du
/hooks. Hooks-oversikten skal vise den nye hooken din under Notification. Trykk Esc for å gå tilbake. - Be Claude om noe som krever tillatelse, og bytt til et annet vindu. Et varsel skal dukke opp.
Vil du bare reagere på noen varsler, setter du matcheren til en type som permission_prompt (et spørsmål om tillatelse har ventet i omtrent seks sekunder) eller idle_prompt (Claude er ferdig og du har ikke skrevet noe på omtrent ett minutt).
Et eksempel til: formater filer etter endringer
For en prosjekt-hook legger du konfigurasjonen i .claude/settings.json i prosjektroten. Bruk hendelsen PostToolUse med matcheren Edit|Write, så den bare kjører etter verktøy som redigerer filer. Anthropics eksempelkommando leser stien til den redigerte filen fra JSON-en Claude Code sender på standard input, og gir den videre til Prettier: jq -r '.tool_input.file_path' | xargs npx prettier --write. Den krever at jq er installert. En vellykket hook viser ingenting i samtalen; du ser bare at filen er formatert på nytt.
Hvor hooks settes opp
| Plassering | Gjelder for | Delt? |
|---|---|---|
~/.claude/settings.json | Alle prosjektene dine | Nei, bare på maskinen din |
.claude/settings.json | Ett prosjekt | Ja, kan committes |
.claude/settings.local.json | Ett prosjekt | Nei, holdes utenfor git |
| Administrerte policyinnstillinger | Hele organisasjonen | Satt av administratorer |
En plugins hooks/hooks.json | Så lenge pluginen er slått på | Følger med pluginen |
| Frontmatter i en skill | Resten av økten etter at skillen er kalt | I skill-filen |
| Frontmatter i en subagent | Mens den subagenten kjører | I subagent-filen |
For å slå av hooks setter du "disableAllHooks": true i en innstillingsfil. Hooks fra administrerte innstillinger fortsetter å kjøre, med mindre det også er satt der.
Hvordan en hook svarer
Når en hendelse inntreffer, sender Claude Code detaljer om hendelsen som JSON til kommandoens standard input. Kommandoen svarer med exit-koden sin:
- Exit 0: fortsett. For noen hendelser, som
SessionStart, legges ren tekst skrevet til standard output inn i Claudes kontekst. - Exit 2: blokker handlingen der hendelsen tillater det. Skriv begrunnelsen til standard error; for
PreToolUsemottar Claude den og kan endre kurs. - Andre koder: behandles vanligvis som en feil som ikke blokkerer; handlingen går videre, og transkripsjonen viser en hook-feil.
For finere kontroll avslutter du med exit 0 og skriver ut et JSON-objekt i stedet. Velg én fremgangsmåte per hook.
Greit å vite
- Kommando-hooks kan ikke kjøre slash-kommandoer eller kalle verktøy selv.
- Standard tidsavbrudd for kommando-hooks er 10 minutter, kortere for noen få hendelser; sett
timeout(i sekunder) per hook for å endre det. PostToolUsekan ikke angre noe, fordi verktøyet allerede har kjørt. BrukPreToolUsefor å hindre en handling.Stopinntreffer hver gang Claude er ferdig med et svar, ikke bare når en oppgave er fullført.
Hvis det ikke fungerer
- Hooken slår aldri til: kjør
/hooksog sjekk at den står under riktig hendelse. Matchere skiller mellom store og små bokstaver og må passe nøyaktig med verktøynavnet, for eksempelEdit, ikkeedit. - «/hooks» viser ingenting: sjekk at JSON-en er gyldig (ingen komma på slutten eller kommentarer) og ligger i riktig fil. Endringer plukkes vanligvis opp automatisk; hvis ikke, start økten på nytt.
- «hook error» i transkripsjonen: test skriptet ved å sende eksempel-JSON inn i det og sjekke
echo $?. Bruk absolutte stier eller$CLAUDE_PROJECT_DIRfor skript, installerjqhvis det mangler, og gjør skriptene kjørbare medchmod +x. - Ingen varsel på macOS: kjør
osascript-kommandoen én gang i Terminal, og slå så på Allow Notifications (Tillat varslinger) for Script Editor under System Settings > Notifications (Systeminnstillinger > Varslinger).
Hold oversikt over hva hver økt lar stå åpent
Workbranch-pluginen for Claude Code bruker en oppsummering ved øktstart: i en mappe som er koblet til et Workbranch-prosjekt, viser den hva som fortsatt er åpent når en økt begynner, og sier du «save this to Workbranch» (lagre dette i Workbranch), legges øktens oppgaver, beslutninger og åpne spørsmål inn i det prosjektet. Se Workbranch for Claude. Ny i Claude Code? Start med slik kommer du i gang med Claude Code.
Kilder
- Use Claude Code with your Pro or Max plan (Claude Help Center, sjekket 30. oktober 2026)
- Automate actions with hooks (Claude Code docs, sjekket 30. oktober 2026)
Vanlige spørsmål
Kan Claude skrive en hook for meg?
Ja. Anthropics veiledning sier at du kan beskrive hooken du vil ha i Claude Code-prompten og be Claude legge den til i innstillingene dine. Sjekk resultatet med /hooks etterpå.
Kan en hook stoppe Claude selv i bypass-modus?
En PreToolUse-hook som returnerer en deny-beslutning, blokkerer verktøyet i alle tillatelsesmoduser, også bypassPermissions. Det er det som gjør hooks nyttige for regler folk ikke kan slå av ved å bytte modus.
Finnes det hooks som bruker en modell i stedet for et skript?
Ja. I tillegg til skallkommandoer kan en hook være en HTTP-forespørsel, et kall til et MCP-verktøy, én enkelt prompt som vurderes av en Claude-modell, eller en eksperimentell agent-hook med tilgang til verktøy.