1. O problema — EnvRune
Todo projeto tem um .env: um arquivo em texto puro, ao lado do código, que é copiado entre máquinas, aparece em prints e em logs e é o primeiro arquivo que um agente de IA lê. O EnvRune mantém o mesmo fluxo de trabalho — um nome para cada variável, um valor por ambiente — e move os valores para um cofre criptografado, que só os entrega aos processos que você inicia.

2. As restrições — EnvRune
Ferramenta de segurança que atrapalha é abandonada: se rodar o projeto ficar mais difícil do que com o .env, o time volta para o .env. Cada proteção precisava custar quase nada no dia a dia e, mesmo assim, manter o valor fora do repositório, do terminal, dos logs e do contexto de um agente de IA. O passo seguinte é ainda mais difícil: compartilhar segredos com o time por meio de um servidor sem precisar confiar nele.

3. A decisão — EnvRune
Os valores injetados que o processo imprimir saem como ****, inclusive nas formas codificadas em URL e em base64. Como um valor pode chegar partido entre dois blocos de saída, o filtro retém apenas o final que ainda pode ser o começo de um segredo — e, no terminal, o processo roda em um pseudoterminal, então cores, barras de progresso e prompts continuam funcionando.

4. A solução — EnvRune
Construí sozinho uma CLI em Go, distribuída como um único binário. Os valores vivem em um cofre local cifrado com XChaCha20-Poly1305, com a chave protegida pela senha mestra via Argon2id; o projeto guarda só nomes, em um envrune.yml versionável; e o envrune run injeta as variáveis direto no processo e mascara a saída. Para times, o EnvRune Cloud é opcional e criptografado de ponta a ponta: o servidor guarda texto cifrado e nomes e, por padrão, não lê valor nenhum.

5. O aprendizado — EnvRune
O envrune mcp é um servidor MCP para Claude Code, Cursor e Copilot: o agente roda os testes ou sobe o servidor de desenvolvimento com os segredos injetados e recebe a saída mascarada. Nenhuma ferramenta devolve um valor, e só os comandos nomeados no envrune.yml podem ser executados — comando arbitrário vem desligado por padrão.
