Skip to content

Padrões de integração

O agent-passport é a camada de identidade/atestação. Eis como ligá-la a um agente real.

1. Impor scopes na fronteira das tools

Envolve cada tool que o agente pode chamar para exigir um scope:

function guard(passport, scope, tool) {
  return async (args) => {
    assertScope(passport, scope);           // lança exceção se não concedido
    return tool(args);
  };
}

const sendEmail = guard(passport, 'email:send', rawSendEmail);

2. Registar todas as ações num audit store

async function run(agent, action, tool, args) {
  const result = await tool(args);
  const proof = await signAction(agent, { type: action, target: args.target, params: args });
  await auditStore.append(proof);           // assinado, à prova de adulteração
  return result;
}

Mais tarde, qualquer um pode verifyAction(proof) para confirmar que agente a fez.

3. Confiar num conjunto de operadores

Um verificador mantém uma allow-list de DIDs de operadores em que confia:

const passport = await verifyPassport(passportJwt);
if (!operadoresConfiaveis.has(passport.operator)) throw new Error('operador não confiável');

4. Passaportes de curta duração

Como o did:key não tem revogação, prefere expiresIn curto (horas/dias) e reemite. Para um setup revogável e de longa duração, acrescenta uma status list por cima ou usa um operador did:web — ver o ecossistema de VCs (ex.: walt.id).

O que isto não é

  • Não faz sandbox do processo do agente nem interceta syscalls.
  • Não impede um operador malicioso de conceder scopes a mais — a confiança está ancorada em que operadores o teu verificador aceita.