Claude Code

Segurança do Claude Code é um problema de credenciais

O sistema de permissões decide quais ferramentas o Claude Code pode rodar. Ele não diz nada sobre o que essas ferramentas conseguem alcançar, e o que elas alcançam é todo segredo na sua máquina. O Sallyport tira as chaves para um lugar onde o agente não consegue 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 vale para o comando, não para o que o comando abre depois que roda.

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.

Desliga confirmações, não capacidades

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. Não foi ele que colocou as chaves ao alcance; elas 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. As confirmações que sobram são as do Sallyport, e elas perguntam sobre ações contra infraestrutura real em vez de qual ferramenta pode rodar.

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 a resposta do destino como ela chega e não inspeciona o conteúdo. Se um serviço devolver um segredo dentro da própria resposta, o agente vê essa resposta. As requisições passam pelo portão; as respostas não são filtradas.
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