Workbranch › Guider
GuideSå använder du hooks i Claude Code
Du vill att något ska hända varje gång, till exempel att en fil formateras efter att Claude har redigerat den eller att du får en signal när Claude väntar på dig, utan att hoppas att Claude kommer ihåg det. Det är precis vad hooks gör. Den här guiden förklarar vad de är, går igenom en första hook och visar var du lägger dem.
Snabbt svar: en hook är ett skalkommando som Claude Code kör automatiskt vid en bestämd punkt, till exempel innan ett verktyg körs, efter att en fil har redigerats eller när Claude behöver din input. Du lägger till hooks under nyckeln hooks i en inställningsfil som ~/.claude/settings.json (alla projekt) eller .claude/settings.json (ett projekt), och skriver sedan /hooks för att bekräfta att Claude Code ser dem.
Händelsenamn, filplatser och beteende nedan kommer från Anthropics dokumentation för Claude Code i oktober 2026. Claude Code uppdateras ofta, så kör claude update om något saknas.
Vad hooks är och varför de hjälper
Instruktioner i en prompt eller i en CLAUDE.md-fil är förslag: Claude följer dem oftast, men det är Claude som bestämmer. En hook är något annat. Claude Code kör självt ditt kommando varje gång händelsen inträffar, så åtgärden är deterministisk. Typiska användningar från Anthropics guide:
- Notiser när Claude väntar på ett godkännande eller på ditt svar.
- Automatisk formatering av varje fil efter att Claude har redigerat eller skrivit den.
- Blockering av ändringar i känsliga filer som
.enveller allt i.git/. - Extra kontext, till exempel att påminna Claude om projektets konventioner efter att konversationen har komprimerats.
Några av de mest använda händelserna är SessionStart (en session startar eller återupptas), UserPromptSubmit (du skickar en prompt), PreToolUse (före ett verktygsanrop, och den kan blockera det), PostToolUse (efter att ett verktygsanrop lyckats), Notification, Stop (Claude har svarat klart), PreCompact och SessionEnd. Hela listan i referensen för hooks är mycket längre.
Skapa din första hook: en skrivbordsnotis
Det här exemplet, anpassat från Anthropics genomgång, ger dig en notis i macOS varje gång Claude Code behöver din uppmärksamhet.
- Öppna
~/.claude/settings.jsoni en textredigerare. Skapa filen om den inte finns. - Lägg till ett
hooks-objekt med enNotification-post. I den ligger en lista med matcher-grupper; var och en har enmatcher(lämna den som en tom sträng för att reagera på alla notiser) och enhooks-lista med ett objekt av typen"type": "command". - Sätt kommandot till
osascript -e 'display notification "Claude Code needs your attention" with title "Claude Code"'. På Linux använder Anthropics exempel i ställetnotify-send. Kom ihåg att escapa de inre dubbla citattecknen i JSON. - Om filen redan har en
hooks-nyckel lägger du tillNotificationbredvid de befintliga händelserna i stället för att ersätta hela objektet. - Skriv
/hooksi Claude Code. Hook-vyn ska lista din nya hook under Notification. Tryck på Esc för att gå tillbaka. - Be Claude om något som kräver godkännande och byt till ett annat fönster. En notis ska dyka upp.
Vill du bara reagera på vissa notiser sätter du matchern till en typ som permission_prompt (en behörighetsfråga har väntat i ungefär sex sekunder) eller idle_prompt (Claude är klar och du har inte skrivit något på ungefär en minut).
Ett andra exempel: formatera filer efter ändringar
För en projekt-hook lägger du konfigurationen i .claude/settings.json i projektets rot. Använd händelsen PostToolUse med matchern Edit|Write, så att den bara körs efter verktyg som redigerar filer. Anthropics exempelkommando läser den redigerade sökvägen från den JSON som Claude Code skickar på standard input och lämnar den till Prettier: jq -r '.tool_input.file_path' | xargs npx prettier --write. Det kräver att jq är installerat. En lyckad hook visar ingenting i konversationen; du ser bara att filen har formaterats om.
Var hooks konfigureras
| Plats | Gäller för | Delas? |
|---|---|---|
~/.claude/settings.json | Alla dina projekt | Nej, bara din dator |
.claude/settings.json | Ett projekt | Ja, kan committas |
.claude/settings.local.json | Ett projekt | Nej, hålls utanför git |
| Hanterade policyinställningar | Hela organisationen | Sätts av administratörer |
Ett plugins hooks/hooks.json | Så länge pluginet är påslaget | Följer med pluginet |
| Frontmatter i en skill | Resten av sessionen efter att skillen har anropats | I skill-filen |
| Frontmatter i en subagent | Medan den subagenten körs | I subagent-filen |
För att stänga av hooks sätter du "disableAllHooks": true i en inställningsfil. Hooks från hanterade inställningar fortsätter att köras om det inte också sätts där.
Hur en hook svarar
När en händelse inträffar skickar Claude Code detaljer om händelsen som JSON till ditt kommandos standard input. Ditt kommando svarar med sin exit code:
- Exit 0: fortsätt. För vissa händelser, som
SessionStart, läggs vanlig text som skrivs till standard output till i Claudes kontext. - Exit 2: blockera åtgärden där händelsen tillåter det. Skriv orsaken till standard error; för
PreToolUsefår Claude den och kan ändra kurs. - Andra koder: behandlas oftast som ett icke-blockerande fel; åtgärden genomförs och transkriptet visar ett hook-fel.
För finare kontroll avslutar du med exit 0 och skriver i stället ut ett JSON-objekt. Välj ett av sätten per hook.
Bra att veta
- Kommando-hooks kan inte själva köra slash-kommandon eller anropa verktyg.
- Standardgränsen för kommando-hooks är 10 minuter, kortare för några händelser; sätt
timeout(i sekunder) per hook för att ändra den. PostToolUsekan inte ångra något, eftersom verktyget redan har körts. AnvändPreToolUseför att förhindra en åtgärd.Stopinträffar varje gång Claude har svarat klart, inte bara när en uppgift är färdig.
Om det inte fungerar
- Hooken körs aldrig: kör
/hooksoch kontrollera att den står under rätt händelse. Matchers skiljer på stora och små bokstäver och måste matcha verktygets namn exakt, till exempelEdit, inteedit. - ”/hooks” visar ingenting: kontrollera att JSON-koden är giltig (inga avslutande kommatecken eller kommentarer) och ligger i rätt fil. Ändringar plockas normalt upp automatiskt; annars startar du om sessionen.
- ”hook error” i transkriptet: testa skriptet genom att skicka in exempel-JSON via en pipe och kontrollera
echo $?. Använd absoluta sökvägar eller$CLAUDE_PROJECT_DIRför skript, installerajqom det saknas och gör skripten körbara medchmod +x. - Ingen notis i macOS: kör
osascript-kommandot en gång i Terminal och slå sedan på Allow Notifications (Tillåt notiser) för Script Editor (Manusredigerare) i System Settings > Notifications (Systeminställningar > Notiser).
Håll koll på vad varje session lämnar öppet
Workbranch-pluginet för Claude Code använder en sammanfattning vid sessionsstart: i en mapp som är kopplad till ett Workbranch-projekt visar det vad som fortfarande är öppet när en session börjar, och säger du ”save this to Workbranch” (spara det här i Workbranch) sorteras sessionens uppgifter, beslut och öppna frågor in i det projektet. Se Workbranch för Claude. Ny i Claude Code? Börja med så kommer du i gång med Claude Code.
Källor
- Use Claude Code with your Pro or Max plan (Claude Help Center, kontrollerad 30 oktober 2026)
- Automate actions with hooks (Claude Code docs, kontrollerad 30 oktober 2026)
Vanliga frågor
Kan Claude skriva en hook åt mig?
Ja. Enligt Anthropics guide kan du beskriva den hook du vill ha i Claude Codes prompt och be Claude lägga till den i dina inställningar. Kontrollera resultatet med /hooks efteråt.
Kan en hook stoppa Claude även i bypass mode?
En PreToolUse-hook som returnerar beslutet deny blockerar verktyget i alla behörighetslägen, även bypassPermissions. Det är därför hooks är användbara för regler som ingen kan stänga av genom att byta läge.
Finns det hooks som använder en modell i stället för ett skript?
Ja. Förutom skalkommandon kan en hook vara ett HTTP-anrop, ett anrop till ett MCP-verktyg, en enskild prompt som bedöms av en Claude-modell eller en experimentell agent-hook med tillgång till verktyg.