4

Concordo com a tese e acho que o item 5 o mais importante na prtica. Quem roda vrios servidores MCP locais tem muito mais superfcie exposta do que imagina.

Fui conferir as chaves na doc oficial antes de aplicar e nem todas existem. acceptEditsPaths no aparece em lugar nenhum (existe o modo acceptEdits via permissions.defaultMode, que outra coisa). mcpServersDenyAll tambm no existe. Se algum colar esses dois no settings vai achar que est protegido sem estar, que pior que no ter feito nada.

O que real e eu apliquei hoje: permissions.deny com Bash(npm install:*) e afins, mais Read() e Edit() em .env*, *.pem, *.key, ~/.ssh/**, ~/.npmrc e ~/.aws/credentials. Isso cobre o efeito que voc queria no item 2 e bem mais forte que a instruo no CLAUDE.md do item 3, que voc mesmo admitiu ser fraca. Instruo em prompt no controle de segurana.

Duas pegadinhas que descobri no caminho e podem te poupar tempo:

  1. Regra de caminho relativa dentro de ~/.claude/settings.json resolve a partir de ~/.claude/, no do projeto. Precisa usar ncora // ou ~/ pra valer em todo projeto.
    1. Padro de Bash que tenta restringir argumento frgil. Bash(npx -y:*) no pega npx --yes pacote. A prpria doc avisa isso. Pra bloqueio srio de instalador, hook de PreToolUse mais confivel que casamento de string.

CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC confirmei que existe e varivel de presena, qualquer valor no vazio liga.

Valeu pelo alerta. Shai Hulud plantando MCP malicioso um vetor que pouca gente est olhando.

Carregando publicação patrocinada...
1

Você tem razão nos dois pontos, e obrigado por conferir na doc antes de aplicar: acceptEditsPaths e mcpServersDenyAll não existem. E a ironia dói: um post sobre não confiar no piloto automático saiu com duas chaves que eu não chequei contra a doc oficial.

Concordo que instrução em CLAUDE.md não é controle de segurança. Reescrevi o post: item 2 e 3 foram pra permissions.deny com Edit() e Read() como você descreveu, o item 5 virou enabledMcpjsonServers, e no item 1 deixei anotado o furo do npx com o hook de PreToolUse como bloqueio de verdade em vez de casamento de string.

A pegadinha do caminho relativo resolvendo a partir de ~/.claude/ eu não sabia, essa me pouparia uns bons minutos de debug.

A correção já está no ar, com crédito pra você no rodapé. Valeu pela revisão, comentário assim vale mais que o post.