runner secrets pull

Decripta o .runner/secrets.enc local e escreve o conteúdo nos arquivos plaintext .env e .secrets do working dir (merge-prefer-local). Disponível desde v2.30.10.

Use quando: você clonou o repo em um servidor novo, tem a ckey, mas o plaintext .env/.secrets ficou no servidor anterior. Ver guia → ../../recuperar/restaurar-em-novo-servidor.md.

Sintaxe

runner secrets pull [OPTIONS] <APP>

Flags

Flag Default Descrição
--dry-run Mostra o que seria escrito sem gravar nada
--json Atalho para --output json
-o, --output <FORMAT> human Formato de saída: human, json, yaml
--insecure Bypassa guards de segurança (gera banner e audit log)
-h, --help Exibe ajuda

Exemplo

$ runner secrets pull meu-app
Decrypting .runner/secrets.enc ...
  .env 3 keys written (merge: 0 local preserved)
  .secrets 5 keys written (merge: 1 local preserved)
Done. Run `runner deploy meu-app` when ready.

Verificar sem gravar:

$ runner secrets pull meu-app --dry-run
[dry-run] Would write 3 keys to .env
[dry-run] Would write 5 keys to .secrets
No files modified.

Por que rodar antes do primeiro deploy

Sem secrets pull, os arquivos plaintext ficam vazios. Um deploy subsequente (Phase 7 do pipeline) re-encripta o plaintext vazio e sobrescreve o bundle, destruindo todos os valores que estavam no .runner/secrets.enc.

Fluxo correto ao mover uma app para outro servidor:

# 1. Registrar a app com a ckey correta
runner add --repo owner/repo --token ghp_xxx --ckey "sua-ckey-aqui"

# 2. Extrair os valores do bundle para o working dir
runner secrets pull meu-app

# 3. Verificar e ajustar se necessário
runner secrets show meu-app

# 4. Fazer o deploy
runner deploy meu-app

Comportamento merge-prefer-local

Se .env ou .secrets já contiver chaves antes do pull, o runner mantém os valores locais e só escreve chaves ausentes a partir do bundle. Use --dry-run para inspecionar o diff antes de confirmar.

Erros comuns

  • bundle_not_found.runner/secrets.enc não existe no working dir; copie o arquivo do repo ou rode runner secrets push no servidor de origem antes de migrar.
  • decryption_failed: aead::Error — o bundle foi cifrado com uma ckey diferente da registrada neste servidor; use runner secrets reset-bundle após restaurar o plaintext por outro meio.
  • no_ckey — app registrada sem --ckey; re-registre com runner add --ckey "...".

Veja também

By Borlot.com.br on 27/05/2026