Hello Leo,
Thank you for reaching out to the Microsoft Q&A community. The behavior you are encountering is expected.
The root cause of this issue is that the Azure Functions host resolves and downloads extension bundles from the live Azure Functions CDN feed, not directly from the GitHub releases page. Even if a release tag (like v4.35.0) is cut in the GitHub repository, it may not be immediately published to the live extension bundle feed that the Functions runtime utilizes, or it might be treated as an unreleased/preview version.
When you configure your host.json with a tight version interval like [4.33.0, 4.36.0) or [4.35.0, 4.36.0), the runtime expects to find a published bundle on the CDN that satisfies that minimum requirement. Since those specific micro-versions haven't been published to the live feed, the runtime fails to find a valid package and throws the "Extension bundle not found" error.
According to the official Microsoft documentation on Azure Functions Extension Bundles:
"The version range of the bundle to install. The Azure Functions runtime always chooses the maximum permissible version that the version range or interval defines."
To ensure maximum compatibility and avoid manual pinning issues, the documentation states:
"For optimal supportability and reliability, you should upgrade to bundle version 4.x... By default, extension bundles are defined via version ranges, which guarantees that the latest minor bundle version is used."
Why [4.32.0, 4.36.0) works without issue: Here is exactly why [4.32.0, 4.36.0) works, while ranges starting with higher micro-versions fail:
- How the logic works: When you define a range, the Functions host queries the live CDN for all available published bundles and selects the highest available version that satisfies your mathematical interval.
- Why
[4.32.0, 4.36.0) succeeds: The square bracket [ means inclusive. So, this range tells the host: "Find me the highest bundle on the CDN that is greater than or equal to 4.32.0, but strictly less than 4.36.0." Because 4.32.0 is currently published and live on the CDN, it satisfies the minimum boundary of your range. The host successfully pulls 4.32.0 and starts up.
- Why
[4.33.0, 4.36.0) or [4.35.0, ...) fails: This tells the host: "Find me a bundle on the CDN that is greater than or equal to 4.33.0 (or 4.35.0)." Because the highest version currently published on the CDN is 4.32.0, there is no package available that meets your minimum requirement, causing the resolution to fail.
Essentially, your [4.32.0, 4.36.0) range is succeeding because it is happily falling back to the 4.32.0 bundle.
Resolution: To resolve this issue and keep your application stable without breaking when new GitHub tags are made, it is highly recommended to use the standard 4.x version range. Please update your host.json to the following:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
Using this notation instructs the Functions host to automatically fetch the highest verified and available 4.x bundle from the CDN.
Hope this helps! Let us know in comments if you have any follow-up questions.
Note: This response is drafted with the help of AI systems.