Advisory AI Assistant Parameters

Primary audience: platform operators & policy authors • Updated: 2026-01-13

This note centralises the tunable knobs that control Advisory AI’s planner, retrieval stack, inference clients, and guardrails. All options live under the AdvisoryAI configuration section and can be set via appsettings.* files or environment variables using ASP.NET Core’s double-underscore convention (ADVISORYAI__Inference__Mode, etc.). Chat quotas and tool allowlists can also be overridden per tenant/user via the chat settings endpoints; appsettings/env values are defaults.

Policy/version pin — For Sprint 0111, use the policy bundle hash shipped on 2025-11-19 (same drop as CLI-VULN-29-001 / CLI-VEX-30-001). Set AdvisoryAI:PolicyVersion or ADVISORYAI__POLICYVERSION=2025.11.19 in deployments; include the hash in DSSE metadata for Offline Kits.

AreaKey(s)Environment variableDefaultNotes
Inference modeAdvisoryAI:Inference:ModeADVISORYAI__INFERENCE__MODELocalLocal runs the deterministic pipeline only; Remote posts sanitized prompts to Remote.BaseAddress.
Remote base URIAdvisoryAI:Inference:Remote:BaseAddressADVISORYAI__INFERENCE__REMOTE__BASEADDRESSRequired when Mode=Remote. HTTPS strongly recommended.
Remote API keyAdvisoryAI:Inference:Remote:ApiKeyADVISORYAI__INFERENCE__REMOTE__APIKEYInjected as Authorization: Bearer <key> when present.
Remote timeoutAdvisoryAI:Inference:Remote:TimeoutSecondsADVISORYAI__INFERENCE__REMOTE__TIMEOUTSECONDS30Failing requests fail closed with inference failure metadata; production deployments must not return sanitized prompt output as fallback.
Chat inference providerAdvisoryAI:Chat:Inference:ProviderADVISORYAI__AdvisoryAI__Chat__Inference__Providerinhouse-ternaryProduction-like chat uses one configured provider and no fallback chain.
Chat inference base URLAdvisoryAI:Chat:Inference:BaseUrlADVISORYAI__AdvisoryAI__Chat__Inference__BaseUrlRequired for the in-house OpenAI-compatible model gateway.
Chat inference modelAdvisoryAI:Chat:Inference:ModelADVISORYAI__AdvisoryAI__Chat__Inference__Modelmicrosoft/bitnet-b1.58-2B-4TDefault setup example only; Stella Ops does not bundle model files. Must be listed by gateway GET /v1/models.
Chat inference model digestAdvisoryAI:Chat:Inference:ModelDigestADVISORYAI__AdvisoryAI__Chat__Inference__ModelDigestRequired when digest-match validation is enabled and required before production/release claims; recorded in audit/diagnostics.
Chat capability validationAdvisoryAI:Chat:Inference:CapabilityValidation:*ADVISORYAI__AdvisoryAI__Chat__Inference__CapabilityValidation__*enabledRequires chat.completions, response_format.json_object, citations.required, seed, and top_k by default.
Guardrail prompt capAdvisoryAI:Guardrails:MaxPromptLengthADVISORYAI__GUARDRAILS__MAXPROMPTLENGTH16000Prompts longer than the cap are blocked with prompt_too_long.
Guardrail citationsAdvisoryAI:Guardrails:RequireCitationsADVISORYAI__GUARDRAILS__REQUIRECITATIONStrueWhen true, at least one citation must accompany every prompt.
Guardrail phrase seedsAdvisoryAI:Guardrails:BlockedPhrases[]
AdvisoryAI:Guardrails:BlockedPhraseFile
ADVISORYAI__GUARDRAILS__BLOCKEDPHRASES__0
ADVISORYAI__GUARDRAILS__BLOCKEDPHRASEFILE
See defaults belowFile paths are resolved relative to the content root; phrases are merged, de-duped, and lower-cased.
Chat request quotaAdvisoryAI:Chat:Quotas:RequestsPerMinuteADVISORYAI__CHAT__QUOTAS__REQUESTSPERMINUTE60Requests per minute per user/org.
Chat daily request quotaAdvisoryAI:Chat:Quotas:RequestsPerDayADVISORYAI__CHAT__QUOTAS__REQUESTSPERDAY500Requests per day per user/org.
Chat token budgetAdvisoryAI:Chat:Quotas:TokensPerDayADVISORYAI__CHAT__QUOTAS__TOKENSPERDAY100000Tokens per day per user/org.
Chat tool budgetAdvisoryAI:Chat:Quotas:ToolCallsPerDayADVISORYAI__CHAT__QUOTAS__TOOLCALLSPERDAY10000Tool calls per day per user/org.
Guardrail scrubber entropyAdvisoryAI:Guardrails:EntropyThresholdADVISORYAI__GUARDRAILS__ENTROPYTHRESHOLD3.5Entropy threshold for high-risk token redaction.
Guardrail scrubber min lengthAdvisoryAI:Guardrails:EntropyMinLengthADVISORYAI__GUARDRAILS__ENTROPYMINLENGTH20Minimum token length for entropy checks.
Guardrail scrubber allowlist fileAdvisoryAI:Guardrails:AllowlistFileADVISORYAI__GUARDRAILS__ALLOWLISTFILEdata/advisory-ai/allowlist.txtAllowlisted patterns bypass redaction.
Guardrail scrubber allowlist patternsAdvisoryAI:Guardrails:AllowlistPatternsADVISORYAI__GUARDRAILS__ALLOWLISTPATTERNS__0See defaultsAdditional allowlist patterns appended to defaults.
Chat tools allow allAdvisoryAI:Chat:Tools:AllowAllADVISORYAI__CHAT__TOOLS__ALLOWALLtrueWhen true, allow all tools with enabled providers.
Chat tool allowlistAdvisoryAI:Chat:Tools:AllowedToolsADVISORYAI__CHAT__TOOLS__ALLOWEDTOOLS__0See defaultsAllowed tools when AllowAll=false.
Chat audit enabledAdvisoryAI:Chat:Audit:EnabledADVISORYAI__CHAT__AUDIT__ENABLEDtrueToggles chat audit persistence.
Chat audit connection stringAdvisoryAI:Chat:Audit:ConnectionStringADVISORYAI__CHAT__AUDIT__CONNECTIONSTRINGPostgres connection string for chat audit logs.
Chat audit schemaAdvisoryAI:Chat:Audit:SchemaNameADVISORYAI__CHAT__AUDIT__SCHEMANAMEadvisoryaiSchema for chat audit tables.
Chat audit evidence bundleAdvisoryAI:Chat:Audit:IncludeEvidenceBundleADVISORYAI__CHAT__AUDIT__INCLUDEEVIDENCEBUNDLEfalseStore full evidence bundle JSON in audit log.
Chat audit retentionAdvisoryAI:Chat:Audit:RetentionPeriodADVISORYAI__CHAT__AUDIT__RETENTIONPERIOD90.00:00:00Retention period for audit logs.
Chat action policy allowAdvisoryAI:Chat:Actions:RequirePolicyAllowADVISORYAI__CHAT__ACTIONS__REQUIREPOLICYALLOWtrueRequire policy lattice approval before actions.
Plan cache TTLAdvisoryAI:PlanCache:DefaultTimeToLive*ADVISORYAI__PLANCACHE__DEFAULTTIMETOLIVE00:10:00Controls how long cached plans are reused. (CleanupInterval defaults to 00:05:00).
Queue capacityAdvisoryAI:Queue:CapacityADVISORYAI__QUEUE__CAPACITY1024Upper bound on in-memory tasks when using the default queue.
Queue wait intervalAdvisoryAI:Queue:DequeueWaitIntervalADVISORYAI__QUEUE__DEQUEUEWAITINTERVAL00:00:01Back-off between queue polls when empty.

* The plan-cache section is bound via AddOptions<AdvisoryPlanCacheOptions>(); override by adding an AdvisoryAI__PlanCache block to the host configuration.

For the advisory-ai-web container, environment variables carry the host prefix and then the configuration section name. For example, set ADVISORYAI__AdvisoryAI__Chat__Inference__BaseUrl, not only ADVISORYAI__Chat__Inference__BaseUrl.


1. Inference knobs & “temperature”

Advisory AI supports two inference modes:

Remote inference quick sample

{
  "AdvisoryAI": {
    "Inference": {
      "Mode": "Remote",
      "Remote": {
        "BaseAddress": "https://inference.internal",
        "Endpoint": "/v1/inference",
        "ApiKey": "${ADVISORYAI_REMOTE_KEY}",
        "TimeoutSeconds": 45
      }
    }
  }
}

2. Guardrail configuration

SettingDefaultExplanation
MaxPromptLength16000 charsUpper bound enforced after redaction. Increase cautiously—remote providers typically cap prompts at 32k tokens.
RequireCitationstrueForces each prompt to include at least one citation. Disable only when testing synthetic prompts.
BlockedPhrases[]ignore previous instructions, disregard earlier instructions, you are now the system, override the system prompt, please jailbreakInline list merged with the optional file. Comparisons are case-insensitive.
BlockedPhraseFilePoints to a newline-delimited list. Relative paths resolve against the content root (AdvisoryAI.Hosting sticks to AppContext base).
EntropyThreshold3.5Shannon entropy threshold for high-risk token redaction. Set to 0 to disable entropy checks.
EntropyMinLength20Minimum token length evaluated by the entropy scrubber.
AllowlistPatternsDefaults (sha256/sha1/sha384/sha512)Regex patterns that bypass entropy redaction for known-safe identifiers.
AllowlistFileOptional allowlist file (JSON array or newline-delimited). Paths resolve against the content root.

Violations surface in the response metadata (guardrail.violations[*]) and increment advisory_ai_guardrail_blocks_total. Console consumes the same payload for its ribbon state.

2.1 Tool policy lattice (chat)

Chat tool calls are allowed only when policy rules permit. Scope is evaluated on tenant, role, tool name, and resource. For the full rule schema and default scope mapping, see the Assistant tool lattice policy mapping.

Example (pseudo):

allow_tool("vex.query") if role in ["analyst"] and namespace in ["team-a"]
deny_tool("vault.secrets.get") always

3. Retrieval & ranking weights (per-task)

Each task type (Summary, Conflict, Remediation) inherits the defaults below. Override any value via AdvisoryAI:Tasks:<TaskType>:<Property>.

TaskStructuredMaxChunksVectorTopKVectorQueries (default)SbomMaxTimelineEntriesSbomMaxDependencyPathsIncludeBlastRadius
Summary255Summarize key facts, What is impacted?1020
Conflict306Highlight conflicting statements, Where do sources disagree?815
Remediation356Provide remediation steps, Outline mitigations and fixes1225

These knobs act as weighting levers: lower VectorTopK emphasises deterministic evidence; higher values favor breadth. StructuredMaxChunks bounds how many CSAF/OSV/VEX chunks reach the prompt, keeping token budgets predictable.

4. Token budgets

AdvisoryTaskBudget holds PromptTokens and CompletionTokens per task. Defaults:

TaskPrompt tokensCompletion tokens
Summary2 048512
Conflict2 048512
Remediation2 048640

Overwrite via AdvisoryAI:Tasks:Summary:Budget:PromptTokens, etc. The worker records actual consumption in the response metadata (inference.prompt_tokens, inference.completion_tokens).

5. Cache TTLs & queue directories

Example: raised TTL & custom queue path

{
  "AdvisoryAI": {
    "PlanCache": {
      "DefaultTimeToLive": "00:20:00",
      "CleanupInterval": "00:05:00"
    },
    "Queue": {
      "DirectoryPath": "/var/lib/advisory-ai/queue"
    }
  }
}

6. Operational notes