runner secrets reset-bundle

Reconstrói o bundle criptografado .runner/secrets.enc a partir dos arquivos plaintext locais .env e .secrets. Substitui o bundle local e o remoto (no repo dist), a menos que --no-push seja usado. Disponível desde v2.30.3.

Use quando: o plaintext local está correto, mas o bundle remoto foi criptografado com uma ckey diferente da registrada neste servidor — erro Decryption failed: aead::Error em runner cleanup-bundle ou secrets show. Ver guia → ../../recuperar/bundle-decrypt-fail.md.

Sintaxe

runner secrets reset-bundle [OPTIONS] <APP>

Flags

Flag Default Descrição
--dry-run Simula sem gravar nem fazer push
--no-push Re-encripta localmente, mas não commita/pusha para o repo
--yes Skipa a confirmação interativa (obrigatório em cron/non-TTY)
-o, --output <FORMAT> human Formato de saída: human, json, yaml
--json Atalho para --output json
--insecure Bypassa guards de segurança (gera banner e audit log)
-h, --help Exibe ajuda

Exemplo

$ runner secrets reset-bundle meu-app
SAFETY: This operation discards the remote bundle.
Local .env has 3 keys, .secrets has 5 keys.
Proceed? [y/N]: y

Re-encrypting from local plaintext ...
  .runner/secrets.enc written (8 keys, AES-256-GCM)
  pull/.runner/secrets.enc written
Pushing to dist branch ...
  Committed: abc1234 "runner: reset secrets bundle [meu-app]"
  Pushed: origin/dist
Done.

Inspecionar sem gravar:

$ runner secrets reset-bundle meu-app --dry-run
[dry-run] Would re-encrypt 8 keys from local plaintext.
[dry-run] Would push to origin/dist.
No files modified.

Rebuild local sem push (para inspeção antes de publicar):

$ runner secrets reset-bundle meu-app --no-push --yes
Re-encrypting from local plaintext ...
  .runner/secrets.enc written (8 keys, AES-256-GCM)
  pull/.runner/secrets.enc written
Push skipped (--no-push). Run `runner secrets push meu-app` when ready.

O que o comando faz

  1. /data/apps/<app>/.env e .secrets (plaintext neste host)
  2. Criptografa com a ckey atual registrada para o servidor
  3. Substitui .runner/secrets.enc local e pull/.runner/secrets.enc
  4. Commita e faz push para o branch dist (a menos que --no-push)

Aviso de segurança

Este comando descarta o bundle remoto existente. Chaves que existiam apenas no bundle remoto (não no plaintext local) são perdidas. Antes de rodar, verifique o que está localmente:

runner secrets show meu-app

Se o plaintext local estiver incompleto, preencha as chaves faltantes com runner secrets set antes de executar reset-bundle.

Cenário típico: app migrada entre servidores

# Sintoma: runner secrets show falha com "Decryption failed"
# Causa: app foi originalmente registrada em outro servidor com ckey diferente

# 1. Confirmar que o plaintext local está completo
runner secrets show meu-app --insecure   # lê direto do .env/.secrets, não do bundle

# 2. Completar chaves faltantes se necessário
runner secrets set meu-app CHAVE_FALTANTE "valor"

# 3. Rebuild do bundle com a ckey atual
runner secrets reset-bundle meu-app

Erros comuns

  • no_plaintext.env e .secrets estão vazios ou ausentes; use runner secrets pull se o bundle de outro servidor for acessível, ou recrie manualmente com runner secrets set.
  • no_ckey — app registrada sem ckey; re-registre com runner add --ckey "...".
  • push_failed — token sem permissão de push no repo dist; use --no-push e depois runner secrets push com token correto.

Veja também

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