Programação Por Equipe DevBras

Capa do artigo: Postman se instalou no Codex e Claude Code: como checar

Postman se instalou no Codex e Claude Code: como checar

Relato no GitHub diz que o Postman desktop instalou sozinho plugins no Codex e no Claude Code, com hook e MCP. Veja os arquivos, o script e como remover.

Um usuário do Postman abriu em 25 de outubro de 2026 uma issue no repositório oficial de suporte do app relatando que, ao abrir o Postman desktop 12.33.4 no Mac, o programa instalou sozinho um plugin no Codex e outro no Claude Code, registrou um hook que roda a cada início de sessão do agente, ligou uma conexão MCP remota e colocou o Postman CLI em ~/.local/bin. Ninguém clicou em "instalar". A issue ficou quase parada por uma semana e explodiu em 3 de novembro, quando chegou ao topo do Hacker News.

Este texto separa o que está documentado do que ainda é relato, mostra os arquivos que você deve olhar no seu computador e traz um script de leitura (não apaga nada) que testamos aqui antes de publicar. Se você usa Postman e algum agente de IA para programar, vale tirar dez minutos hoje.

O que o relato mostra, com evidência

O autor da issue anexou trechos dos próprios arquivos. O mais forte é o log do Postman, em ~/Library/Application Support/Postman/logs/main.log, que registra a instalação com a origem auto-existing-upgrade, ou seja, uma instalação automática para quem já tinha o app:

PostmanAgentPluginService~install: script completed
{"source":"auto-existing-upgrade","results":["claude-code:installed","codex:installed"],"installer":"script"}

Além do log, ele mostrou:

  • Codex: o arquivo global ~/.codex/config.toml ganhou um marketplace apontando para o repositório postmanlabs/postman-plugin, o plugin postman@postman ativado e um bloco [hooks.state] com um trusted_hash para o hook de início de sessão.
  • O hook: o arquivo do plugin registra um comando no evento SessionStart que imprime instruções para o agente. Entre elas, carregar a skill de engenharia de API do Postman "antes de responder a qualquer tarefa não trivial de API". É por isso que o Codex dele passou a puxar o Postman em tarefas que não tinham nada a ver com o app.
  • MCP remoto: uma conexão com https://mcp.postman.com/mcp, que falhava com "Auth required" a cada início do Codex.
  • Claude Code: o plugin postman@claude-plugins-official ligado em ~/.claude/settings.json e registrado em ~/.claude/plugins/installed_plugins.json, versão 2.0.1, no escopo do usuário.

O próprio autor deixa claro um limite: o relato mostra instalação e mudança de instruções sem consentimento, mas não afirma vazamento de dados. Alguns títulos que circularam falam em "compartilhar todos os dados de API", e isso não está na issue.

O hook que se aprova sozinho

O ponto mais sério não é o plugin em si, e sim a confiança. O Codex só roda hooks de plugin depois que o usuário aprova cada um; essa aprovação fica gravada como um hash em config.toml. O README oficial do plugin diz, com todas as letras, que no Codex "a instalação também aprova o hook de início de sessão do Postman" e que "não há um prompt separado para o hook". O autor da issue aponta no código do instalador a função que faz essa aprovação depois de instalar.

Na prática, uma ferramenta de terceiros decide por você que as instruções dela entram em toda sessão do seu agente. É o mesmo tipo de fronteira que discutimos no caso da extensão falsa do Claude Code no Cursor: o agente confia no que está na configuração dele, então quem escreve nessa configuração manda no agente.

O que mais apareceu nos comentários

Até a madrugada de 4 de novembro (horário de Brasília), a thread tinha mais de 30 comentários. Três merecem atenção, sempre como relato de usuário:

  • Outro usuário diz que o mesmo caminho aconteceu numa versão mais nova: o app atualizou de 12.31.3 para 12.35.1 ao abrir e, na sequência, instalou o CLI e os plugins do Claude Code e do Codex. Ou seja, não parece ser algo só da 12.33.4.
  • Um terceiro encontrou o plugin também no GitHub Copilot CLI, em ~/.copilot/settings.json, e diz que a opção de desinstalar dentro do Postman não removeu a entrada do Copilot.
  • Uma conta que fala em nome do Postman respondeu que o CLI e os plugins vêm junto com o app para facilitar a configuração, que isso é mencionado na página de download e no fluxo de atualização, e que a empresa vai deixar o opt-in mais claro e revisar a aprovação do hook. Não conseguimos confirmar o vínculo dessa conta com a empresa, e até a publicação não havia comunicado no blog oficial.

Como checar o seu computador

Os caminhos abaixo são os citados na issue. Vale para macOS e Linux; no Windows, os mesmos arquivos ficam dentro da sua pasta de usuário (%USERPROFILE%\.codex, %USERPROFILE%\.claude).

O script só lê arquivos e mostra as linhas que citam o Postman. Salve como checar-postman.sh, rode bash checar-postman.sh e leia a saída:

#!/usr/bin/env bash
# Procura sinais da integração do Postman nos agentes de IA do usuário atual.
# Só lê arquivos; não apaga nada.
H="${HOME}"
CX="${CODEX_HOME:-$H/.codex}"
achou=0
olhar() { # arquivo, padrão, descrição
  if [ -f "$1" ] && grep -qiE "$2" "$1"; then
    echo "[ACHOU] $3"; grep -niE "$2" "$1" | sed 's/^/        /'; achou=1
  fi
}
olhar "$CX/config.toml" 'postman' "Codex: $CX/config.toml"
olhar "$H/.claude/settings.json" 'postman' "Claude Code: ~/.claude/settings.json"
olhar "$H/.claude/plugins/installed_plugins.json" 'postman' "Claude Code: installed_plugins.json"
olhar "$H/.copilot/settings.json" 'postman' "Copilot CLI: ~/.copilot/settings.json"
for f in "$H/.local/bin/postman" "$H/.local/bin/postman-cli"; do
  [ -e "$f" ] && { echo "[ACHOU] CLI: $f"; ls -l "$f" | sed 's/^/        /'; achou=1; }
done
LOG="$H/Library/Application Support/Postman/logs/main.log"
[ -f "$LOG" ] || LOG="$H/.config/Postman/logs/main.log"
olhar "$LOG" 'auto-existing-upgrade|PostmanAgentPluginService' "Log do Postman: $LOG"
[ "$achou" = 0 ] && echo "Nada do Postman nos lugares conferidos."
exit 0

Testamos o script em 3 de novembro, com bash 5.2 e GNU grep 3.11, em duas pastas de usuário de teste: uma vazia e outra montada com os mesmos trechos que o autor da issue publicou. Na pasta vazia a saída é só "Nada do Postman nos lugares conferidos.". Na outra, ele acha os cinco pontos:

[ACHOU] Codex: /home/teste/.codex/config.toml
        3:[marketplaces.postman]
        5:source = "https://github.com/postmanlabs/postman-plugin.git"
        7:[plugins."postman@postman"]
        10:[hooks.state."postman@postman:hooks/codex-hooks.json:session_start:0:0"]
[ACHOU] Claude Code: ~/.claude/settings.json
        1:{"enabledPlugins":{"postman@claude-plugins-official":true}}
[ACHOU] Claude Code: installed_plugins.json
[ACHOU] CLI: /home/teste/.local/bin/postman
[ACHOU] Log do Postman: .../Postman/logs/main.log

Não testamos num Mac com o Postman real instalado. O caminho do log no Linux (~/.config/Postman) é o padrão de apps Electron e pode variar; se o script não achar o log, procure a pasta de logs do Postman no seu sistema.

Como remover, do jeito oficial e à mão

O README do plugin documenta um instalador com dois subcomandos úteis: status, que mostra em quais agentes ele está, e remove, que desinstala. A opção --agent limita a um agente só.

npx @postman/postman-plugin status
npx @postman/postman-plugin remove

Lembre que o npx baixa e executa a versão mais recente do pacote do npm (a 0.6.0 saiu em 3 de novembro). Se a sua desconfiança é justamente o instalador, faça a remoção à mão:

  1. Feche o Codex, o Claude Code e o Postman antes de editar, para nenhum deles regravar o arquivo.
  2. Codex: faça uma cópia de ~/.codex/config.toml e apague os blocos [marketplaces.postman], [plugins."postman@postman"] e o [hooks.state."postman@postman:..."] inteiro. O que importa é tirar o hash de confiança; sem ele o hook não é aprovado.
  3. Claude Code: remova "postman@claude-plugins-official": true de enabledPlugins em ~/.claude/settings.json, ou use o gerenciador de plugins do próprio Claude Code.
  4. Copilot CLI: se o script achou algo em ~/.copilot/settings.json, remova a entrada postman de extraKnownMarketplaces e postman@postman de enabledPlugins.
  5. CLI: se você não usa o Postman CLI, apague o executável em ~/.local/bin e a pasta de bibliotecas criada junto, conferindo as datas com ls -l.
  6. Rode o script de novo e abra o agente para ver se as mensagens de autenticação do MCP do Postman sumiram.

Se o Postman continuar instalado, ele pode refazer tudo na próxima atualização. Os usuários da thread citam uma opção no menu de ajuda do app para desinstalar o plugin dos agentes, mas, como vimos acima, há relato de que ela não limpa o Copilot. Confira os arquivos depois de cada atualização até o Postman publicar a mudança prometida.

O que isso ensina para quem usa agentes de IA

A configuração do agente virou uma superfície de ataque, e de propaganda. Quem consegue escrever em ~/.codex ou ~/.claude decide quais instruções o agente lê antes de você digitar a primeira palavra. Três hábitos simples ajudam:

  • Versione a configuração. Um git init dentro de ~/.codex e ~/.claude (sem os arquivos de credencial) faz qualquer mudança aparecer num git diff.
  • Leia o que o hook imprime. Hook de início de sessão é texto que entra no contexto do agente. Trate como você trataria uma dependência nova, do jeito que mostramos em dependência com cadeado.
  • Conecte MCP só quando precisar. Cada servidor MCP é uma porta a mais com acesso ao que o agente vê. E chave de API que passa por ali merece limite de gasto, como explicamos no caso da Northflank.

Atualizado em 4 de novembro de 2026, às 0h. Este post segue a issue #14370, o README do postman-plugin e o pacote no npm. Vamos atualizar quando o Postman publicar uma posição oficial.

Avalie este artigo