Docs
PlataformaAgentes

O modelo fine-grained

As três perguntas que o Xokepoint faz em toda chamada de tool, e como cada parte da configuração do agente responde a uma delas.

Quase todo controle de acesso para agentes para na tool: o agente pode chamar merge_pull_request ou não pode. Fica de fora quase tudo o que importa. Fazer merge em qual repositório? Agindo por quem? Com quantas aprovações no pull request? Até quando?

O Xokepoint confere cada chamada com três perguntas, em ordem, e cada parte da configuração do agente responde a uma delas:

PerguntaParte da configuraçãoOnde ficaPágina
Quem delegou?Who can delegate, por identity providerRelação no OpenFGAQuem pode delegar
Qual tool?Os servers e tools do agenteRelação no OpenFGATools
Sob quais condições?Regras na ligação agente · server · toolCEL no PDPRegras

As duas primeiras são relações: existem ou não, e podem ter data de fim. São publicadas antes de qualquer chamada e consultadas no OpenFGA a cada verificação. A terceira é uma regra sobre os dados da chamada: só tem resposta com os argumentos e os trusted attributes daquele momento, e quem avalia é o PDP (Condições).

O que torna o controle fino

Uma regra chega ao objeto concreto. "Pode chamar merge_pull_request" se torna "pode fazer merge em acme/payments-api, e só lá", com a regra repository is one of [acme/payments-api] naquela tool. Cada tool tem suas regras, então o agente pode listar issues em dois repositórios e fazer merge em um só.

Uma regra lê o mundo real. Uma regra pode comparar um argumento da chamada com um trusted attribute que o Xokepoint busca naquele momento numa API do cliente: as aprovações de um pull request, o limite de reembolso de um funcionário, o status de um pedido.

A delegação é por pessoa. O agente só age por quem está marcado no diretório do identity provider, e o mesmo agente pode atender 80 pessoas de um time e ninguém de outro.

Tudo é conferido em toda chamada. Nada fica congelado num token. Revogar uma relação ou mudar uma regra vale na próxima chamada.

A unidade de configuração

Tudo pertence ao agente. A delegação liga sujeitos ao agente, e tools e regras são as mesmas para todo sujeito que delega a ele e para toda instância do agente. Por isso não existe "regra para a alice": se a alice precisa de outro conjunto de permissões, isso é outro agente, outra tool ou outra regra na ligação do agente.

O exemplo completo monta um agente do zero e mostra o resultado de cinco chamadas diferentes.