What's Inherited
Mostra o que um checkout que você não escreveu instrui seu agente a fazer antes de você executá-lo — arquivos de instrução e suas importações, comandos de hook vinculados a eventos do agente, servidores MCP que o repositório declara, e as skills e subagentes que ele inclui.
Documentação
whats-inherited-mcp
Você revisa o código que clona. Quase ninguém revisa a parte dele que fala com seu agente. Um servidor MCP que enumera tudo em um checkout endereçado a um agente de IA, e não a você: arquivos de instrução, comandos de hook conectados a eventos do agente, servidores MCP que o repositório declara, e as skills e subagentes que ele envia.
Por quê
git diff mostra código, e você lê código. Ele também mostra três linhas adicionadas em um CLAUDE.md, e você as lê rapidamente, porque parecem documentação. Elas não são documentação — são instruções que seu modelo seguirá.
A superfície é maior do que a maioria imagina. Um diretório que você clonou pode conter:
CLAUDE.md/AGENTS.md/.cursorrules— carregados no contexto e tratados como instruções, incluindo cópias aninhadas profundas na árvore que só se aplicam quando o agente trabalha naquele subdiretório- comandos de hook em
.claude/settings.json— shell conectado para disparar no uso de ferramentas, início de sessão ou envio de prompt .mcp.json— servidores MCP que o repositório pede para adicionar, frequentemente iniciados comnpx -y <package>, o que significa que o código executado é baixado no momento da inicialização e não é o código que você revisou.claude/skills,.claude/commands,.claude/agents— capacidades que o repositório entrega ao agente
Nada reúne isso em um só lugar. Este faz.
Execute contra um checkout de langfuse/langfuse em 7d2afa4 — um repositório open-source comum e respeitável, escolhido precisamente porque não há nada de errado com ele:
# Inherited agent surface
**12 item(s) in this checkout are addressed to an agent, not to you.**
| Surface | Count | Detail |
|-------------------------------|------:|--------------------------------------------------------------|
| Instruction files | 12 | ~41,848 est. tokens, 5,593 lines your agent is told to follow |
| Hook commands | 0 | configured to run on agent events |
| MCP servers declared | 0 | 0 fetch code from a registry at launch |
| Skills / commands / subagents | 33 extensions (196 files) | shipped under `.agents/`, available to the agent |
## Worth a look
- 11 instruction file(s) are **not at the repo root** — they apply when the agent
works in those subdirectories and are easy to miss in review.
e instruction_files adiciona:
> Counted once, reachable under more than one name (symlinks):
> - `AGENTS.md` ← also `.agents/AGENTS.md`, `CLAUDE.md`
Cinco mil e quinhentas linhas de instrução permanente, a maioria em arquivos que você nunca abriria, em um repositório que ninguém tem motivo para desconfiar. Esse é o ponto: o número é grande mesmo no caso benigno, exatamente por isso uma entrada incomum passa despercebida.
Ferramentas
| Ferramenta | O que responde |
|---|---|
inherited_summary | O destaque: tudo neste checkout endereçado a um agente. Comece aqui |
instruction_files | Cada CLAUDE.md/AGENTS.md/.cursorrules, seu tamanho e custo de tokens, e o que suas linhas @import puxam — incluindo imports que resolvem fora do repositório |
auto_run_commands | Comandos de hook que o checkout conecta a eventos do agente, e se o script referenciado está dentro do repositório, fora dele ou ausente |
declared_mcp_servers | Servidores MCP que o repositório declara, quais deles buscam código na inicialização e caminhos de sistema de arquivos concedidos fora do checkout |
agent_extensions | Skills, comandos de barra e subagentes que o repositório envia |
Cada ferramenta aceita um dir opcional. Quando omitido, o servidor recorre a
WI_DEFAULT_ROOT se estiver definido e, caso contrário, ao seu diretório de trabalho.
Instalação
Claude Desktop (um clique, sem terminal): baixe o whats-inherited-mcp-<version>.dxt mais recente de Releases e abra-o com o Claude Desktop (duplo clique, ou Configurações → Extensões → Instalar Extensão…). O servidor e suas dependências vêm dentro do pacote — sem npm, sem instalação de Node.
Registre com o Claude Code (disponível em todas as sessões):
claude mcp add --scope user whats-inherited -- npx -y whats-inherited-mcp
Ou em qualquer configuração de cliente MCP:
{
"mcpServers": {
"whats-inherited": {
"command": "npx",
"args": ["-y", "whats-inherited-mcp"]
}
}
}
A partir do código-fonte
git clone https://github.com/stcmain/whats-inherited-mcp.git
cd whats-inherited-mcp
npm install && npm run build
# then point your client at node /path/to/whats-inherited-mcp/dist/index.js
Publicado como whats-inherited-mcp no npm e como
io.github.stcmain/whats-inherited-mcp no Registro MCP.
Configuração
Uma configuração opcional, e não exige credenciais.
| Variável | Padrão | Significado |
|---|---|---|
WI_DEFAULT_ROOT | o diretório de trabalho do servidor | Diretório a inspecionar quando uma ferramenta é chamada sem um argumento dir. |
Cada ferramenta aceita um dir explícito, que sempre vence. WI_DEFAULT_ROOT apenas
muda o fallback, e vale a pena definir quando um cliente desktop inicia o
servidor: o processo então herda o diretório de trabalho desse cliente, que
raramente é o checkout que você pretendia inspecionar.
{
"mcpServers": {
"whats-inherited": {
"command": "npx",
"args": ["-y", "whats-inherited-mcp"],
"env": { "WI_DEFAULT_ROOT": "/path/to/the/checkout" }
}
}
}
O que conta, e o que se recusa a adivinhar
Inflar isso na direção alarmante seria fácil e tornaria a ferramenta inútil, então a contabilidade é deliberadamente conservadora:
- Não detecta conteúdo malicioso. Não há scanner heurístico, regex de "frase suspeita" ou pontuação de risco. Isso produz falsos positivos confiantes em repositórios comuns e perde qualquer coisa escrita com cuidado. Este servidor diz onde olhar; você faz a leitura.
- Arquivos são contados uma vez. Um repositório pode expor um arquivo sob vários nomes —
CLAUDE.md → AGENTS.md → .agents/AGENTS.mdé um padrão real no mundo real. As entradas são deduplicadas pelo caminho real resolvido e os aliases são listados, em vez de contar o mesmo conteúdo três vezes. .claude/não é contado duas vezes. OCLAUDE.mdde uma skill é relatado como skill, não também como arquivo de instrução do projeto.- "Nenhum token de caminho identificado" não é uma afirmação de segurança. Quando um comando de hook não tem um caminho de sistema de arquivos que este servidor possa extrair com confiança, ele diz isso e para. Essa é uma lacuna declarada na análise, não um veredito.
- A detecção de imports é conservadora. Blocos de código cercados são removidos primeiro, e um
@tokensem raiz só conta quando nomeia um documento — então@scope/pkge@mentionsficam fora do número.
Limitações honestas
- Ele relata; não julga, e não corrige. Nada é editado, colocado em quarentena ou pontuado. Cada item listado é normal em um repositório legítimo.
- Se seu cliente realmente executa hooks de projeto é problema do seu cliente. Clientes diferem, e eles fazem prompts de forma diferente e mudam entre versões. Este servidor relata o que os arquivos declaram, não o que seu cliente fará com eles.
- Contagens de tokens são estimativas (~4 caracteres/token). Trate-as como uma classificação e uma escala aproximada, não como cobrança. O tokenizador da Anthropic não é público, então nada local pode fazer melhor.
- O layout do Claude Code é o modelo. Arquivos de instrução do Cursor, Windsurf, Cline e Copilot são reconhecidos, mas a análise de hooks e MCP segue o esquema do Claude Code.
- Monorepos muito grandes são truncados. A varredura tem limite de profundidade e de entradas; quando o limite é atingido, a saída diz isso e marca os resultados como parciais, em vez de subnotificar silenciosamente.
- Nunca lê o histórico do git. Descreve a árvore de trabalho como está no disco agora, não o que um diff mudou.
- Diretórios com symlink não são seguidos (risco de loop). Arquivos com symlink são.
Notas de design / modelo de ameaça
O trabalho inteiro deste servidor é olhar conteúdo que pode ser hostil, então o design assume que é.
- Não deve se tornar o vetor de injeção sobre o qual relata. O corpo de um arquivo de instrução nunca é retornado — apenas metadados, caminhos e campos estruturados extraídos de chaves JSON de configuração conhecidas. Colar o
CLAUDE.mdde um repositório no seu contexto para dizer que o repositório pode conter algo ruim seria contraproducente. - Strings escritas pelo repositório são cercadas e rotuladas. Comandos de hook e linhas de inicialização de MCP precisam ser mostrados para serem úteis. Eles são emitidos dentro de spans de código inline com crases neutralizadas, pipes escapados e novas linhas achatadas para que uma string criada não possa escapar do span ou de uma tabela markdown, e cada bloco carrega uma nota permanente de que o texto citado são dados do checkout, não instruções.
- Sem processos filhos. Sem shell. Sem rede. Sem gravações. As únicas APIs Node usadas são leituras de
node:fs,node:pathenode:os. Não há importação dechild_processem nenhum lugar do código-fonte, então nada em um repositório escaneado pode ser executado ao escaneá-lo. diré o único caminho controlado pelo modelo, e é limitado por construção: é resolvido, com caminho real e obrigado a ser um diretório existente. Como corpos de arquivo nunca são emitidos, apontá-lo para algo sensível divulga nomes de arquivos e tamanhos, nunca conteúdos — e não pode gravar, executar ou transmitir nada.- Valores de variáveis de ambiente nunca são lidos — apenas nomes.
.mcp.jsoné um lugar onde as pessoas deixam chaves de API em texto puro. - Trabalho limitado: limite de profundidade, limite de entradas, teto de tamanho de arquivo e sem travessia de diretórios com symlink.
Quem faz isso
Construído por Shift The Culture — operamos uma empresa de uma pessoa com agentes de IA e enviamos as ferramentas que precisávamos nós mesmos. Este servidor é gratuito e licenciado sob MIT, sem amarras.
Tem três irmãos, todos também gratuitos e MIT:
- whats-running-mcp — o que está realmente rodando na máquina agora, em vez do que uma transcrição antiga afirma.
- whats-loaded-mcp — o que está consumindo sua janela de contexto antes de você digitar: descrições de skills, arquivos de memória e seus imports.
- whats-allowed-mcp — o que seu agente pode fazer sem pedir permissão: regras de permissão mescladas, qual arquivo de configuração vence e as regras que seu cliente aceita e depois ignora.
O resto dessas ferramentas é pago:
- Agent Fleet Ops Kit ($29) — os outros modos de falha de rodar três ou quatro agentes em uma máquina: duas sessões editando o mesmo checkout, um servidor de desenvolvimento que ninguém possui (então o agente testa um aplicativo diferente do que edita) e servidores MCP vazados de sessões travadas que seguram portas e RAM por semanas. Prefere PayPal? Mesmo kit no Payhip.
- Agent Reliability Kit ($29) — um hook Stop e dois CLIs que bloqueiam um turno quando um agente afirma "concluído" contra um repositório, URL ou build que nunca foi realmente verificado. Prefere PayPal? Mesmo kit no Payhip.
O servidor acima permanece gratuito e MIT de qualquer forma — não tem upsell, sem telemetria e sem dependência dos kits pagos.
Patrocinadores
Este servidor é MIT e permanece MIT. Não há edição pro, sem telemetria e nada retido da versão gratuita. Patrocínio é como a manutenção é paga sem que nada disso mude.
Ainda sem patrocinadores — a primeira vaga está aberta. Patrocinadores empresariais recebem seu nome ou logo nesta seção, nos dois servidores irmãos e na página de patrocinadores. Níveis, exatamente o que a colocação é e o que ela explicitamente não compra: https://shifttheculture.media/sponsor
Indivíduos: https://paypal.me/ShiftTheCultureLLC — qualquer valor, sem vantagens, sem níveis.
Licença
MIT © Zachary Pampu