Docs

Semântica de falha

A diferença entre negar e bloquear, e por que nenhuma falha resulta em execução.

Uma avaliação pode terminar de três jeitos, e só um deles executa a tool. Um agente em Report-only acrescenta um quarto, que também executa.

DENY quer dizer que a política foi avaliada e negou: falta uma relação ou uma condição deu falso. É um resultado normal, registrado com o motivo.

WOULD DENY é um DENY da política de um agente em Report-only: uma tool sem grant, um recurso fora dos concedidos ou uma condição falsa. A tool roda, quem chamou recebe o resultado normal sem código de referência, e o registro guarda a chamada com o mesmo motivo e o mesmo caminho de um DENY. Uma delegação ausente nunca vira Would deny.

Bloqueio quer dizer que não foi possível decidir: o OpenFGA não respondeu, um fato obrigatório não chegou, uma expressão deu erro, a configuração mudou no meio da avaliação. O agente recebe 503. Tratar essas falhas como DENY esconderia um problema de infraestrutura atrás de um "acesso negado". Tratar como ALLOW seria abrir acesso justamente quando o Xokepoint não sabe se deve. O bloqueio vale nos dois modos: o Report-only nunca transforma uma falha numa chamada executada.

Um bloqueio também é rápido. Cada chamada ao OpenFGA tem timeout de 5 segundos e não é repetida, então uma queda do OpenFGA vira um 503 na hora, em vez de uma chamada que espera atrás de retries.

Na entrada, cada situação tem uma resposta própria:

SituaçãoRespostaExecuta?
Token, agente ou identity connection inválidosHTTP 401Não
Metadados de protocolo inconsistentes, mapping ou argumentos inválidosHTTP 400, erro JSON-RPCNão
Tool fora do catálogo aprovadoHTTP 403Não
Política negouHTTP 200, erro JSON-RPC de acesso negadoNão
Política negou, agente em Report-onlyHTTP 200, resultado do MCPSim
OpenFGA, fato obrigatório ou avaliação indisponíveisHTTP 503Não
Falha no MCP server depois do ALLOWHTTP 502Resultado incerto, sem nova tentativa
SucessoHTTP 200, resultado do MCPSim

O DENY volta como HTTP 200 com erro JSON-RPC porque a chamada HTTP funcionou e o protocolo MCP tem como dizer que a tool foi negada. O agente recebe uma resposta que entende, sem confundir negação com falha de rede. O erro traz o código Reference da chamada negada e nunca o motivo; o administrador encontra o motivo por esse código (Quick incident).

O 502 depois do ALLOW não é repetido automaticamente. A tool pode ter executado antes de a resposta se perder, e repetir uma tool com efeito colateral pode fazer a ação duas vezes.