Claude Code hook je komanda koju aplikacija izvršava u određenoj tački sesije. Ovaj vodič dodaje jedan projektni SessionStart hook koji čita trenutnu Git granu i prosleđuje kratak red konteksta kada pokrenete ili nastavite razgovor. Prati aktuelnu Anthropic referentnu dokumentaciju za hook mehanizme, proverenu 19. oktobra 2026. BIG CHANGE je direktno proverio skriptu pomoću Node i proverio JSON podešavanja; nismo pokrenuli Claude Code hook niti testirali odgovor modela.

Velika promena

  • Šta se promenilo: Ovaj projektni SessionStart hook prosleđuje kratak red sa Git granom kada Claude Code pokrene ili nastavi razgovor.
  • Zašto je važno: Trenutna grana ulazi u kontekst sesije pri pokretanju ili nastavku, bez ručnog lepljenja svaki put.
  • Na šta obratiti pažnju: Kontekst ne sprovodi pravilo niti garantuje odgovor modela. Proverite stvarno prosleđivanje pri pokretanju i nastavku u sopstvenom pouzdanom projektu.

Pre instalacije

Koristite Git projekat koji smete da menjate. Claude Code, Node.js i Git moraju biti dostupni u istom terminalu, a potrebna vam je i dozvola da menjate projektnu datoteku .claude/settings.json. Proverite node --version, git --version i claude --version. Na računaru za pripremu bili su Claude Code 2.1.301 i Node 24.19.0; te zabeležene verzije nisu minimalni zahtevi.

Pregledajte naziv grane pre slanja modelu. Grana može sadržati ime klijenta, oznaku zahteva ili naziv incidenta. Filtriranje znakova i skraćivanje teksta ne uklanjaju to značenje. Instalirajte primer samo ako je naziv grane odobren za kontekst modela. U suprotnom izmenite skriptu da ispisuje odobren status bez osetljivih podataka i pregledajte izmenu pre instalacije. Anthropic dokumentacija o korišćenju podataka objašnjava postupanje servisa sa podacima; primenite i dozvole sopstvenog projekta.

Hook komande rade sa vašim korisničkim dozvolama. Pregledajte postojeće projektne i korisničke hook komande, pravila organizacije i celu skriptu pre uključivanja. Projektna podešavanja mogu se sačuvati u repozitorijumu; .claude/settings.local.json ostaje lokalno. Ovaj primer koristi datoteku projektnih podešavanja kako bi konfiguracija važila za taj projekat.

Instalirajte dve datoteke

  1. Napravite .claude/hooks/ u projektu. Sačuvajte ceo ovaj blok kao .claude/hooks/session-context.cjs:
JavaScript
'use strict';

const { execFileSync } = require('node:child_process');

const project = process.env.CLAUDE_PROJECT_DIR;
if (!project) {
  process.stderr.write('CLAUDE_PROJECT_DIR is unavailable\n');
  process.exit(1);
}

try {
  const raw = execFileSync('git', ['-C', project, 'branch', '--show-current'], {
    encoding: 'utf8',
    timeout: 1500,
    maxBuffer: 4096,
    stdio: ['ignore', 'pipe', 'pipe'],
  }).trim();
  const branch = raw ? raw.replace(/[^A-Za-z0-9._/-]/g, '_').slice(0, 80) : 'detached HEAD';
  process.stdout.write(`Current project branch: ${branch}\n`);
} catch {
  process.stderr.write('Could not read the project branch; check Git and project path\n');
  process.exit(1);
}

Git potproces ima vremensko ograničenje od 1,5 sekundi i izlazni bafer od 4.096 bajtova. Prazan rezultat grane, kao kod detached HEAD, postaje detached HEAD. Nedostajuća putanja projekta ili Git greška daju kratku stderr dijagnostiku i izlazni kod 1.

  1. Otvorite postojeću datoteku .claude/settings.json. Spojite stavku hooks.SessionStart ispod sa drugim podešavanjima i grupama hook komandi; sačuvajte postojeće stavke. Blok prikazuje ceo settings.example.json iz pregledanog paketa. Ako datoteka već ima stavke SessionStart , dodajte ovu grupu u njihov niz umesto da zamenite niz.
JSON
{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume",
        "hooks": [
          {
            "type": "command",
            "command": "node",
            "args": ["${CLAUDE_PROJECT_DIR}/.claude/hooks/session-context.cjs"],
            "timeout": 5
          }
        ]
      }
    ]
  }
}

Matcher obuhvata novu i nastavljenu sesiju. Anthropic navodi i clear, compact i fork kao SessionStart izvore; ovaj primer ih namerno izostavlja. Polje args bira exec oblik: Claude Code poziva node sa razrešenom putanjom projektne skripte kao jednim argumentom, bez navodnika ili obrade komandnog interpretera. Na Windows sistemu, node.exe mora upućivati na izvršnu datoteku; .cmd posrednička skripta nije pogodna za exec oblik. Vremensko ograničenje hook komande od pet sekundi odvojeno je od Git ograničenja skripte od 1,5 sekundi.

Proverite skriptu, pa Claude Code

  1. Pre otvaranja Claude Code pokrenite skriptu u projektnom terminalu i uporedite izlaz sa Git rezultatom. U PowerShell:
PowerShell
$env:CLAUDE_PROJECT_DIR = (Get-Location).Path
node .claude/hooks/session-context.cjs
git branch --show-current

U Bash:

Terminal
CLAUDE_PROJECT_DIR="$PWD" node .claude/hooks/session-context.cjs
git branch --show-current

Očekujte tačno jedan stdout red skripte, Current project branch: BRANCH, gde je BRANCH Git rezultat posle filtriranja znakova i ograničenja na 80 znakova. Detached HEAD ispisuje Current project branch: detached HEAD. Direktna provera potvrđuje samo da lokalna skripta radi u ovom terminalu. Pri našoj pripremnoj proveri obična grana odgovarala je Git rezultatu; nedostajuće i nevažeće putanje projekta dale su prazan stdout, stderr dijagnostiku i izlaz 1. Ograničenje dugog naziva i rezervnu vrednost za detached HEAD pregledali smo u izvornom kodu, ali te slučajeve nismo izvršili.

  1. Pokrenite nov interaktivni Claude Code proces u pouzdanom projektu uz claude --debug-file STARTUP_PRIVATE_LOG, koristeći privatnu putanju koju kontrolišete. Pregledajte projektne i korisničke hook komande pre prihvatanja poverenja u radni prostor. U dijagnostičkom dnevniku potražite SessionStart događaj sa izvorom startup, izabranom putanjom skripte, izlaznim statusom i obradom izlaza. Pitajte Claude koji je kontekst grane dobio, bez dozvole da koristi alat ili samostalno čita Git. Uporedite odgovor i dijagnostički zapis sa direktnim rezultatom. Hook stdout ulazi u Claude kontekst; nije obećano da će se prikazati kao poruka u vidljivom interfejsu.
  2. Završite tu sesiju. Nastavite je u posebnom procesu uz claude --debug-file RESUME_PRIVATE_LOG --resume, pa proverite SessionStart resume događaj i ponovite proveru upitom bez alata ili ponovnog čitanja Git. Oba dijagnostička dnevnika držite privatnim jer mogu otkriti detalje projekta. Neinteraktivno -p ili SDK izvršavanje ne prikazuje isti zahtev za poverenje u radni prostor i može automatski pokrenuti hook komande repozitorijuma, zato za ovu proveru koristite interaktivni tok. Anthropic navodi da nadzor datoteka obično preuzima izmene hook podešavanja, ali nov proces daje jasniji test pokretanja i nastavka.

Ako redovan rad kasnije promeni granu, ponovite direktnu proveru i novu sesiju da vidite da li se red promenio. Ne menjajte grane samo da biste tvrdili da je vodič testiran.

Ako se ne pokrene

Počnite od direktnog rezultata skripte, pa proverite spajanje JSON podešavanja, zapis SessionStart , startup|resume matcher, putanju korena projekta, dostupnost node i git, poverenje u radni prostor i dijagnostičke greške. Nedostajući CLAUDE_PROJECT_DIR ispisuje CLAUDE_PROJECT_DIR is unavailable na stderr. Neispravna putanja projekta ili Git greška ispisuje Could not read the project branch; check Git and project path. Oba slučaja završavaju kodom 1 bez reda konteksta. Greška SessionStart služi dijagnostici i ne blokira rad; ne može biti uslov koji zaustavlja radnju. Anthropic dokumentuje PreToolUse za kontrolisanje radnje alata, što je drugi događaj i zahteva zasebno pregledano rešenje.

Skripta izvršava samo lokalni Git i ne šalje mrežni zahtev niti poziva model. Pokretanje Claude Code, nastavak i provere upitima mogu trošiti raspoloživu upotrebu naloga, provajdera ili modela; Anthropic vodič za troškove navodi aktuelne uslove. Ovaj vodič ne utvrđuje fiksnu cenu niti prijavljuje plaćeni test sesije.

Za zaseban zadatak kada razgovor već traje, naš vodič za pregled konteksta i nastavak Claude Code sesije objašnjava pregled konteksta i nastavak. Ne podešava ovaj hook za pokretanje.

Izvori i dodatno čitanje