Um hook do Claude Code é um comando executado pelo aplicação em um ponto identificado da sessão. Este guia adiciona um hook de projeto SessionStart que lê a branch Git atual e fornece uma linha breve de contexto ao iniciar ou retomar a conversa. Segue a referência atual de hooks da Anthropic, verificada a 19 de outubro de 2026. A BIG CHANGE verificou diretamente o script com Node e o JSON de configuração; não executámos um hook chamado pelo Claude Code nem testámos uma resposta do modelo.

A grande mudança

  • O que mudou: Este hook do projeto SessionStart fornece uma linha breve de branch Git quando Claude Code inicia ou retoma a conversa.
  • Por que importa: A branch atual chega ao contexto no início ou na retoma, sem colagem manual toda vez.
  • O que observar: Contexto não impõe regras nem garante resposta. Verifique a entrega real no início e na retoma do seu projeto confiável.

Antes de instalar

Use um projeto Git que possa modificar. São necessários Claude Code, Node.js e Git no mesmo terminal e permissão para editar o ficheiro do projeto .claude/settings.json. Verifique node --version, git --version e claude --version. O ambiente de preparação tinha Claude Code 2.1.301 e Node 24.19.0; versões observadas não são requisitos mínimos.

Revise o nome da branch antes de enviá-lo a um modelo. Pode conter cliente, chamado ou incidente. Filtrar caracteres e encurtar a string não remove esse significado. Instale somente se o nome estiver aprovado para o contexto do modelo. Caso contrário, adapte o script para emitir um estado aprovado e não sensível e revise a mudança antes da instalação. A documentação de dados da Anthropic explica o tratamento pelo serviço; aplique também as permissões do projeto.

Comandos de hooks executam com suas permissões de utilizador. Inspecione hooks de projeto e utilizador, política da organização e script completo antes de ativar. Configurações do projeto podem entrar em commits; .claude/settings.local.json fica local. O exemplo usa o ficheiro de configuração do projeto para limitar o escopo.

Instale os dois ficheiros

  1. Crie .claude/hooks/ no projeto. Salve o bloco inteiro como .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);
}

O processo filho Git tem limite de 1,5 segundo e buffer de saída de 4.096 bytes. Branch vazia, como no HEAD destacado, vira detached HEAD. Caminho ausente ou falha Git gera diagnóstico breve em stderr e código de saída 1.

  1. Abra seu ficheiro existente .claude/settings.json. Combine a entrada hooks.SessionStart abaixo com outras configurações e grupos, preservando os existentes. O bloco mostra o ficheiro completo settings.example.json do pacote revisado. Se já houver entradas SessionStart , adicione o grupo ao array em vez de substituí-lo.
JSON
{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume",
        "hooks": [
          {
            "type": "command",
            "command": "node",
            "args": ["${CLAUDE_PROJECT_DIR}/.claude/hooks/session-context.cjs"],
            "timeout": 5
          }
        ]
      }
    ]
  }
}

O padrão cobre sessão nova e retoma. A Anthropic também documenta clear, compact e fork como origens de SessionStart ; este exemplo as omite de propósito. O campo args seleciona a forma exec: Claude Code invoca node com o caminho resolvido do script como um argumento, sem aspas ou interpretação pelo shell. No Windows, node.exe precisa resolver para um executável real; um adaptador .cmd não serve para exec. O limite de cinco segundos do hook é separado do limite Git de 1,5 segundo do script.

Verifique o script e depois o Claude Code

  1. Antes de abrir Claude Code, execute o script no terminal do projeto e compare a saída com Git. No PowerShell:
PowerShell
$env:CLAUDE_PROJECT_DIR = (Get-Location).Path
node .claude/hooks/session-context.cjs
git branch --show-current

No Bash:

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

Espere exatamente uma linha em stdout, Current project branch: BRANCH, em que BRANCH é o resultado Git após filtrar caracteres e limitar a 80. HEAD destacado imprime Current project branch: detached HEAD. A verificação direta só comprova o script local nesse terminal. Na preparação, a branch normal coincidiu com Git; caminhos ausentes e inválidos deram stdout vazio, diagnóstico stderr e saída 1. Inspecionámos no código o limite dos nomes longos e a alternativa para HEAD destacado, mas não executámos esses casos.

  1. Inicie um novo processo interativo de Claude Code no projeto confiável com claude --debug-file STARTUP_PRIVATE_LOG, usando caminho privado sob seu controle. Revise hooks de projeto e utilizador antes de aceitar a confiança do espaço de trabalho. Procure no registo de depuração um evento SessionStart de origem startup, caminho do script selecionado, estado de saída e tratamento da saída. Pergunte qual contexto de branch Claude recebeu sem permitir ferramenta nem releitura de Git. Compare resposta e registro com o resultado direto. stdout do hook entra no contexto; não há promessa de mensagem visível na interface.
  2. Saia dessa sessão. Retome em processo separado com claude --debug-file RESUME_PRIVATE_LOG --resume, verifique o evento SessionStart resume e repita a pergunta sem ferramenta ou nova leitura Git. Mantenha ambos os registos privados, pois podem expor detalhes do projeto. Uma execução não interativa -p ou via SDK não tem o mesmo aviso de confiança e pode executar hooks automaticamente; use o fluxo interativo. A Anthropic diz que seu observador de ficheiros normalmente capta mudanças nos hooks, mas um processo novo torna mais claro o teste de início e retoma.

Se o trabalho normal mudar a branch depois, repita a verificação direta e uma sessão nova para ver a linha. Não mude de branch apenas para afirmar que este guia foi testado.

Se não executar

Comece pela saída direta e verifique combinação JSON, grafia de SessionStart , padrão startup|resume , raiz do projeto, disponibilidade de node e git, confiança e erros de depuração. A ausência de CLAUDE_PROJECT_DIR imprime CLAUDE_PROJECT_DIR is unavailable em stderr. Caminho errado ou falha Git imprime Could not read the project branch; check Git and project path. Ambos saem com 1 e sem linha de contexto. Uma falha de SessionStart é diagnóstica e não bloqueante; não serve de barreira de ação. A Anthropic documenta PreToolUse para controlar ação de ferramenta, outro evento que exige seu próprio projeto revisado.

O script apenas executa Git local, sem pedido de rede ou chamada ao modelo. Início, retoma e perguntas no Claude Code podem consumir quota da conta, fornecedor ou modelo; o guia de custos da Anthropic traz os termos atuais. Não há preço fixo nem relato de teste de sessão paga.

Para outra tarefa depois de começar a conversa, nosso guia de inspeção de contexto e continuação de sessão Claude Code cobre contexto e continuidade. Não configura este hook inicial.

Fontes e leituras adicionais

  • Anthropic, Referência de hooks do Claude Code — Especificação primária atual verificada em 19 de outubro de 2026. Documenta origens e padrões de SessionStart , forma exec args, variáveis de caminho, stdout como contexto, recarga de configuração, confiança, registos e falhas não bloqueantes. É documentação, não execução de hook pela BIG CHANGE.
  • Anthropic, Automatize ações com hooks — Guia oficial de configuração e testes. O script e definições exatos acima são exemplo limitado da BIG CHANGE revisado para este guia, não resultado de teste copiado do fornecedor.
  • Anthropic, Configuração do Claude Code — Instalação e requisitos de ambiente. Verifique as instruções atuais da plataforma antes do exemplo.
  • Anthropic, Uso de dados do Claude Code — Termos atuais do provedor antes de enviar dados da branch ao contexto; autorização do projeto é decisão separada.
  • Anthropic, Gira custos com eficácia — Orientações atuais de conta e uso para testes interativos. O script Git local não chama rede nem modelo.