Documentação oficial desta página · v0.20.6
Segredos por comando auxiliar
Resolva credenciais rodando um comando seu na inicialização — qualquer cofre com linha de comando
serve: keepassxc-cli, secret-tool (Chaveiro do GNOME), pass, gpg, a CLI do Vaultwarden, ou um
script que despeja um arquivo de ambiente num tmpfs. O comando imprime linhas CHAVE=VALOR na saída
padrão; o Hermes as aplica pelo mesmo orquestrador do Bitwarden e do
1Password, então dá para ligar qualquer combinação de fontes ao mesmo
tempo.
Como funciona
- Você configura o comando no
config.yaml(nunca no.env— o comando é configuração, o.envguarda valores). - Na inicialização, depois de carregar o
.env, o Hermes roda o comando UMA vez, via/bin/sh -c, e interpreta a saída como um bloco no formato dotenv. - As chaves entram na escada de precedência padrão:
.enve o shell vencem, a menos queoverride_existing: true; fontes mapeadas vencem esta fonte em massa nas variáveis disputadas; a primeira reivindicação vence.
secrets:
command:
enabled: true
command: "cat /run/user/1000/hermes-secrets.env"
# ou qualquer CLI de cofre que despeje linhas CHAVE=VALOR:
# command: "pass show hermes/env"
# command: "secret-tool lookup service hermes-env"
Configuração
| Chave | Padrão | O que faz |
|---|---|---|
enabled | false | Interruptor principal. |
command | "" | Comando rodado por /bin/sh -c; precisa imprimir linhas CHAVE=VALOR na saída padrão. |
helper_timeout_seconds | 3 | Tempo limite de uma execução. Apertado de propósito — o comando precisa ser rápido e NÃO interativo (sem pedir desbloqueio, sem toque ou PIN). |
override_existing | false | Os valores do comando sobrescrevem o .env e o shell. Desligado por padrão (diferente do Bitwarden e do 1Password), já que um auxiliar local não é uma autoridade central de rotação. |
Modelo de segurança
- A linha de comando é configuração SUA — mesmo nível de confiança do
.envque você controla. - A saída tem teto rígido de 1 MiB; um comando desgovernado não trava a inicialização (o grupo de processos é morto no tempo limite).
- A saída de erro do comando é descartada — diagnósticos de CLI de cofre podem carregar segredo, então nunca chegam à saída do Hermes. As falhas registram só campos estruturados (código de saída, sinal, errno), nunca a linha de comando.
- Valores só com espaço em branco contam como "sem valor" — uma entrada de espaço reservado nunca vira um cabeçalho de autorização.
- Só POSIX (precisa de
/bin/sh). No Windows a fonte se declara não configurada e a inicialização segue.
Modos de falha
A inicialização nunca é bloqueada. Os erros imprimem uma linha mais uma dica de correção, com →:
| Sintoma | Causa | Correção |
|---|---|---|
secrets.command.command is empty | Habilitado sem comando | Defina secrets.command.command no config.yaml |
helper command failed | Saída diferente de zero, tempo esgotado, falha ao criar o processo | Rode o comando na mão, num shell, para ver o erro real (o Hermes descarta a saída de erro de propósito) |
helper output was not a KEY=VALUE map | O comando imprimiu um valor solto ou lixo | Faça o comando emitir linhas no formato dotenv |
Quando usar isto em vez de um plugin
A fonte por comando é a saída de emergência para cofres sem integração pronta. Se você se pegar embrulhando uma dança complexa de CLI num script longo, considere um plugin de fonte de segredos de verdade — plugins ganham cache, rótulos de procedência e configuração tipada.