runner shell-hook
v2.135.0+ (#176). Um valor sensível digitado na linha de comando
(runner env set app KEY valor, runner add --token ghp_…, --ckey,
--value) fica no history do shell. Um processo filho não alcança o
history em memória do shell que o chamou — quem mascara é o próprio shell.
Este comando instala esse gancho.
Uso
runner shell-hook # imprime o script (bash + zsh)
runner shell-hook --install # grava /etc/profile.d/runner-history-mask.sh (root)
runner shell-hook --scrub # mascara agora o que já está em ~/.bash_history / ~/.zsh_historyDepois do --install: bash de login novo já carrega; na sessão atual,
source /etc/profile.d/runner-history-mask.sh. zsh: acrescente essa linha
ao ~/.zshrc.
O que o gancho faz
- bash:
PROMPT_COMMANDtroca a última entrada do history pela versão mascarada (runner env set app KEY ******** --secret). - zsh:
zshaddhistorygrava a versão mascarada em vez da original. - A máscara é a mesma do audit log (
--token,-t,--ckey,--value, 3º posicional deenv set/secrets set); aspas e comandos encadeados (&&,;,|) são respeitados. - Exporta
RUNNER_HISTORY_MASK=1; com ela o runner não repete o aviso.
Sem o gancho
Quando o argv traz um segredo, o runner mascara as linhas antigas nos
arquivos de history e avisa que a sessão atual ainda guarda o valor. O
ps mostra o argv enquanto o comando roda: só o prompt oculto ou --stdin
evitam isso.
Prompt oculto
Omitir o valor pede num prompt com eco de *:
runner env set meu-app API_KEY --secret
runner add --repo org/app --token # --token sem valor
runner edit meu-app --tokenSem terminal (cron, pipe), o comando erra apontando --token-stdin /
--stdin em vez de travar. --ckey sem valor continua significando "gerar
aleatória".