Skip to content

Dangerous Actions Approval Token (Admin Fast Mode)

Visão geral

O Admin Fast Mode agora usa um token efêmero assinado pelo backend para aprovar ações perigosas (db_write, repo_write, git_push) sem prompt manual repetitivo.

  • Endpoint de emissão: POST /admin/approvals/fast-mode.
  • Header de uso: X-Spoke-Approval-Token: <token>.
  • Compatibilidade: X-Dangerous-Actions-Approved: true continua aceito.

Segurança

  1. Token contém sub, scopes, mode=fast, jti, iat, exp.
  2. TTL curto (default 20 min; máximo 30 min).
  3. Token só vale para o admin autenticado (sub precisa bater com usuário da sessão).
  4. Escopo é verificado por ação perigosa.
  5. Toda ação perigosa aprovada por token é auditada em sql_audit_log com approval_jti, approval_scopes, approval_endpoint e payload_hash.

Revogação

No MVP, a revogação é:

  • Cliente: desligar o Admin Fast Mode (token removido do sessionStorage).
  • Servidor: invalidar secret de assinatura (DANGEROUS_APPROVAL_TOKEN_SECRET) para revogar todos os tokens ativos.
  • Expiração automática por exp.

Variáveis de ambiente

  • DANGEROUS_APPROVAL_TOKEN_SECRET (obrigatória em produção).
  • DANGEROUS_APPROVAL_TOKEN_TTL_MINUTES (opcional, default 20).

Teste rápido (curl)

# 1) emitir token (com Authorization Bearer de admin)
curl -X POST http://localhost:3000/admin/approvals/fast-mode \
  -H "Authorization: Bearer <ADMIN_JWT>" \
  -H "Content-Type: application/json" \
  -d '{"scopes":["db_write","repo_write","git_push"],"ttlMinutes":20}'

# 2) usar token em chamada do copilot
curl -X POST http://localhost:3000/admin/copilot/messages \
  -H "Authorization: Bearer <ADMIN_JWT>" \
  -H "X-Spoke-Approval-Token: <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"message":"insira uma nova palavra", "executionPolicy":"admin_fast_mode"}'