Flex Consumption Function App fails to start: Access to the path '/home/site/wwwroot/host.json' is denied

2026-07-03T12:49:16.1866667+00:00

Hello,

I can't get a successfully deployed function to run on any of my Flex Consumption Function Apps. After every deploy, the app overview shows the same error:

System.Private.CoreLib: Access to the path '/home/site/wwwroot/host.json' is denied. Permission denied.

(Error details show: "Encountered an error (InternalServerError) from host runtime.")

Setup:

  • Two separate Function Apps tested, in two separate resource groups (one with an underscore in the name, one without) - same error on both.
  • Both: Flex Consumption plan, Node.js 22 LTS (Linux), region Germany West Central, v4 programming model (app.http() registration)

What I've already ruled out (each tested separately, error stayed identical every time):

  1. Missing storage permission: assigned the "Storage Blob Data Contributor" role on the linked storage account to my user (before deploying) - no difference.
  2. Possible broken app state from earlier failed deploy attempts: created a completely new Function App + new storage account - no difference.
  3. Remote build (Oryx) as the cause: deployed a fully locally-built package (node_modules already included, without --build-remote) instead of a remote build - no difference.
  4. Underscore in the resource group name: created a brand-new Function App in a resource group without an underscore - no difference.
  5. WEBSITE_RUN_FROM_PACKAGE as the cause: this setting doesn't exist by default on either app; set it to "1" as a test (even though docs say it's not supported for Flex Consumption) - no difference, removed it again afterward.
  6. Storage account key access: is enabled (not disabled).
  7. FUNCTIONS_WORKER_RUNTIME/FUNCTIONS_EXTENSION_VERSION as the cause: both are completely absent from the app's environment variables (only APPLICATIONINSIGHTS_CONNECTION_STRING, AzureWebJobsStorage, and DEPLOYMENT_STORAGE_CONNECTION_STRING are present). When I tried to set FUNCTIONS_WORKER_RUNTIME manually, the portal rejected the change with "The following app setting (...FUNCTIONS_WORKER_RUNTIME) for Flex Consumption sites is invalid" - so this apparently isn't configurable via app settings on Flex Consumption at all.

I deploy via Azure Cloud Shell using: az functionapp deployment source config-zip --src

Azure Functions
Azure Functions

An Azure service that provides an event-driven serverless compute platform.


1 answer

Sort by: Most helpful
  1. Christos Panagiotidis 3,546 Reputation points
    2026-07-15T10:38:50.1933333+00:00

    A 401 with no run-history entry means the request is being rejected before the trigger starts, most likely during SAS validation. ‘Any IP’ affects network access; it does not remove the required sp, sv, and sig parameters.

    Because the same URL works from Postman, the Logic App configuration is probably fine. Capture the exact URL and headers UKG sends and compare the raw request. Check for truncation at &, conversion to &, decoding of %2F in sp, a missing sig value, or an Authorization header added by the webhook client. A visually identical configured URL is not enough.

    Generate a fresh callback URL and enter it again in UKG. If UKG cannot preserve the query string exactly, place API Management in front as the stable webhook URL and have it call the full Logic App callback URL. This also gives you request tracing before the Logic App trigger.

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.