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.