← ClaudeAtlas

azure-ai-foundry-agentslisted

Use when provisioning persistent tool-using AI agents on Azure AI Foundry. The Hub/Project/Connection Bicep pattern, per-service managed identity and RBAC including the two-role gotcha where Azure AI Developer alone is not enough, agent-as-code provisioned by a run-and-exit job, azd versus az deployment in CI, GitHub Actions to Azure authentication, and which PR-environment resources are cheap. Getting this wrong looks like a healthy deploy until the first agent-creation call.
konradcinkusz/architecture-standards · ★ 0 · AI & Automation · score 72
Install: claude install-skill konradcinkusz/architecture-standards
# Provisioning AI agents on Azure AI Foundry **Read [`references/AZURE-AI-FOUNDRY-AGENTS.md`](references/AZURE-AI-FOUNDRY-AGENTS.md) before applying any of this.** That file is the standard; everything below it is a summary to help you decide whether this skill applies and to check your work afterwards. ## What this standard covers - The model in one paragraph - What "agent" means here - Repository layout - Bicep: Hub, Project, Connection - RBAC: who needs what, and the gotchas - Agent-as-code: definitions and the provisioner - Managed identity per service - Provisioning the infrastructure - GitHub Actions → Azure authentication - Ephemeral / PR environments: what's cheap and what isn't ## Failure modes | Symptom | Cause | |---|---| | Agent creation fails with an authorization error, deploy otherwise looks healthy | Consuming service's identity has "Azure AI Developer" on the Project but not "Cognitive Services OpenAI Contributor" on the OpenAI account — both are required | | Hub↔OpenAI connection works for chat completions but not for agent operations | Hub identity has "OpenAI User" only; assistants/write needs "OpenAI Contributor" too | | Infrastructure deployment fails on its first run in a fresh subscription | `Microsoft.MachineLearningServices` resource provider not registered | | Role assignment fails with "already exists" on re-run | `name` on the `roleAssignments` resource used `guid()` with a random seed instead of a deterministic `guid(scope, principal, role)`