Claude Code

Segurança do Claude Code é um problema de credenciais

O sistema de permissões decide quais ferramentas o Claude Code pode rodar. O que essas ferramentas alcançam é todo segredo na sua máquina. O Sallyport leva as chaves para um lugar onde o agente nunca vai lê-las.

as permissões param na ferramentaum comando de shell permitido lê o .enva brecha é onde a chave mora
Permissões

O que as confirmações de permissão realmente cobrem

O Claude Code pergunta antes de rodar uma ferramenta que você não permitiu. As regras ficam no settings.json como listas allow, ask e deny, e vale a pena configurá-las direito.

allow

Ferramentas que você aprovou de antemão

Uma regra como Bash(git commit:*) deixa esse comando passar sem parar. A regra cobre o comando em si. O que o comando abre depois que roda fica fora dela.

sem confirmação

ask

Tudo que não está na lista

O caso padrão. O Claude Code mostra a chamada da ferramenta e espera. Você está revisando uma ação, na hora, com o contexto que tiver às duas da manhã.

confirmação

deny

Caminhos e ferramentas que você bloqueou

Uma regra deny mantém a ferramenta Read longe do ./.env. Ela não mantém um comando de shell permitido longe do mesmo arquivo, e não tem nada a dizer sobre os processos que suas dependências iniciam.

bloqueio parcial

bypass

Nenhuma confirmação

A flag --dangerously-skip-permissions elimina a pergunta por completo. Essa tem uma seção só dela mais abaixo.

sem confirmação

Todas essas regras governam as ferramentas do agente. Nenhuma governa o arquivo que uma ferramenta lê. Seus tokens de API estão no .env, sua chave SSH em ~/.ssh, e os dois podem ser lidos por qualquer processo rodando como você, com ou sem confirmação.

Modo YOLO

O que --dangerously-skip-permissions realmente desliga

As pessoas recorrem a isso por bons motivos: refatorações longas e execuções noturnas em que uma caixa de confirmação deixa o trabalho parado até de manhã. Vale saber exatamente o que você trocou por isso.

Ela silencia as confirmações. As capacidades continuam.

O Claude Code já conseguia ler seus arquivos, usar seu shell e sair para a rede. A flag remove a pausa em que você teria percebido.

O arquivo sempre foi legível

A confirmação era uma chance de pegar o agente abrindo o .env. Nunca foi uma barreira em volta do arquivo. Qualquer processo rodando como você consegue lê-lo, inclusive a dependência que o npm instalou enquanto você lia a confirmação.

O raio é tudo que o seu shell consegue fazer

Uma injeção de prompt numa página baixada, um README envenenado numa dependência transitiva, e essas instruções caem dentro de uma sessão que tem suas credenciais e não tem mais nenhuma confirmação.

O modo YOLO custa a você a chance de perceber. As chaves já estavam ao alcance no modo padrão.

Revisão de segurança

Revisar o seu código é outro trabalho

O Claude Code lê um diff e aponta vulnerabilidades nele, e você deveria deixar. Esse trabalho é sobre o código que você está entregando. Ele não diz nada sobre o que o próprio agente alcança enquanto roda, que é o assunto desta página. São problemas separados, e resolver um não faz nada pelo outro.

A solução

Tire as chaves da mesa

O Sallyport guarda a credencial e faz a chamada. O Claude Code pede uma ação e recebe um resultado de volta. Nenhuma chave entra no ambiente dele, então não há nada que uma confirmação pulada, uma dependência envenenada ou uma instrução injetada consiga levar embora.

  1. 01

    O agente pede uma ação

    http.request para api.stripe.com, ou ssh.exec no prod-03. Chega por MCP, do mesmo jeito que o Claude Code chama qualquer outra ferramenta.

  2. 02

    O Sallyport decide

    Um cofre trancado nega tudo. Uma chave marcada para aprovação por chamada mostra um cartão toda vez. Fora isso, um cartão por execução do agente, carregando a autoridade de assinatura de código de quem chamou.

  3. 03

    O Sallyport faz a chamada

    A credencial é anexada dentro do app, durante a execução. Ela não entra no ambiente do agente, e um redirecionamento para outro host não a leva junto.

  4. 04

    O registro guarda o comprovante

    Criptografado e encadeado por hash enquanto a ação acontece. Você consegue descobrir o que rodou sem depender da versão que o agente conta.

Depois disso, rode o Claude Code do jeito que preferir, com confirmações ou sem. A decisão que importava saiu do agente.

Configuração

Aponte o Claude Code para o portão

O Sallyport fica na barra de menus e hospeda o cofre no próprio processo. Não tem daemon e não tem conta.

01

Instale e abra

O onboarding cria o cofre e liga o portão de Touch ID dele.

brew install --cask olegsotnikov/tap/sallyport
02

Registre o shim MCP

O Claude Code passa a ter http.request, ssh.exec e qualquer servidor MCP upstream que você encaminhar pelo Sallyport.

claude mcp add sallyport -- /Applications/Sallyport.app/Contents/MacOS/sp mcp
03

Mova a chave e apague a cópia

Guarde a credencial no cofre, vincule ao host dela e tire do .env. Marque para aprovação por chamada as que te dão medo.

stripe → api.stripe.com · aprovação por chamada

Cerca de dois minutos. Dali em diante as únicas confirmações que você vê são as do Sallyport, e todas elas são sobre infraestrutura real: esta chave, este host, esta chamada.

Perguntas frequentes

Claude Code e Sallyport

Ainda posso usar --dangerously-skip-permissions?
Pode, e passa a ser bem mais razoável quando as chaves estão fora de alcance. As aprovações do Sallyport são separadas das do Claude Code, então pular umas não pula as outras.
Isso deixa o Claude Code mais lento?
Um cartão por execução do agente e nada mais até a execução acabar, a não ser que você tenha marcado uma chave para aprovação por chamada. Chamadas aprovadas rodam na velocidade da API por trás delas.
O Claude Code enxerga a resposta da API?
Sim. O Sallyport devolve exatamente o que o destino enviou, byte a byte. Um serviço que devolve a sua chave dentro da própria resposta está te mostrando o bug dele, e o registro te mostra a chamada que pegou isso.
O Sallyport é um plugin do Claude Code?
Não. É um app de Mac com um shim MCP, então funciona com qualquer cliente MCP e não tem nada para atualizar quando o Claude Code atualiza.
E o Cursor, o Codex e os outros?
O mesmo mecanismo, já que todos falam MCP. O que mais testamos é o Claude Code, e Cursor e Codex entram no rodízio.

Deixe ele pular todas as confirmações. Ele continua sem conseguir ler suas chaves.

Download grátis. Apple Silicon, macOS 14 ou mais recente. Sem conta, nunca.

$brew install --cask olegsotnikov/tap/sallyport

macOS 14+ · Apple Silicon

Sallyport

O Sallyport executa chamadas de API e comandos SSH pelo seu agente de IA. As chaves ficam em um cofre local no seu Mac; você aprova cada execução e toda ação vai para um registro selado.

© 2026 Sallyport · Código aberto sob Apache-2.0 · Oleg Sotnikov