Agent-Skills azure-iot-hub

Expert knowledge for Azure IoT Hub development including troubleshooting, best practices, decision making, architecture & design patterns, limits & quotas, security, configuration, integrations & coding patterns, and deployment. Use when provisioning devices via DPS, managing twins/routes, using direct methods, Device Update, or Cosmos DB sinks, and other Azure IoT Hub related development tasks. Not for Azure IoT (use azure-iot), Azure IoT Central (use azure-iot-central), Azure IoT Edge (use azure-iot-edge), Azure Defender For Iot (use azure-defender-for-iot).

install
source · Clone the upstream repo
git clone https://github.com/MicrosoftDocs/Agent-Skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/MicrosoftDocs/Agent-Skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/azure-iot-hub" ~/.claude/skills/microsoftdocs-agent-skills-azure-iot-hub && rm -rf "$T"
manifest: skills/azure-iot-hub/SKILL.md
source content

Azure IoT Hub Skill

This skill provides expert guidance for Azure IoT Hub. Covers troubleshooting, best practices, decision making, architecture & design patterns, limits & quotas, security, configuration, integrations & coding patterns, and deployment. It combines local quick-reference content with remote documentation fetching capabilities.

How to Use This Skill

IMPORTANT for Agent: Use the Category Index below to locate relevant sections. For categories with line ranges (e.g.,

L35-L120
), use
read_file
with the specified lines. For categories with file links (e.g.,
[security.md](security.md)
), use
read_file
on the linked reference file

IMPORTANT for Agent: If

metadata.generated_at
is more than 3 months old, suggest the user pull the latest version from the repository. If
mcp_microsoftdocs
tools are not available, suggest the user install it: Installation Guide

This skill requires network access to fetch documentation content:

  • Preferred: Use
    mcp_microsoftdocs:microsoft_docs_fetch
    with query string
    from=learn-agent-skill
    . Returns Markdown.
  • Fallback: Use
    fetch_webpage
    with query string
    from=learn-agent-skill&accept=text/markdown
    . Returns Markdown.

Category Index

CategoryLinesDescription
TroubleshootingL37-L53Diagnosing and fixing IoT Hub, DPS, and Device Update issues: connectivity, routing, proxy/storage errors, error codes, and collecting/using diagnostic and device logs.
Best PracticesL54-L62Guidance on secure, large-scale IoT Hub/DPS deployments: OEM device security, enrollment at scale, resilient device reconnection, and automatic device configuration best practices.
Decision MakingL63-L75Guidance for choosing IoT Hub vs alternatives, tiers/scale, pricing, routing, comms patterns (C2D/D2C), monitoring methods, and when to use or disable disaster recovery.
Architecture & Design PatternsL76-L82Design patterns for DPS lifecycle/HA/DR, VNet connectivity, secure device streams, and reliably persisting ordered IoT Hub events with Cosmos DB.
Limits & QuotasL83-L88Details on IoT Hub and Device Update service limits, quotas, throttling behavior, and how many devices/operations you can scale to before hitting constraints.
SecurityL89-L125Securing IoT Hub and DPS: auth (Entra ID, RBAC, SAS, X.509), cert/key rotation, TLS/ciphers, network isolation (IP filters, private endpoints, VNet), Device Update security, and policy/compliance.
ConfigurationL126-L165Configuring IoT Hub and DPS: enroll devices, set allocation policies, routes, endpoints, twins, jobs, messaging, IPs, monitoring, Device Update manifests, and message enrichments.
Integrations & Coding PatternsL166-L189Device-to-cloud integration patterns: DPS provisioning (HTTPS/MQTT, symmetric/X.509/TPM), IoT Hub messaging, twins, direct methods, file upload, modules, bulk ops, and protocol-specific samples.
DeploymentL190-L201Deploying and updating IoT Hubs and devices: region/SKU migration, failover, ARM/Bicep deployments, Device Update (image/package, proxy, OS support), and scheduling jobs via CLI.

Troubleshooting

TopicURL
Diagnose and fix common Azure DPS provisioning errorshttps://learn.microsoft.com/en-us/azure/iot-dps/how-to-troubleshoot-dps
Use Agent Check to diagnose missing Device Update deviceshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-agent-check
Use Device Update diagnostics, error codes, and logshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-diagnostics
Interpret Device Update for IoT Hub error codeshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-error-codes
Collect and review Device Update diagnostic logs remotelyhttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-log-collection
Resolve proxy update import errors in Device Updatehttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-proxy-update-troubleshooting
Diagnose and fix common Device Update issueshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/troubleshoot-device-update
Fix storage permission errors when importing Device Updateshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/troubleshoot-storage
Collect device debug logs using IoT SDKshttps://learn.microsoft.com/en-us/azure/iot-hub/how-to-collect-device-logs
Monitor and troubleshoot IoT Hub device connectivityhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-troubleshoot-connectivity
Resolve Azure IoT Hub error codeshttps://learn.microsoft.com/en-us/azure/iot-hub/troubleshoot-error-codes
Troubleshoot Azure IoT Hub message routing issueshttps://learn.microsoft.com/en-us/azure/iot-hub/troubleshoot-message-routing
Troubleshoot device connectivity to Azure IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/tutorial-connectivity

Best Practices

TopicURL
Apply DPS best practices for large-scale IoT deploymentshttps://learn.microsoft.com/en-us/azure/iot-dps/concepts-deploy-at-scale
Implement OEM security practices for DPS-enabled deviceshttps://learn.microsoft.com/en-us/azure/iot-dps/concepts-device-oem-security-practices
Design resilient Azure IoT Hub device reconnectionhttps://learn.microsoft.com/en-us/azure/iot-hub/concepts-manage-device-reconnections
Apply IoT Hub automatic device configuration best practiceshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-configuration-best-practices
Apply security best practices to Azure IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/secure-azure-iot-hub

Decision Making

TopicURL
Decide when to disable IoT Hub disaster recoveryhttps://learn.microsoft.com/en-us/azure/iot-hub/how-to-disable-dr
Choose between Azure IoT Hub and Event Hubshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-compare-event-hubs
Choose IoT Hub cloud-to-device communication optionhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-c2d-guidance
Choose IoT Hub device-to-cloud communication optionhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-d2c-guidance
Understand Azure IoT Hub pricing and meteringhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-pricing
Decide between IoT Hub routing and Event Gridhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-event-grid-routing-comparison
Select the right Azure IoT Hub tier and scalehttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-scaling
Select and upgrade Azure IoT Hub tier and sizehttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-upgrade
Choose IoT Hub device connection monitoring methodhttps://learn.microsoft.com/en-us/azure/iot-hub/monitor-device-connection-state

Architecture & Design Patterns

TopicURL
Plan DPS device lifecycle and reprovisioning policieshttps://learn.microsoft.com/en-us/azure/iot-dps/concepts-device-reprovision
Design DPS high availability and disaster recoveryhttps://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr
Use virtual network connectivity patterns with DPShttps://learn.microsoft.com/en-us/azure/iot-dps/virtual-network-support

Limits & Quotas

TopicURL
Review Azure Device Update service limitshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-limits
Azure IoT Hub quotas, limits, and throttling behaviorhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-quotas-throttling

Security

TopicURL
Secure DPS APIs using Microsoft Entra ID and RBAChttps://learn.microsoft.com/en-us/azure/iot-dps/concepts-control-access-dps-azure-ad
Configure DPS access control with SAS tokenshttps://learn.microsoft.com/en-us/azure/iot-dps/how-to-control-access
Revoke or disenroll device access in DPS securelyhttps://learn.microsoft.com/en-us/azure/iot-dps/how-to-revoke-device-access-portal
Roll and update X.509 certificates in DPShttps://learn.microsoft.com/en-us/azure/iot-dps/how-to-roll-certificates
Deprovision DPS devices and revoke IoT Hub accesshttps://learn.microsoft.com/en-us/azure/iot-dps/how-to-unprovision-devices
Verify X.509 CA certificates with DPS proof-of-possessionhttps://learn.microsoft.com/en-us/azure/iot-dps/how-to-verify-certificates
Configure IP filtering rules for Azure IoT DPShttps://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ip-filtering
Manage public network access and private endpoints for DPShttps://learn.microsoft.com/en-us/azure/iot-dps/public-network-access
Configure TLS versions and ciphers for DPS connectionshttps://learn.microsoft.com/en-us/azure/iot-dps/tls-support
Assign RBAC roles for Device Update and IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/configure-access-control-device-update
Set up private endpoints for Device Update accountshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/configure-private-endpoints
Configure RBAC and Entra auth for Device Updatehttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-control-access
Configure data encryption and CMKs for Device Updatehttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-data-encryption
Configure network ports for Device Update traffichttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-networking
Prepare for Device Update root key rotationshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-rootkey
Understand end-to-end security in Device Updatehttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-security
Configure network security and private access for Device Updatehttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/network-security
Secure IoT Hub APIs with Microsoft Entra ID and RBAChttps://learn.microsoft.com/en-us/azure/iot-hub/authenticate-authorize-azure-ad
Control IoT Hub access with SAS tokenshttps://learn.microsoft.com/en-us/azure/iot-hub/authenticate-authorize-sas
Authenticate IoT Hub devices with X.509 certificateshttps://learn.microsoft.com/en-us/azure/iot-hub/authenticate-authorize-x509
Manage IoT Hub device identities and connection stringshttps://learn.microsoft.com/en-us/azure/iot-hub/create-connect-device
Use Azure IoT Hub identity registry for device managementhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-identity-registry
Configure IP filtering rules for Azure IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-ip-filtering
Use managed identities with Azure IoT Hub egresshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-managed-identity
Manage public network access for Azure IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-public-network-access
Restrict IoT Hub outbound network access for DLPhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-restrict-outbound-network-access
TLS versions and cipher requirements for IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support
Migrate IoT Hub TLS root certificate to DigiCert G2https://learn.microsoft.com/en-us/azure/iot-hub/migrate-tls-certificate
Built-in Azure Policy definitions for IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/policy-reference
Regenerate IoT Hub shared access keys safelyhttps://learn.microsoft.com/en-us/azure/iot-hub/regenerate-keys
Azure Policy compliance controls for IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/security-controls-policy
Create and upload X.509 test certificates for IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/tutorial-x509-test-certs
Connect Azure IoT Hub with virtual networks securelyhttps://learn.microsoft.com/en-us/azure/iot-hub/virtual-network-support

Configuration

TopicURL
Manage DPS device enrollments in Azure portalhttps://learn.microsoft.com/en-us/azure/iot-dps/how-to-manage-enrollments
Link and manage IoT hubs in DPShttps://learn.microsoft.com/en-us/azure/iot-dps/how-to-manage-linked-iot-hubs
Configure DPS allocation policies across IoT hubshttps://learn.microsoft.com/en-us/azure/iot-dps/how-to-use-allocation-policies
Query and manage DPS instance IP address propertieshttps://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-understand-ip-address
Reference for Azure DPS monitoring metrics and logshttps://learn.microsoft.com/en-us/azure/iot-dps/monitor-iot-dps-reference
Create apt manifests for package-based Device Updateshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-apt-manifest
Configure adu-config.json for Device Update agentshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-configuration-file
Configure multistep execution in Device Update manifestshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-multi-step-updates
Author JSON import manifests for Device Updatehttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/import-schema
Configure related files in Device Update import manifestshttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/related-files
Define update manifest payloads for Device Updatehttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/update-manifest
Configure IoT Hub routes and endpoints in Azure portalhttps://learn.microsoft.com/en-us/azure/iot-hub/how-to-routing-portal
Configure IoT Hub file upload to Azure Storagehttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-configure-file-upload
Handle customer data requests for IoT Hub deviceshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-customer-data-requests
Understand and configure Azure IoT Hub device twinshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-device-twins
Configure and use IoT Hub direct methodshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-direct-methods
Configure and use Azure IoT Hub device and service endpointshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-endpoints
Use IoT Hub file upload for large device datahttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-file-upload
Configure and manage Azure IoT Hub jobs for device fleetshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-jobs
Configure cloud-to-device messaging in IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-c2d
Configure IoT Hub device-to-cloud message routinghttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-d2c
Understand and configure Azure IoT Hub module twinshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-module-twins
Configure IoT Hub communication protocols and portshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-protocols
Use Azure IoT Hub query language for twins and jobshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-query-language
Use IoT Hub message routing query languagehttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-routing-query-syntax
Deploy IoT Hub with ADR and certificate management settingshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-device-registry-setup
Configure message enrichments in Azure IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-message-enrichments-overview
Non-telemetry event schemas for Azure IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-non-telemetry-event-schema
Understand and manage Azure IoT Hub IP addresseshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-understand-ip-address
Manage IoT Hub device and module twins via portal and CLIhttps://learn.microsoft.com/en-us/azure/iot-hub/manage-device-twins
Reference metrics and logs for monitoring Azure IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/monitor-iot-hub-reference
Run and interpret queries on Azure IoT Hub jobshttps://learn.microsoft.com/en-us/azure/iot-hub/query-jobs
Query IoT Hub device and module twinshttps://learn.microsoft.com/en-us/azure/iot-hub/query-twins
Use the Azure IoT Hub VS Code extensionhttps://learn.microsoft.com/en-us/azure/iot-hub/reference-iot-hub-extension
Set up and use IoT Hub message enrichmentshttps://learn.microsoft.com/en-us/azure/iot-hub/tutorial-message-enrichments
Configure IoT Hub message routing to Azure Storagehttps://learn.microsoft.com/en-us/azure/iot-hub/tutorial-routing

Integrations & Coding Patterns

TopicURL
Send additional payload data between devices and DPShttps://learn.microsoft.com/en-us/azure/iot-dps/how-to-send-additional-data
Use raw HTTPS with DPS symmetric key provisioninghttps://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-https-sym-key-support
Use raw HTTPS with DPS X.509 certificate provisioninghttps://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-https-x509-support
Connect devices to Azure IoT DPS over MQTThttps://learn.microsoft.com/en-us/azure/iot-dps/iot-mqtt-connect-to-iot-dps
Programmatically create DPS TPM individual enrollmentshttps://learn.microsoft.com/en-us/azure/iot-dps/quick-enroll-device-tpm
Programmatically create DPS X.509 enrollment groupshttps://learn.microsoft.com/en-us/azure/iot-dps/quick-enroll-device-x509
Implement Device Update component enumerator via proxyhttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/components-enumerator
Send and receive IoT Hub cloud-to-device messages with SDKshttps://learn.microsoft.com/en-us/azure/iot-hub/how-to-cloud-to-device-messaging
Implement device management actions using IoT Hub direct methodshttps://learn.microsoft.com/en-us/azure/iot-hub/how-to-device-management
Use IoT Hub device and service SDKs with device twinshttps://learn.microsoft.com/en-us/azure/iot-hub/how-to-device-twins
Upload device files to cloud using IoT Hub SDKshttps://learn.microsoft.com/en-us/azure/iot-hub/how-to-file-upload
Use module identities and twins with IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub/how-to-module-twins
Use IoT Hub service SDK to schedule broadcast jobshttps://learn.microsoft.com/en-us/azure/iot-hub/how-to-schedule-broadcast-jobs
Use AMQP protocol with Azure IoT Hub endpointshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-amqp-support
Bulk import and export IoT Hub device identitieshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-bulk-identity-mgmt
Construct Azure IoT Hub message formatshttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-construct
Read IoT Hub messages from built-in endpointhttps://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-read-builtin
Connect devices to Azure IoT Hub using MQTThttps://learn.microsoft.com/en-us/azure/iot-hub/iot-mqtt-connect-to-iot-hub
Control IoT devices via direct methods using .NET sampleshttps://learn.microsoft.com/en-us/azure/iot-hub/quickstart-control-device
Connect IoT devices to Azure IoT Hub via MQTThttps://learn.microsoft.com/en-us/azure/iot-hub/tutorial-use-mqtt

Deployment

TopicURL
Perform proxy updates with Device Update for IoT Hubhttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-howto-proxy-updates
Deploy image-based Device Update on Raspberry Pihttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-raspberry-pi
Use regional failover mappings for Device Updatehttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-region-mapping
Deploy package-based Device Update with Ubuntu agenthttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-ubuntu-agent
Check OS and component support for Device Updatehttps://learn.microsoft.com/en-us/azure/iot-hub-device-update/support
Manually migrate Azure IoT Hub across regions or SKUshttps://learn.microsoft.com/en-us/azure/iot-hub/migrate-hub-arm
Migrate Azure IoT Hub using Azure CLI state commandshttps://learn.microsoft.com/en-us/azure/iot-hub/migrate-hub-state-cli
Schedule IoT Hub jobs for device groups using Azure CLIhttps://learn.microsoft.com/en-us/azure/iot-hub/schedule-jobs-cli
Perform manual failover for an Azure IoT hubhttps://learn.microsoft.com/en-us/azure/iot-hub/tutorial-manual-failover