Agente fora da Microsoft via Agent 365 SDK
Núcleo verifica um turno keyless S2S com Agent ID, raiz invoke_agent e ingestão atribuída à instância correta.
GAFrontierNúcleo após gates de identidade e ingestão
Um turno LangChain, modelo Foundry keyless e uma tool somente leitura. Preservar os pacotes microsoft-agents-a365-observability-*: a Microsoft recomenda OpenTelemetry Distro, mas documenta que a abordagem existente continua funcionando. Migração não é pré-requisito.
- D02 conciliado:
A365_AGENT_ID= appId da instância;A365_BLUEPRINT_ID= appId do blueprint. Não usar object ID, MI client ID ou blueprint como agent id. - Export remoto exige também
A365_TENANT_IDeAZURE_CLIENT_IDda MI de bootstrap. Conferir o estado privadoscripts/.state/agent-id.json:blueprintAppId,blueprintObjectId,blueprintPrincipalId,agentAppIdeagentServicePrincipalIdsão campos separados, não intercambiáveis. - Managed identity é credencial de origem: MI → blueprint com FIC/FMI → token de recurso da instância.
DefaultAzureCredentialdireto no recurso como MI não substitui esse fluxo AgentID S2S. - Consent/app role
Agent365.Observability.OtelWrite, audience/tenant e endpoint S2S corretos. Não exportar tokens. - Registro Agent365 e grants ainda pendentes exigem handoff manual e prova separada; arquivo de estado não comprova consent nem registro no destino.
- Na IaC,
a365AgentIdcontinua sendo appId da instância ea365BlueprintIdé o do blueprint.a365ObservabilityEnabled=falseé o padrão: habilitar export remoto manualmente apenas após identidade, FIC, registro/consent e licença estarem prontos. - Pelo menos um usuário com licença Agent 365/E7 atribuída, além das obrigações de licença de todos os envolvidos. SKU comprado sozinho não basta.
- Deploy manual verificado, Azure sem chave, modelo e MCP com RBAC/scopes mínimos. Work IQ/notificações são extensões, não núcleo.
uv run --package agente-sdk pytest
pwsh tenant/25-agent-identities.ps1 -WhatIf # retorna antes de chamadas tenant, logs e estado
pwsh scripts/lab.ps1 up -Only infra # prepara/compila; deployment continua manual
tenant/25-agent-identities.ps1 prepara Entra/CSA/FIC e persiste IDs separados; registro Agent365/consentimento pendentes ficam como manual_pending e encerram a prontidão como pendente, não sucesso. Complete o handoff do blueprint existente conforme README SDK; não executar setup-all indiscriminadamente. A configuração PSD1 não ganha novas chaves por esse contrato.
Teste offline não prova ingestão nem substitui o gate Activity. Não executar instalação/migração de SDK no meio da demo.
Use fixture de tenant_not_licensed/rejeição ou evidência autorizada de ambiente separado. Nunca remover licenças do tenant para testar. Sem licença atribuída, a resposta pode ser HTTP 200 com spans rejeitados e motivo observável tenant_not_licensed; não é silêncio inevitável. Identidade divergente e token sem role/scope devem falhar.
Árvore de spans e correlação sanitizada, resultado de export/flush, rejeições observáveis e execução Activity atribuída à instância. Sem tokens, prompts ou dados bancários reais. Sucesso offline, aceitação HTTP e ingestão no destino são provas diferentes.
pwsh scripts/reset/D11.ps1: verificar ação real e preservar blueprint/identidade/licenças/evidências. Se parar o runtime, aguardar flush e confirmar parada/revisão manualmente; não prometer escala/restart automático só pela saída do script.
Sem invoke_agent válido, spans filhos podem aparecer em hunting sem Activity. Autenticação S2S usa roles e rota observabilityService; OBO usa scp e outra rota, fora do núcleo. Tokens MI usados para Foundry/MCP não são tokens Agent ID: não atribuir a eles enforcement de CA para Agent ID. Nenhuma Activity de tenant foi validada nesta revisão.