diff --git a/python/samples/04-hosting/container/hyperlight_codeact/Dockerfile b/python/samples/04-hosting/container/hyperlight_codeact/Dockerfile index 218ba87b8ba..00faccb8ff7 100644 --- a/python/samples/04-hosting/container/hyperlight_codeact/Dockerfile +++ b/python/samples/04-hosting/container/hyperlight_codeact/Dockerfile @@ -7,6 +7,8 @@ # python/ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app # Copy the in-tree agent-framework packages we need. Order matters for editable diff --git a/python/samples/04-hosting/container/hyperlight_codeact/README.md b/python/samples/04-hosting/container/hyperlight_codeact/README.md index 44c9a53e918..7d6e8a04614 100644 --- a/python/samples/04-hosting/container/hyperlight_codeact/README.md +++ b/python/samples/04-hosting/container/hyperlight_codeact/README.md @@ -68,6 +68,12 @@ Follow the instructions in the [Running the Agent Host Locally](../../foundry-hosted-agents//README.md#running-the-agent-host-locally) section of the README in the Foundry Hosted Agent directory. +The image and hosted deployment definitions set `PYTHONNOUSERSITE=1`; see the +[Python startup configuration](../../foundry-hosted-agents/README.md#python-startup-configuration). +This controls Python user-site loading only and does not +change the hypervisor requirement or make this sample supported on the default +Foundry runtime. + ## Interacting with the agent Send a POST request to the server with a JSON body containing an `"input"` diff --git a/python/samples/04-hosting/container/hyperlight_codeact/agent.manifest.yaml b/python/samples/04-hosting/container/hyperlight_codeact/agent.manifest.yaml index 623c663291f..f04d901ed3f 100644 --- a/python/samples/04-hosting/container/hyperlight_codeact/agent.manifest.yaml +++ b/python/samples/04-hosting/container/hyperlight_codeact/agent.manifest.yaml @@ -16,6 +16,8 @@ template: - protocol: responses version: 1.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" resources: diff --git a/python/samples/04-hosting/container/hyperlight_codeact/agent.yaml b/python/samples/04-hosting/container/hyperlight_codeact/agent.yaml index 3355fb51abf..abf3faef905 100644 --- a/python/samples/04-hosting/container/hyperlight_codeact/agent.yaml +++ b/python/samples/04-hosting/container/hyperlight_codeact/agent.yaml @@ -19,5 +19,7 @@ resources: cpu: "1" memory: 2Gi environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: gpt-4.1-mini diff --git a/python/samples/04-hosting/foundry-hosted-agents/README.md b/python/samples/04-hosting/foundry-hosted-agents/README.md index 1c91b59bfea..f2721e7c83e 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/README.md +++ b/python/samples/04-hosting/foundry-hosted-agents/README.md @@ -5,6 +5,30 @@ This directory contains samples that demonstrate how to use hosted [Agent Framew > [IMPORTANT] Migrating from Protocol version 1.0.0 to 2.0.0: Foundry Hosting Agents service has been updated to use Protocol version 2.0.0. If your application is using Protocol version 1.0.0, please upgrade to Protocol version 2.0.0 in your `agent.manifest.yaml` or `agent.yaml` and upgrade to the latest `agent-framework-foundry-hosting` package. `agent-framework-foundry-hosting==1.0.0a260625` is the last version that supports Protocol version 1.0.0. > > The `agent-framework-foundry-hosting` Python API surface is intended to remain stable, but protocol 1.0.0 and 2.0.0 are incompatible. + +## Python startup configuration + +The deployment YAML files in these samples explicitly configure +`PYTHONNOUSERSITE` with the string value `"1"` before the remote Python +interpreter starts. Each Python Dockerfile also sets `ENV PYTHONNOUSERSITE=1` +so directly running an image without its YAML keeps the same startup setting. +The Telegram direct-code sample sets it in `azure.yaml` instead. + +This setting is configured by the customer in the sample deployment, not +automatically injected by Foundry or Agent Framework. It disables Python +user-site loading, not all code execution, and does not configure other +language runtimes. Existing deployments need a newly deployed agent version +to pick up the setting; editing a local YAML file does not update a running +version. + +Install dependencies in a virtual environment or the container image's +system site-packages, not with `pip install --user`. The samples' `pip` and +`uv` installation paths do not require user-site packages. + +Keep this setting in the deployment environment or Python Dockerfile, rather +than adding it to individual run commands. Setting `os.environ` or loading a +`.env` file from application code is too late for Python startup. + ## Samples ### Responses API diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/Dockerfile index eaffb94f198..e0c93a0ab5e 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/README.md b/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/README.md index 37283c6edce..578b6c12a31 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/README.md +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/README.md @@ -107,6 +107,9 @@ native workflow API is published. From `python/`, run: uv run --no-sync python samples/04-hosting/foundry-hosted-agents/invocations/basic/workflow.py ``` +For deployment environment settings, see the +[Python startup configuration](../../README.md#python-startup-configuration). + After that release, the script's PEP 723 metadata also supports `uv run --script --prerelease=allow workflow.py`. Do not change a `pyproject.toml` to install sample-only imports. This entrypoint does not read diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/agent.manifest.yaml index ac71182ab62..643cac9bcbe 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/agent.manifest.yaml @@ -15,6 +15,8 @@ template: - protocol: invocations version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" resources: diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/agent.yaml index b42a6df045a..db1f3d8fcf7 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/agent.yaml @@ -7,3 +7,6 @@ protocols: resources: cpu: "0.25" memory: "0.5Gi" +environment_variables: + - name: PYTHONNOUSERSITE + value: "1" diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/Dockerfile index eaffb94f198..e0c93a0ab5e 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/agent.manifest.yaml index ac71182ab62..643cac9bcbe 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/agent.manifest.yaml @@ -15,6 +15,8 @@ template: - protocol: invocations version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" resources: diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/agent.yaml index b42a6df045a..db1f3d8fcf7 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/agent.yaml @@ -7,3 +7,6 @@ protocols: resources: cpu: "0.25" memory: "0.5Gi" +environment_variables: + - name: PYTHONNOUSERSITE + value: "1" diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/telegram/azure.yaml b/python/samples/04-hosting/foundry-hosted-agents/invocations/telegram/azure.yaml index d5989239be9..e572952c896 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/telegram/azure.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/telegram/azure.yaml @@ -20,6 +20,8 @@ services: Telegram bot routed through API Management to an Agent Framework agent using the Foundry Invocations 2.0 protocol. environmentVariables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - name: AZURE_COSMOS_ENDPOINT diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/telegram/tests/test_infrastructure.py b/python/samples/04-hosting/foundry-hosted-agents/invocations/telegram/tests/test_infrastructure.py index ba3153605f8..bc18af66514 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/telegram/tests/test_infrastructure.py +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/telegram/tests/test_infrastructure.py @@ -22,6 +22,7 @@ def test_direct_code_invocations_2_configuration() -> None: "runtime": "python_3_13", } assert service["protocols"] == [{"protocol": "invocations", "version": "2.0.0"}] + assert {"name": "PYTHONNOUSERSITE", "value": "1"} in service["environmentVariables"] def test_dependencies_use_sample_local_pyproject() -> None: diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/Dockerfile index 0cc939d9b3a..75e65e952d4 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/agent.manifest.yaml index 5167dfcaef9..d8c0cd58afc 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/agent.manifest.yaml @@ -18,6 +18,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" - name: AZURE_SEARCH_ENDPOINT diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/agent.yaml index 7ffb60057c5..3b27a586335 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/azure_search_rag/agent.yaml @@ -8,6 +8,8 @@ resources: cpu: "0.25" memory: "0.5Gi" environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - name: AZURE_SEARCH_ENDPOINT diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/basic/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/basic/Dockerfile index eaffb94f198..e0c93a0ab5e 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/basic/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/basic/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/basic/README.md b/python/samples/04-hosting/foundry-hosted-agents/responses/basic/README.md index d9b46fcd7f0..6ba33391f7d 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/basic/README.md +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/basic/README.md @@ -23,6 +23,8 @@ downstream service ID. Run one entry point at a time. The deployment manifest targets `main.py`; select another script to deploy a different mode. Set `FOUNDRY_PROJECT_ENDPOINT` and `FOUNDRY_MODEL` in `.env`, then run `python main.py`. +For deployment environment configuration, see the +[Python startup configuration](../../README.md#python-startup-configuration). Follow the [parent hosting guide](../../README.md) for local and deployed setup. ## Outer response storage and background diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/basic/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/basic/agent.manifest.yaml index 9547802be6a..ea63bcc064f 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/basic/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/basic/agent.manifest.yaml @@ -15,6 +15,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" resources: diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/basic/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/basic/agent.yaml index 9408da5eb40..cfdcee9aed6 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/basic/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/basic/agent.yaml @@ -8,5 +8,7 @@ resources: cpu: "0.25" memory: "0.5Gi" environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/Dockerfile index 0cc939d9b3a..75e65e952d4 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/agent.manifest.yaml index a045ba5333e..77239958fae 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/agent.manifest.yaml @@ -15,6 +15,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" - name: AZURE_COSMOS_ENDPOINT diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/agent.yaml index 4f8a99e5d34..84246f6ed1a 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/custom_storage/agent.yaml @@ -8,6 +8,8 @@ resources: cpu: "0.25" memory: "0.5Gi" environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - name: AZURE_COSMOS_ENDPOINT diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/Dockerfile index 82316e2210b..74662ab3a92 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/Dockerfile @@ -6,6 +6,8 @@ FROM mcr.microsoft.com/dotnet/runtime:10.0 AS dotnet FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app # libicu is required by the .NET runtime for globalization support. diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/agent.manifest.yaml index 584120c871b..ff57ec0972d 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/agent.manifest.yaml @@ -17,6 +17,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" resources: diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/agent.yaml index 44ad3ede5b6..340cc05b933 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/declarative_customer_support/agent.yaml @@ -8,5 +8,7 @@ resources: cpu: '0.25' memory: '0.5Gi' environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/files/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/files/Dockerfile index eaffb94f198..e0c93a0ab5e 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/files/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/files/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/files/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/files/agent.manifest.yaml index 01576e0e7f2..ab4f471e967 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/files/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/files/agent.manifest.yaml @@ -15,6 +15,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" - name: TOOLBOX_NAME diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/files/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/files/agent.yaml index 816e6cc15f1..b7189c871a4 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/files/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/files/agent.yaml @@ -8,6 +8,8 @@ resources: cpu: "0.25" memory: "0.5Gi" environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - name: TOOLBOX_NAME diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/Dockerfile index 0cc939d9b3a..75e65e952d4 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/agent.manifest.yaml index 060e96adec7..0debe4ea604 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/agent.manifest.yaml @@ -18,6 +18,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" - name: MEMORY_STORE_NAME diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/agent.yaml index 53691375eee..80822778b66 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_memory/agent.yaml @@ -8,6 +8,8 @@ resources: cpu: "0.25" memory: "0.5Gi" environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - name: MEMORY_STORE_NAME diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/Dockerfile index 6a5bde6d263..eca43e28f91 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* WORKDIR /app diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/README.md b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/README.md index 78393322a1f..036887e84d7 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/README.md +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/README.md @@ -198,6 +198,9 @@ azd deploy --all azd ai agent run ``` +For deployment environment settings, see the +[Python startup configuration](../../README.md#python-startup-configuration). + The agent host will start on `http://localhost:8088`. #### Invoke the local agent diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/agent.manifest.yaml index 770bb0100ff..6fa0881dd4c 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/agent.manifest.yaml @@ -15,6 +15,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" - name: TOOLBOX_ENDPOINT diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/agent.yaml index 3711356799e..0b24c0a77dd 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox/agent.yaml @@ -7,6 +7,8 @@ resources: cpu: "0.25" memory: 0.5Gi environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - name: TOOLBOX_ENDPOINT diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/Dockerfile index 12c4791bc9f..cfa20f498d0 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* WORKDIR /app diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/agent.manifest.yaml index 148e7ad11fa..83ce4709c9b 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/agent.manifest.yaml @@ -27,6 +27,8 @@ template: cpu: "0.25" memory: 0.5Gi environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" - name: TOOLBOX_ENDPOINT diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/agent.yaml index 75d676ed187..76736ecf0ea 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/foundry_toolbox_mcp_skills/agent.yaml @@ -8,6 +8,8 @@ resources: cpu: "0.25" memory: 0.5Gi environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - name: TOOLBOX_ENDPOINT diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/Dockerfile index eaffb94f198..e0c93a0ab5e 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/agent.manifest.yaml index 70eae4a779f..c797d505173 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/agent.manifest.yaml @@ -15,6 +15,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" - name: GITHUB_PAT diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/agent.yaml index 5f9fb3d6add..3fc91eb2f7d 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/mcp/agent.yaml @@ -7,6 +7,8 @@ resources: cpu: "0.25" memory: 0.5Gi environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - name: GITHUB_PAT diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/Dockerfile index 514bc9a0d02..bd1e3b62837 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + # Bring in the `uv` binary from a pinned Astral image. Update this tag intentionally; # `latest` would make rebuilds non-deterministic. COPY --from=ghcr.io/astral-sh/uv:0.11.6 /uv /uvx /usr/local/bin/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/README.md b/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/README.md index 1d5751c7d6a..d1e6a2f0ebf 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/README.md +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/README.md @@ -77,6 +77,9 @@ the dependencies declared in the script: uv run --script --prerelease=allow main.py ``` +For deployment environment settings, see the +[Python startup configuration](../../README.md#python-startup-configuration). + Additional sample imports belong in inline script metadata, not a workspace, package or sample `pyproject.toml`. Before the coordinated hosting beta is published, use the current workspace's installed packages diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/agent.manifest.yaml index cf678721b52..4918a2801f0 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/agent.manifest.yaml @@ -16,6 +16,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" - name: ENABLE_INSTRUMENTATION diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/agent.yaml index 041f5a5745a..bf07346085c 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/monty_codeact/agent.yaml @@ -7,6 +7,8 @@ resources: cpu: "0.25" memory: 0.5Gi environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - name: ENABLE_INSTRUMENTATION diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/observability/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/observability/Dockerfile index eaffb94f198..e0c93a0ab5e 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/observability/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/observability/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/observability/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/observability/agent.manifest.yaml index 2d5f20c3d86..e5f14b948b4 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/observability/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/observability/agent.manifest.yaml @@ -15,6 +15,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" - name: ENABLE_SENSITIVE_DATA diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/observability/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/observability/agent.yaml index 6ce2a78704a..edda4f822c9 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/observability/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/observability/agent.yaml @@ -8,6 +8,8 @@ resources: cpu: "0.25" memory: "0.5Gi" environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - name: ENABLE_SENSITIVE_DATA diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/Dockerfile index eaffb94f198..e0c93a0ab5e 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/agent.manifest.yaml index 7502e04fc2f..a29d2795fe3 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/agent.manifest.yaml @@ -16,3 +16,6 @@ template: protocols: - protocol: responses version: 2.0.0 + environment_variables: + - name: PYTHONNOUSERSITE + value: "1" diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/agent.yaml index 09728900fe2..685a4cce3c0 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/resilient_long_running_workflow/agent.yaml @@ -7,3 +7,6 @@ protocols: resources: cpu: "0.25" memory: "0.5Gi" +environment_variables: + - name: PYTHONNOUSERSITE + value: "1" diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/Dockerfile index 0cc939d9b3a..75e65e952d4 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/agent.manifest.yaml index d9a59b8b978..17e2dff3bb1 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/agent.manifest.yaml @@ -17,6 +17,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" resources: diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/agent.yaml index eb5b5340403..da863470a53 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/steerable_long_running_agent/agent.yaml @@ -8,5 +8,7 @@ resources: cpu: "0.25" memory: "0.5Gi" environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/tools/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/tools/Dockerfile index eaffb94f198..e0c93a0ab5e 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/tools/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/tools/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/tools/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/tools/agent.manifest.yaml index 42840f80d34..f3f05109abf 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/tools/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/tools/agent.manifest.yaml @@ -15,6 +15,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" resources: diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/tools/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/tools/agent.yaml index 2a27cd4f002..4039a89d058 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/tools/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/tools/agent.yaml @@ -7,5 +7,7 @@ resources: cpu: "0.25" memory: 0.5Gi environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/Dockerfile b/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/Dockerfile index eaffb94f198..e0c93a0ab5e 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/Dockerfile +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.12-slim +ENV PYTHONNOUSERSITE=1 + WORKDIR /app COPY . user_agent/ diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/README.md b/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/README.md index 096980b8f58..cf895801b44 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/README.md +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/README.md @@ -31,6 +31,9 @@ uv run --no-sync python main.py uv run --no-sync python approval.py ``` +For deployment environment settings, see the +[Python startup configuration](../../README.md#python-startup-configuration). + Example typed request: ```bash diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/agent.manifest.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/agent.manifest.yaml index 6305ab4d792..028c8a97e39 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/agent.manifest.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/agent.manifest.yaml @@ -15,6 +15,8 @@ template: - protocol: responses version: 2.0.0 environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: "{{AZURE_AI_MODEL_DEPLOYMENT_NAME}}" resources: diff --git a/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/agent.yaml b/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/agent.yaml index db73258994b..941b65870bc 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/agent.yaml +++ b/python/samples/04-hosting/foundry-hosted-agents/responses/workflows/agent.yaml @@ -7,5 +7,7 @@ resources: cpu: "0.25" memory: 0.5Gi environment_variables: + - name: PYTHONNOUSERSITE + value: "1" - name: AZURE_AI_MODEL_DEPLOYMENT_NAME value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} diff --git a/skills/agent-framework-builder-python/references/hosting-and-deployment.md b/skills/agent-framework-builder-python/references/hosting-and-deployment.md index 480c09fc374..8b0dc4afb1e 100644 --- a/skills/agent-framework-builder-python/references/hosting-and-deployment.md +++ b/skills/agent-framework-builder-python/references/hosting-and-deployment.md @@ -35,6 +35,16 @@ Verify the entry point imports, required packages and external files are include and storage ownership are documented, request-owned resources are cleaned up, and no local credentials or caches enter the deployment package. +For Python Foundry hosted agents, configure `PYTHONNOUSERSITE=1` in the +deployment environment before Python starts, and in the Dockerfile for images +also launched without that deployment definition. Setting it inside application +code or a `.env` file loaded by Python is too late for startup. Install dependencies +in a virtual environment or image system site-packages, not with `pip install --user`. +This customer-configured setting disables Python user-site loading, not all +code execution or other language runtimes. Redeploy a new agent version to +apply it to existing deployments. See the +[maintained sample startup guidance](https://github.com/microsoft/agent-framework/tree/main/python/samples/04-hosting/foundry-hosted-agents#python-startup-configuration). + ## Deploy to Microsoft Foundry Foundry deployment commands, manifests, prerequisites, and injected configuration change independently from Agent