npm 12 bloqueia por padrão scripts de instalação de dependências
Lançado em 8/7, o npm 12 só roda scripts de dependências aprovados no package.json raiz e muda padrões de git e tarballs remotos.
O npm, gerenciador de pacotes que acompanha o Node.js, chegou à versão 12 em 8 de julho de 2026 com uma mudança de comportamento que afeta praticamente todo projeto JavaScript: scripts de ciclo de vida das dependências (como preinstall e postinstall) deixam de rodar por padrão. Segundo as notas de lançamento, eles só são executados se a política allowScripts do package.json raiz permitir. Depois de instalar, o desenvolvedor registra as aprovações com npm install-scripts approve e roda npm rebuild para executar os scripts recém-aprovados.
Por que a mudança importa
Scripts de instalação são o caminho preferido de ataques à cadeia de suprimentos do npm: basta publicar uma versão maliciosa para que o código rode na máquina de quem instala. A análise da Socket lembra que o bloqueio vale também para a compilação implícita com node-gyp, disparada por pacotes que trazem um arquivo binding.gyp mesmo sem script declarado — técnica usada nas ondas “Phantom Gyp” para escapar de scanners que só olham preinstall e postinstall. O pnpm já bloqueava scripts por padrão desde a versão 10. A Socket ressalva que a mudança não fecha a porta de contas de mantenedores comprometidas, de onde vieram as principais ondas recentes.
O que quebra
Por padrão, um script não aprovado é ignorado com aviso e a instalação termina; a opção strict-allow-scripts transforma isso em erro, pensada para CI. Pacotes nativos que dependem de compilação, como sharp, better-sqlite3, bcrypt e node-sass, e baixadores de binários como Cypress, Playwright, Puppeteer e Electron precisam de aprovação; sem ela, a falha aparece só em tempo de execução, quando o código tenta carregar um módulo que nunca foi compilado.
allow-giteallow-remotepassam anone: dependências de git ou de tarball por URL não são resolvidas sem configuração explícita.npm shrinkwrapfoi removido enpm-shrinkwrap.jsondeixa de ser lido; os comandosadduserestartambém saíram.npm view --jsonsempre retorna um array, e a licença padrão denpm initpassa a ser vazia.- Versões suportadas do Node:
^22.22.2 || ^24.15.0 || >=26.0.0.
Tokens que contornam 2FA
A Socket informa ainda que o npm começa a desativar gradualmente tokens granulares configurados para contornar a autenticação em dois fatores: a partir do início de agosto, eles perdem ações sensíveis de conta e organização; por volta de janeiro de 2027, perdem a publicação direta. Para equipes, o caminho de migração é revisar a lista de dependências que realmente precisam de scripts, registrar a política no repositório e testar o pipeline de CI com strict-allow-scripts antes de atualizar as máquinas de desenvolvimento.
Fontes
- npm (GitHub) — Release v12.0.0 · npm/cli (08/07/2026)
- Socket — npm v12 Ships With Install Scripts Off by Default, Begins Deprecating 2FA-Bypass Tokens (08/07/2026)
Imagem destacada: ilustração gerada por computador, sem valor documental.


