Skip to content

Configuration Reference

Holger Imbery edited this page Feb 19, 2026 · 1 revision

Configuration Reference

All configuration can be provided via:

  1. appsettings.json (defaults, non-sensitive values only)
  2. appsettings.Production.json (environment-specific overrides)
  3. Environment variables (recommended for secrets — override any JSON key)
  4. dotnet user-secrets (recommended for local development)

Environment variable names map JSON hierarchy with __ as separator, e.g. AzureAd:TenantIdAZUREAD__TENANTID.

Never store secrets (API keys, Direct Line secrets, client secrets) in appsettings.json or source control.


Authentication

{
  "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>

Direct Line (Global Default)

{
  "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 Evaluation (Global Default)

{
  "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

{
  "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

{
  "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

Question Generation (Global Default)

{
  "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

Local Dev with dotnet user-secrets

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>"

Full Environment Variable Reference

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

Clone this wiki locally