Azure SRE Agent Bundles
Bundles are modular capability packs used to build production SRE Agents without editing the core skill file.
Use bundles to add, remove, or evolve capabilities over time.
Why Bundles
- Keep
SKILL.mdstable and concise. - Isolate capabilities by domain (core, observability, triggers, source RCA, workload, governance, connectors).
- Make capability changes additive and versionable.
- Improve reuse across multiple agents/environments.
Bundle Layout
Each bundle folder should include:
bundle.yaml(metadata + capability manifest)- Optional
agents/definitions - Optional
response-plans/definitions - Optional
scheduled-tasks/definitions - Optional
http-triggers/definitions - Optional
hooks/definitions - Optional
connectors/templates - Optional
roles/,templates/, andchecklists/
Hook resources must use the v2 ExtendedAgent shape with spec.hooks, failMode, and maxRejections. Scheduled task, response-plan, and HTTP trigger resources must default to Review mode or document equivalent portal-import settings. Custom-agent templates should include explicit allowed_skills so agent-specific overrides do not accidentally drop required skills.
Manifest Metadata
Every bundle.yaml must include:
capabilitiestriggersrequired_inputsoutputsrisk_level(low,medium, orhigh)autonomy_default: Review
This metadata makes bundle routing, review, and automation-readiness easier for agents and humans. Catalog and local manifest versions must match.
Current Bundles
base-coreobservability-ambahttp-triggers-productionhttp-trigger-auth-bridgessource-rca-remediationpr-deployment-guardknowledge-lifecyclesecurity-identityoperational-metricsazure-workload-productionvm-cosmos-productionaks-productioncontainerapps-productiondrasi-aks-productionincident-platformsgovernance-kttool-permissions-governanceconnectors-observabilityconnectors-collab-handoffproactive-ops-governancewaf-reviewai-foundry-posturedigital-native-governance
See catalog.yaml for bundle index and ownership.
How to Extend
- Create a new bundle directory with
bundle.yaml. - Add only capability-specific resources (avoid duplicating unrelated resources).
- Register the bundle in catalog.yaml.
- Add manifest metadata: capabilities, triggers, required inputs, outputs, risk level, and autonomy default.
- Link it from
references/bundles-operations.mdandreferences/capability-matrix.mdwhen useful. - Add acceptance tests/checklists for operational readiness.
Naming Guidance
- Use lowercase and hyphens only.
- Name by outcome or domain.
- Keep resources environment-neutral using placeholders.
Upgrade Guidance
- Prefer adding new bundles over editing many existing bundles.
- If breaking changes are necessary, bump
versionand document migration.
Deployment Methods
Method 1: Portal (No Code Required)
- Open Azure Portal → search "SRE Agent" → your resource
- Navigate to Response Plans → Add
- Paste YAML from bundle file
- Replace @@PLACEHOLDER@@ values using
parameters.example.yaml - Save
Time: ~5 minutes | Skill level: Portal-user | Rollback: Delete response plan
Method 2: Data-Plane API (Azure CLI + REST)
There is no az sre-agent CLI command group (verified 2026-08-10 against the Azure CLI reference and extensions index). Response plans are applied through the agent's data-plane API with a token for the https://azuresre.dev audience:
# Resolve the data-plane endpoint from the agent resource (api-version 2026-01-01)
AGENT=$(az resource list --resource-type Microsoft.App/agents --query '[0].id' -o tsv)
ENDPOINT=$(az rest --method GET --url "https://management.azure.com${AGENT}?api-version=2026-01-01" --query properties.agentEndpoint -o tsv)
TOKEN=$(az account get-access-token --resource "https://azuresre.dev" --query accessToken -o tsv)
# PUT creates, POST updates. The id MUST be in the PATH -- writing to the
# collection path returns 405 with an empty body, which reads like a transient
# failure rather than the wrong URL. An "id" in the JSON body is not enough.
curl -s -X PUT "$ENDPOINT/api/v1/incidentPlayground/filters/core-high-severity" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
--data @bundles/base-core/response-plans/core-high-severity.yamlTime: ~10 minutes | Skill level: CLI-familiar | Rollback: POST the previous plan body (never DELETE-then-PUT a live plan; a rejected PUT after DELETE leaves alerts routing nowhere)
For full CI/CD automation, use apply-extras.sh from the upstream microsoft/sre-agent templates, which applies response plans, hooks, HTTP triggers, and knowledge files in the data-plane phase.
Method 3: Terraform / Bicep (Production Recommended)
See ../references/aks-containerapps-production.md for ready-made modules that wrap these bundles.
Time: ~30 minutes | Skill level: IaC-familiar | Rollback: terraform destroy or az bicep deploy --rollback
Troubleshooting Deployment
| Error | Cause | Solution |
|---|---|---|
| Syntax error in YAML | Malformed bundle file | Validate with yamllint or portal UI |
| 404 Not Found | Response plan not found | Verify resource group name; check region availability |
| Forbidden (403) | Missing permissions | Verify you have Owner or Contributor role on SRE Agent resource |
| Invalid placeholder | Unmapped @@PLACEHOLDER@@ | Check parameters.example.yaml comments; ensure all placeholders are replaced |
- Keep deprecated bundles readable until replacement bundles are adopted.