--login / --logout / --whoami ainda é aceita como alias para compatibilidade retroativa.
A autenticação é opcional. Políticas, o painel, a página /audit e todos os outros recursos locais funcionam exatamente da mesma forma, esteja você conectado ou não. A funcionalidade de login existe para que recursos que precisam de uma identidade estável (lembretes de re-auditoria hoje, mais no futuro) tenham onde se ancorar.
Fluxo de login
~/.failproofai/auth.json (modo 0600). A mesma sessão fica visível no painel do aplicativo — ao clicar em [ set a reminder ] em /audit, você será reconhecido como conectado.
O painel expõe o mesmo fluxo como um diálogo modal em /audit para usuários que nunca usam a CLI.
Sair
~/.failproofai/auth.json. Se o servidor de API estiver inacessível, o arquivo local é removido de qualquer forma — a intenção local de desconectar sempre prevalece.
Verificação de identidade
<email> (<uuid do usuário>) e encerra com código 0 quando há uma sessão válida, ou not signed in e encerra com código 1 caso contrário. Atualiza silenciosamente o token de acesso em segundo plano se ele estiver a menos de um minuto de expirar.
Lembrete recorrente de re-auditoria
Ao clicar em[ set a reminder ] na página /audit (ou ao entrar via o modal que o botão exige), o painel grava um pequeno arquivo complementar em ~/.failproofai/next-audit.json:
0600, assim como auth.json.
O endpoint /api/auth/reminder do painel expõe os métodos GET (ler), POST (definir / reagendar) e DELETE (limpar), e requer uma sessão ativa.
O que há em ~/.failproofai/auth.json
0600 (leitura/escrita apenas pelo proprietário). O token de acesso é um JWT HS256 válido por 1 hora; o refresh token é uma string aleatória opaca de 256 bits que o servidor armazena como SHA-256(token). A reutilização do refresh token é detectada no servidor e revoga todas as sessões do usuário.
Variáveis de ambiente
Consulte Variáveis de ambiente para a lista completa.
Solução de problemas
“Could not reach the api-server” — a CLI não consegue abrir uma conexão TCP comFAILPROOF_API_URL. Verifique sua rede ou defina FAILPROOF_API_URL se estiver executando um servidor de API auto-hospedado.
“Rate limited” — muitas tentativas de login em uma janela de 15 minutos para aquele e-mail (5/e-mail) ou IP (20/IP), ou um intervalo de reenvio de 30 segundos após a solicitação anterior para o mesmo e-mail. A mensagem de erro inclui o tempo de espera em segundos.
Código rejeitado — o OTP estava incorreto, expirado, ou a entrada atingiu o bloqueio após 5 tentativas erradas. Execute failproofai auth login novamente para solicitar um novo código.
