Eu tirei 35 segredos do meu .zshrc em 10 minutos
Construí o kc — uma CLI que torna o macOS Keychain utilizável. Sem criptografia customizada. Só UX melhor.
Eu tinha 35 chaves de API no meu .zshrc.
Texto puro. Visível pra qualquer cat, qualquer screenshot, qualquer git push. Todo desenvolvedor no macOS conhece essa sensação — você precisa de uma chave rápido, joga um export no shell config e segue em frente. "Depois eu arrumo" vira a arquitetura.
O negócio é que o macOS já resolve isso. O Keychain tá lá desde sempre — AES-256, Secure Enclave, Touch ID. Criptografia real, em hardware, zero chamadas de rede. A segurança já tá na sua máquina.
Ninguém usa porque a UX é hostil.
Tenta isso:
security find-generic-password -s service -a account -w
Esse é o jeito oficial da Apple de ler um segredo pelo terminal. Eu escrevo software há 8 anos e ainda preciso googlar as flags toda vez.
Então eu construí o kc.
O que ele faz
Duas letras. Um propósito: tornar o caminho seguro o caminho fácil.
# Guardar um segredo (protegido por Touch ID por padrão)
kc set API_KEY
# Ler (copia pro clipboard, limpa em 30s)
kc get API_KEY
# Carregar tudo no shell (um Touch ID por boot)
eval "$(kc env)"
# Migrar seus segredos automaticamente
kc setup
Só isso. Sem criptografia customizada. Sem chamadas de rede. Sem arquivos de configuração. O kc é um wrapper em Go do CLI security da Apple. Seus segredos nunca saem da stack de criptografia que a Apple já construiu.
Quero ser honesto sobre isso: o kc não adiciona segurança que o macOS já não tenha. Ele remove a fricção que te impede de usar a segurança que você já tem. Como uma boa fechadura na porta da frente — a fechadura sempre existiu, só precisava de alguém pra facilitar a instalação.
A migração
Rodei kc setup na minha máquina. Ele escaneou meu .zshrc, encontrou 35 exports com chaves de API e tokens, me mostrou cada um e perguntou se eu queria importar.
Eu disse sim. Ele moveu tudo pro Keychain, comentou as linhas antigas com #kc-migrated# e injetou eval "$(kc env)" no meu shell config.
10 minutos. 35 segredos. Zero texto puro restante.
Agora quando abro um terminal novo, todos os meus segredos são carregados do Keychain com um único prompt de Touch ID. Uma impressão digital por sessão de boot — depois disso, tudo flui.
Touch ID como padrão
Todo segredo guardado com kc set é protegido por Touch ID por padrão. Presença física obrigatória. Nenhum script remoto consegue exfiltrar suas chaves sem sua impressão digital.
Mas eu não queria que fosse chato. Então o kc cacheia a aprovação do Touch ID pela sessão inteira de boot. Primeiro kc get do dia? Impressão digital. Depois disso? Passa direto. Reiniciou o Mac? Impressão digital de novo.
Como o sudo, mas por boot ao invés de 5 minutos.
A TUI
Digita kc sem argumentos e você ganha uma interface interativa no terminal:
- 🔍 Busca fuzzy em todos os seus segredos
- 👁️ Revelar valores inline
- 📋 Copiar pro clipboard com auto-clear
- 🏷️ Categorias visuais — chaves agrupadas por prefixo (AWS_, NOTION_, etc.)
- 🔒 Troca de vault — organize por ambiente (prod/staging/dev)
Construído com Bubbletea porque a vida é curta demais pra TUIs ruins.
Como funciona por baixo
macOS Keychain (AES-256 via Secure Enclave)
└── Service = "kc:{vault_name}"
└── Account = key_name
└── Password = secret_value
└── Access Control = Touch ID (padrão)
Vaults são só agrupamentos lógicos usando o campo service do Keychain. Sem armazenamento customizado, sem SQLite, sem arquivos pra vazar. A lista de vaults é inferida do que já tá no Keychain — se o kc sumir, seus segredos continuam lá, acessíveis pelo app Keychain Access nativo.
Por que estou compartilhando isso
Construí o kc pra mim mesmo. Ele coçava uma coceira que me incomodava há anos. No momento em que percebi que podia digitar kc get ao invés de googlar security find-generic-password pela centésima vez, soube que outras pessoas iam querer isso também.
É open source. Licença MIT. ~3K linhas de Go.
brew tap v-gutierrez/kc
brew install kc
Se você é um desenvolvedor macOS com segredos em texto puro — e estatisticamente, você é — experimenta. A migração leva 10 minutos, e seus segredos vão agradecer.