Documentação / Segurança
Cofre de credenciais
O Yuli encontra .env, chaves e tokens soltos no seu projeto e oferece guardá-los criptografados fora do repositório, sem quebrar a execução.
O Yuli detecta credenciais soltas no seu projeto (um .env na raiz, chaves privadas, tokens em .npmrc, contas de serviço, segredos escritos no código…) e oferece guardá-las em um cofre criptografado fora do repositório. Nada é movido sem a sua confirmação.
O que ele detecta
| Tipo | Exemplos |
|---|---|
| Ambiente | .env, .env.local, .env.production… Os modelos .env.example, .env.sample e .env.template não contam. |
| Chaves e repositórios de chaves | *.pem, *.key, *.p12, *.pfx, *.jks, id_rsa, id_ed25519 |
| Credenciais de ferramentas | Contas de serviço JSON, credentials.json, .npmrc, .yarnrc ou .pypirc com token, .aws/credentials, kubeconfig, config.json do Docker, *.tfvars, .netrc, .git-credentials, .pgpass |
| Código | Segredos escritos diretamente no código-fonte |
Cada achado indica a sua situação no git. Estes casos são marcados com mais gravidade:
| Selo | Significa |
|---|---|
| O Git rastreia | O arquivo está versionado. |
| Sem .gitignore | O arquivo não está ignorado: o próximo commit pode enviá-lo. |
| No histórico do git | Em algum momento ele foi enviado ao repositório. |
O cartão «Credenciais expostas»
Quando o Yuli encontra algo, aparece o cartão Credenciais expostas. Para cada achado, você escolhe:
- Mover para o cofre (recomendado): o Yuli copia o arquivo criptografado para o cofre, verifica a cópia e só então apaga o original. Ele cria um
.env.examplecom as chaves vazias e adiciona o padrão ao.gitignore. - Está bem assim: deixa o arquivo onde está. Escreva o Motivo e clique em Lembrar para não ser perguntado de novo.
- Abrir: abre o arquivo no editor.
Você sempre pode Restaurar um arquivo movido.
Mover um .env passo a passo
Se o arquivo chegou a ser enviado ao git, movê-lo não basta: o segredo continua no histórico. O Yuli avisa que você precisa rotacioná-lo (trocar a senha ou o token) e mostra como limpar o histórico com git filter-repo. O Yuli nunca reescreve o histórico por conta própria.
Onde fica e como é criptografado
| Local padrão | <configuração>/yuli-ide/vault/<id-do-projeto>/, na pasta de configuração do seu usuário, fora de qualquer projeto |
| Permissões | Somente para você: 0700/0600 no macOS e no Linux, uma ACL do seu usuário no Windows |
| Criptografia no Windows | DPAPI |
| Criptografia no macOS e no Linux | AES-256-GCM, com a chave mestra no chaveiro do sistema |
Se o sistema não oferecer essa proteção, o Yuli não move nada.
Você pode escolher outra pasta (por exemplo, um disco externo) com Alterar local…, desde que fique fora do projeto e de qualquer repositório git.
Opções
Em Opções globais › Segurança › Cofre de credenciais:
| Opção | O que faz |
|---|---|
| Alterar local… | Escolhe outra pasta para o cofre. |
| Injetar | Passa as variáveis do cofre para a execução. Por padrão, são injetados .env, .env.local e .env.development. |
| Materializar ao executar | Grava um .env temporário enquanto a execução durar. |
| Adicionar variável | Adiciona uma variável nova diretamente ao cofre. |
| Criar .env.example no projeto | Gera o modelo com as chaves vazias. |
| Mostrar | Exibe um valor durante 20 segundos. |
Seu projeto continua funcionando
Ao executar (configurações de execução, tarefas e o terminal integrado), o Yuli injeta as variáveis do cofre como variáveis de ambiente. As bibliotecas dotenv as respeitam porque as variáveis reais têm prioridade.
Se a sua ferramenta precisar do arquivo em disco, ative Materializar ao executar: o Yuli grava um .env temporário (permissões 0600, ignorado pelo git) apenas enquanto a execução durar e o apaga ao terminar.
E os agentes de IA
Os agentes (Claude Code, Kiro, Codex, Antigravity, Copilot e o chat do Yuli) nunca veem os valores. Os hooks do agente negam o acesso à pasta do cofre e, se um valor aparecer na saída do terminal, ele é mascarado.
Os agentes podem, sim, ajudar você a encontrar o problema com duas ferramentas que não devolvem valores:
| Ferramenta | O que faz |
|---|---|
yuli_vault_findings |
Somente leitura: caminhos, tipo, gravidade, situação no git, nomes das variáveis e o que o cofre já guarda. Nunca um valor. |
yuli_vault_propose_move |
Mostra o cartão do Yuli com os arquivos que ele sugere mover e por quê. Não move nada: quem decide é você, no cartão. |
Assim o agente pode dizer «há um .env na raiz, posso movê-lo para o cofre?», mas nunca lê-lo. Veja também Segredos e privacidade.