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: truecontinua aceito.
Segurança¶
- Token contém
sub,scopes,mode=fast,jti,iat,exp. - TTL curto (default 20 min; máximo 30 min).
- Token só vale para o admin autenticado (
subprecisa bater com usuário da sessão). - Escopo é verificado por ação perigosa.
- Toda ação perigosa aprovada por token é auditada em
sql_audit_logcomapproval_jti,approval_scopes,approval_endpointepayload_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"}'