-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration Reference
Holger Imbery edited this page Feb 19, 2026
·
1 revision
All configuration can be provided via:
-
appsettings.json(defaults, non-sensitive values only) -
appsettings.Production.json(environment-specific overrides) - Environment variables (recommended for secrets — override any JSON key)
-
dotnet user-secrets(recommended for local development)
Environment variable names map JSON hierarchy with __ as separator, e.g. AzureAd:TenantId → AZUREAD__TENANTID.
Never store secrets (API keys, Direct Line secrets, client secrets) in
appsettings.jsonor source control.
{
"Authentication": {
"Enabled": false,
"SessionTimeoutMinutes": 60,
"RequireHttpsMetadata": true
},
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "<from env>",
"ClientId": "<from env>",
"ClientSecret": "<from env>",
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-callback-oidc"
}
}| Key | Default | Description |
|---|---|---|
Authentication:Enabled |
false |
Set to true to require Entra ID sign-in |
Authentication:SessionTimeoutMinutes |
60 |
Sliding session expiry |
AzureAd:TenantId |
— | Directory (tenant) ID from Entra ID app registration |
AzureAd:ClientId |
— | Application (client) ID |
AzureAd:ClientSecret |
— | Client secret value (use env var) |
Environment variables:
AUTHENTICATION__ENABLED=true
AZUREAD__TENANTID=<tenant-id>
AZUREAD__CLIENTID=<client-id>
AZUREAD__CLIENTSECRET=<client-secret>
{
"DirectLine": {
"Secret": "",
"BotId": "",
"UseWebSocket": true,
"ReplyTimeoutSeconds": 30,
"MaxRetries": 2,
"BackoffSeconds": 4
}
}| Key | Default | Description |
|---|---|---|
DirectLine:Secret |
— | Web Channel security secret (use env var) |
DirectLine:BotId |
— | Copilot Studio bot identifier |
DirectLine:UseWebSocket |
true |
true = WebSocket, false = polling |
DirectLine:ReplyTimeoutSeconds |
30 |
Max wait for bot reply |
DirectLine:MaxRetries |
2 |
Retry attempts on failure |
DirectLine:BackoffSeconds |
4 |
Backoff delay between retries |
Per-agent overrides take precedence over these global defaults. See Agent Configuration.
{
"Judge": {
"Provider": "AzureAIFoundry",
"Endpoint": "",
"ApiKey": "",
"Model": "gpt-4o-mini",
"Temperature": 0.2,
"TopP": 0.9,
"MaxOutputTokens": 800
}
}| Key | Default | Description |
|---|---|---|
Judge:Provider |
AzureAIFoundry |
AzureAIFoundry or OpenAICompatible
|
Judge:Endpoint |
— | Endpoint URL (use env var) |
Judge:ApiKey |
— | API key (use env var) |
Judge:Model |
gpt-4o-mini |
Deployment/model name |
Judge:Temperature |
0.2 |
LLM temperature (0 = precise, 2 = varied) |
Judge:TopP |
0.9 |
Nucleus sampling threshold |
Judge:MaxOutputTokens |
800 |
Maximum tokens in judge response |
{
"Execution": {
"MaxConcurrency": 5,
"RateLimitPerMinute": 50,
"Retries": 2,
"BackoffSeconds": 4
}
}| Key | Default | Description |
|---|---|---|
Execution:MaxConcurrency |
5 |
Max simultaneous test executions per agent |
Execution:RateLimitPerMinute |
50 |
Max Direct Line requests per minute |
Execution:Retries |
2 |
Retry failed test cases |
Execution:BackoffSeconds |
4 |
Backoff delay between retries |
{
"Storage": {
"SqlitePath": "./data/app.db",
"LuceneIndexPath": "./data/index",
"DocumentUploadPath": "./data/uploads"
}
}| Key | Default | Description |
|---|---|---|
Storage:SqlitePath |
./data/app.db |
SQLite database file path |
Storage:LuceneIndexPath |
./data/index |
Lucene.NET index directory |
Storage:DocumentUploadPath |
./data/uploads |
Uploaded document storage directory |
{
"QuestionGeneration": {
"Endpoint": "",
"ApiKey": "",
"Model": "gpt-4o-mini"
}
}| Key | Default | Description |
|---|---|---|
QuestionGeneration:Endpoint |
— | Azure OpenAI endpoint for question generation |
QuestionGeneration:ApiKey |
— | API key (use env var) |
QuestionGeneration:Model |
gpt-4o-mini |
Deployment name |
cd CopilotStudioTestRunner.WebUI
dotnet user-secrets set "AzureAd:TenantId" "<tenant-id>"
dotnet user-secrets set "AzureAd:ClientId" "<client-id>"
dotnet user-secrets set "AzureAd:ClientSecret" "<client-secret>"
dotnet user-secrets set "Authentication:Enabled" "true"
dotnet user-secrets set "Judge:Endpoint" "https://your-resource.openai.azure.com/"
dotnet user-secrets set "Judge:ApiKey" "<api-key>"| Environment Variable | Config Key |
|---|---|
AUTHENTICATION__ENABLED |
Authentication:Enabled |
AZUREAD__TENANTID |
AzureAd:TenantId |
AZUREAD__CLIENTID |
AzureAd:ClientId |
AZUREAD__CLIENTSECRET |
AzureAd:ClientSecret |
DIRECTLINE__SECRET |
DirectLine:Secret |
DIRECTLINE__BOTID |
DirectLine:BotId |
JUDGE__ENDPOINT |
Judge:Endpoint |
JUDGE__APIKEY |
Judge:ApiKey |
JUDGE__MODEL |
Judge:Model |
STORAGE__SQLITEPATH |
Storage:SqlitePath |
QUESTIONGENERATION__ENDPOINT |
QuestionGeneration:Endpoint |
QUESTIONGENERATION__APIKEY |
QuestionGeneration:ApiKey |