Project Sentinel: handoff de contexto do Claude Code e controle da execução
Faixa de status, handoff de contexto, cache de prompt e regras de permissão para execuções longas do Claude Code.
Permissões
- Lê arquivosPode ler arquivos e listar diretórios na sua máquina ($.fs.read / list / stat / exists).
- Executa comandosPode executar programas de shell na sua máquina ($.process.run / spawn). Confira no código-fonte exatamente quais.
- Chama o modelo (usa sua cota)Pode enviar suas próprias requisições ao Claude, que contam no uso do seu plano ($.model.* / $.agent.spawn).
- Intercepta chamadas de ferramentasVê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
- Lê seus promptsPode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
- Altera a interfaceDesenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
- Adiciona comandos/ferramentasRegistra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
- Armazena dadosGuarda dados entre sessões no armazenamento privado do plugin ($.store.*).
- testado com
- v2.1.296
- último teste
- requer
- Claude Code ≥ 2.1.287
- superfícies
- acima do prompt, painel, spinner, status, notificação
- código-fonte
- Project Sentinel contributors (Arjun0014) (MIT)
Instale dentro do Claude Code:
/plugin install project-sentinel --marketplace Arjun0014/project-sentinelO que este mod faz?
O Project Sentinel é um mod da comunidade criado pelos colaboradores do Project Sentinel (Arjun0014). Ele foi feito para execuções longas do Claude Code, e o seu recurso mais conhecido é o handoff de contexto do Claude Code: quando a janela de contexto enche, o Context Autopilot pede ao Claude que termine a unidade de trabalho atual e escreva um arquivo de notas, e então limpa o contexto e começa um novo que lê essas notas. O mod se chamava Control Room até a versão 1.4.0, e é por isso que o painel e a faixa de status ainda levam esse nome.
Em volta disso, ele adiciona muita coisa. Uma faixa de status acima do prompt mostra o uso do contexto, o cache de prompt e o custo da execução. O Cache Guardian acompanha por quanto tempo o cache de prompt continua quente e pede confirmação antes de uma troca de modelo que reenviaria 100k tokens ou mais. As categorias de permissão deixam você definir instalações de pacotes, pushes, deploys e ações parecidas como pedir confirmação ou negar. Outras partes incluem uma Mission Queue e uma Decision Inbox, limites de subagentes, um roteador de modelos, um governador de carga da máquina e um companheiro em pixel art opcional. O README do autor lista tudo; esta página cobre o que verificamos no código.
Demonstração
A gravação inicia o Claude Code com o mod carregado no pequeno projeto de demonstração e pede ao Claude que leia o README.md e descreva o projeto em uma frase. Antes do prompt, a faixa acima da entrada mostra "Ready" com um selo do Control Room e RUN $0.00. Enquanto o turno roda, ela muda para "Thinking" e depois mostra o medidor de contexto enchendo até 4%. Quando o turno termina, ela mostra "Read 1 file", a barra de contexto, CACHE 1h left e o custo da execução, abaixo de um centavo.
Instalação
Use qualquer um dos métodos do bloco de instalação; eles instalam direto do marketplace do próprio autor, chamado control-room. A faixa aparece no próximo início de sessão. Execute /control-room ou /cr para abrir o painel.
$ install project-sentinel
Requer Claude Code ≥ 2.1.287
Instala a partir do marketplace do autor: Arjun0014/project-sentinel
1.Uma linha, dentro do Claude Code
/plugin install project-sentinel --marketplace Arjun0014/project-sentinelCole em uma sessão em andamento (v2.1.275+). O Claude Code pede primeiro para adicionar o marketplace.
2.Pelo seu shell
claude plugin marketplace add Arjun0014/project-sentinel claude plugin install project-sentinel@control-roomDepois execute /reload-plugins em qualquer sessão que já esteja aberta.
3.Experimente sem instalar
git clone https://github.com/Arjun0014/project-sentinel claude --plugin-dir ./project-sentinel/plugins/project-sentinelCarrega o mod só para uma sessão. Nada é adicionado às suas configurações.
Como funciona
O plugin tem um único módulo de hooks, hooks/register.tsx, que monta um único adaptador de host para todas as chamadas ao engine e registra cada hook como algumas linhas que chamam um objeto de runtime. Todo hook de bloqueio tem um .catch que volta ao comportamento padrão do próprio Claude Code. Este é o hook de chamada de ferramenta, de hooks/register.tsx:
on('tool.call', async ($, e, next) => {
if (rt.isStandby) return next(e)
if (rt.host === null) rt.bind(hostOf($))
const tool = String(e.tool)
const input: Record<string, unknown> = isRecord(e) ? { ...e } : {}
const refusal = await rt.beforeTool(tool, input, e.tool_use_id, e.agentId)
if (refusal !== null) return { deny: refusal }
// ... then next(e), with afterTool in a finally block
})beforeTool divide os comandos de shell em tokens, classifica cada segmento em uma categoria de permissão e aplica a configuração mais restritiva. Se essa verificação falhar com um erro, o .catch ainda recusa os comandos claramente perigosos. O estado fica no $.store do plugin (configurações, registros de execução, memória do cache) e em átomos $.state que os hooks de renderização leem.
Personalize
Tudo é configurado pelo painel (/cr) ou pelo comando /cr: perfis, o limite do Autopilot (70% da janela por padrão, ou uma contagem de tokens), o nome do arquivo de handoff, o estado de permissão de cada categoria, o estilo das respostas, a estratégia do roteador, o modo e o limite de subagentes, os tetos de recursos, o Keep warm e o companheiro. /cr reset confirm restaura os padrões. O docs/CONFIGURATION.md do autor lista todas as opções.
Permissões e segurança
Lemos o manifesto, hooks/hooks.json, hooks/register.tsx, o adaptador de host, core/settings.ts, features/prompts.ts, features/permissions/decide.ts, app/formerStore.ts e o SECURITY.md do autor. O plugin tem cerca de 60 arquivos TypeScript (umas 7.800 linhas nos quatro maiores). Não lemos cada linha da interface, do painel e do módulo do companheiro, de 3.000 linhas (kit.client.tsx); nesses e no restante, procuramos em todos os arquivos por chamadas de rede, eval, imports dinâmicos, chamadas de processos, gravação de arquivos, segredos e Unicode oculto, e não encontramos nada além do que está listado aqui. Não há package.json no plugin, nem script de instalação, nem binário, nem código minificado.
Constatações:
- Rede: nenhuma. Sem
fetch, sockets ou hosts. As requisições ao modelo passam pelo próprio cliente do Claude Code (a verificação opcional do guard e o Keep warm, que fica desligado por padrão e reenvia a última requisição com uma mensagem curta "reply ok"). - Processos:
top -l 0 -s 2 -n 0(um amostrador de CPU e memória de longa duração que roda enquanto "Live CPU and memory" está ligado, que é o padrão) esysctl -n kern.memorystatus_levelno macOS;typeperfesysteminfono Windows;git status --porcelain=v1 --branchem repositórios git. Todos usam argumentos fixos e nenhum shell. O amostrador para quando a sessão termina. - Gravação de arquivos: nenhuma pelo próprio plugin, só o seu arquivo de
$.store. O arquivo de notas do handoff (NEXT_SESSION_PROMPT.mdpor padrão) é escrito pelo Claude com as ferramentas normais, sujeitas à verificação de permissão. O plugin lê uma vez o arquivo de armazenamento antigo do Control Room em~/.claude/plugins/store/para levar as configurações adiante; esse arquivo nunca é alterado. - Daemons: nenhum. Os timers dos watchers vivem no processo do Claude Code.
- Ambiente: ele lê
HOME,USERPROFILEeCLAUDE_CONFIG_DIR(para encontrar o armazenamento antigo) e as configurações do cache de promptCLAUDE_CODE_PROMPT_CACHE_TTL,ENABLE_PROMPT_CACHING_1HeFORCE_PROMPT_CACHING_5M. O resumo do SECURITY.md do autor diz que ele nunca lê variáveis de ambiente, mas a própria tabela do documento lista essa leitura. Nada é enviado a lugar nenhum. - Telemetria: nenhuma.
- Influência no modelo: ele adiciona uma seção de política ao prompt de sistema quando recursos como o Autopilot ou o Frontier Max estão ligados, acrescenta notas curtas aos resultados das ferramentas, oferece duas ferramentas (
milestonesedecision_request) e envia os seus próprios prompts (handoff, continuação, trabalho enfileirado). O texto está emfeatures/prompts.ts. O Frontier Max (desligado por padrão) diz ao Claude que a sessão "is being evaluated for frontier-level autonomous capability" e que evite parar cedo. Não encontramos texto oculto nem de largura zero, nem instruções dirigidas a um revisor. - Hooks de bloqueio: ele pode recusar chamadas de ferramentas (padrões: force pushes, resets e comandos perigosos negados; instalações, downloads, pushes, deploys, exclusões e edições fora do projeto pedem confirmação), pedir confirmação antes de uma troca de modelo ou da retomada de um contexto grande e frio, esconder ou recusar subagentes e continuar um turno que parou cedo (guard, desligado por padrão). Ele nunca responde a uma verificação de permissão e nunca afrouxa uma negação. Isso corresponde ao README.
- Requisitos externos: nenhum além do Claude Code 2.1.287 ou mais recente.
topesysctlvêm com o macOS. - Licença: MIT, com um arquivo LICENSE no repositório e na pasta do plugin.
O claude plugin validate não relatou erros nem avisos. O comando claude plugin test não encontrou arquivos *.test.ts na pasta do plugin, porque o autor mantém o ambiente de testes em uma pasta separada do repositório, tools/test, então não conseguimos rodar os testes do autor. Trate o mod como amplo e invasivo: ele pode reescrever prompts, negar ferramentas e limpar o seu contexto quando você ativa esses recursos.
- Lê arquivos
- Pode ler arquivos e listar diretórios na sua máquina ($.fs.read / list / stat / exists).
- Executa comandos
- Pode executar programas de shell na sua máquina ($.process.run / spawn). Confira no código-fonte exatamente quais.
- Chama o modelo (usa sua cota)
- Pode enviar suas próprias requisições ao Claude, que contam no uso do seu plano ($.model.* / $.agent.spawn).
- Intercepta chamadas de ferramentas
- Vê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
- Lê seus prompts
- Pode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
- Altera a interface
- Desenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
- Adiciona comandos/ferramentas
- Registra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
- Armazena dados
- Guarda dados entre sessões no armazenamento privado do plugin ($.store.*).
Compatibilidade e solução de problemas
Verificado com o Claude Code 2.1.296 no macOS (validate e uma sessão gravada). Se algo parecer errado:
- Execute
/crpara ver o painel e as configurações atuais. - Se a faixa não aparecer, confira o estilo da faixa em Setup; ele pode estar definido como desligado.
- Se o Claude recusar um comando, olhe em Guardrails: os estados de permissão padrão negam force pushes e comandos perigosos.
- Se você também tiver o antigo plugin
control-roomcarregado, o Project Sentinel fica em espera e avisa isso uma vez. - No Windows, os contadores de CPU e memória precisam de um Windows em inglês.
Perguntas frequentes
- O Project Sentinel faz alguma coisa se eu não ligar nada?
- Ele desenha a faixa de status, as linhas compactas das ferramentas e o painel Control Room, roda um amostrador de CPU e memória para a faixa e aplica as regras de permissão padrão (instalações, downloads, pushes e deploys pedem confirmação; force pushes e comandos perigosos são negados). O Context Autopilot, o Frontier Max, o roteador, o Keep warm e o companheiro ficam desligados até você ativá-los.
- Ele envia dados para algum lugar?
- Ele não faz nenhuma requisição de rede própria e não tem telemetria. Dois recursos pedem ao Claude Code que envie requisições ao modelo, visíveis no painel, a verificação inteligente opcional do guard e o Keep warm (desligado por padrão).
- Ele pode limpar o meu contexto sozinho?
- Só com o Context Autopilot ligado ou quando você pede um handoff. Ele pede ao Claude que escreva primeiro um arquivo de notas, confere se o arquivo acabou de ser escrito, depois executa /clear e envia um prompt de continuação.
- Qual a diferença para o Context Bar ou o Compact Adviser?
- Esses mostram o uso do contexto ou dão conselhos sobre ele. O Project Sentinel é um conjunto maior, além do contexto ele cobre o cache de prompt, as categorias de permissão, os limites de subagentes, o trabalho enfileirado e os watchers, e pode agir sobre a sessão.
- Como abro o painel?
- Execute /control-room, ou /cr para abreviar. O painel tem abas de atividade, contexto, cache, guardrails, comportamento e configuração.
# Mods relacionados
DestaqueContext Bar
A janela de contexto do Claude Code como uma barra empilhada acima do prompt, uma cor por categoria, com tokens.
- acima do prompt
- Altera a interface
- Adiciona comandos/ferramentas
- Armazena dados
testado com v2.1.291
DestaqueCompact Adviser
Sugere rodar /compact quando a sessão do Claude Code chega a um checkpoint, avaliado pelo modelo Jev da TypeSafe.
- status
- painel
- notificação
- Lê arquivos
- Grava arquivos
- Rede
- Lê seus prompts
- Altera a interface
- Adiciona comandos/ferramentas
- Armazena dados
testado com v2.1.291
DestaqueMedidor de contexto
Uso do contexto, dos limites de 5 horas e 7 dias e custo da sessão na barra de status, com aviso perto do limite.
- status
- notificação
- Altera a interface
testado com v2.1.310
Mais em Timers, tarefas e standups, Proteções de segurança, Contexto, cota e custo.