Table of Contents

Registry Keys

WindowSill's standalone installer supports centralized configuration via Windows Registry. All settings are stored under HKLM\SOFTWARE\WindowSill\ and apply machine-wide.

Registry keys take the highest priority in the settings hierarchy, overriding both parent and sub-organization dashboard settings. This enables device-specific configurations or air-gapped deployments. For the complete settings hierarchy, see Organizations.

Note

Registry-based configuration is only available with the Standalone Installer (WindowSill Pro). The Microsoft Store version does not support registry policies.


Quick Reference

Category Keys
Core Settings AllowedExtensions, DeviceToken, UserEmail
Privacy & Security ScreenRecordingProtection, AnonymousUsageTelemetry
AI Providers Anthropic, Azure OpenAI, Google, OpenAI, OpenRouter, xAI
Local AI Foundry Local, Ollama

Data Formats

Most registry values are stored as REG_SZ (string) types. Complex values use JSON encoding:

Format Description Example
String Plain text my-api-key-123
String as JSON JSON-encoded string "my-api-key-123"
String[] as JSON JSON array of strings ["model-a","model-b"]
Boolean as JSON JSON boolean true or false

Core Settings

AllowedExtensions

Controls which extensions WindowSill can load.

Property Value
Path HKLM\SOFTWARE\WindowSill\AllowedExtensions
Type REG_SZ
Format Semicolon-separated Package IDs

Behavior:

  • Not set: All extensions allowed (default)
  • Empty string: No extensions allowed
  • Package ID list: Only listed extensions allowed

Example:

WindowSill.MediaControl;WindowSill.ClipboardHistory
Tip

Find Package IDs on extension detail pages or by extracting the .nuspec file from a .wsext package.


DeviceToken

Enables silent authentication by linking installations to your organization.

Property Value
Path HKLM\SOFTWARE\WindowSill\DeviceToken
Type REG_SZ
Format Plain string

Generate tokens in the WindowSill Dashboard. See Installation Guide for detailed usage.


UserEmail

Specifies the user's email address for device token authentication.

Property Value
Path HKLM\SOFTWARE\WindowSill\UserEmail
Type REG_SZ
Format Plain string

Example:

john.doe@contoso.com

General Settings

CheckUpdateAutomatically

Allow or forbid WindowSill to automatically check for updates and let the user know when an update is available. Updates are not installed automatically. Users need to navigate to settings to update the app. Updates need administrator right on the computer. It is recommend to disable this setting if users are not administrator of their machines. Set the value to true to allow WindowSill to automatically check for updates.

Property Value
Path HKLM\SOFTWARE\WindowSill\WindowSill.CheckUpdateAutomatically
Type REG_SZ
Format Boolean as JSON

Example:

true

Privacy & Security Settings

ScreenRecordingProtection

Prevents screen recording and screenshot tools from capturing WindowSill content.

Property Value
Path HKLM\SOFTWARE\WindowSill\WindowSill.ScreenRecordingProtection
Type REG_SZ
Format Boolean as JSON

Example:

true

AnonymousUsageTelemetry

Controls whether anonymous usage & health telemetry is sent online to improve WindowSill.

Property Value
Path HKLM\SOFTWARE\WindowSill\WindowSill.AnonymousUsageTelemetry
Type REG_SZ
Format Boolean as JSON

Example:

false

AI Provider Settings

WindowSill supports multiple AI providers. Each provider has three configurable settings:

Setting Type Purpose
ApiKey Authentication key for the provider
DefaultModel Model used when user hasn't selected one
AllowedModels Restricts which models users can select
Note

When AllowedModels is set, users can only choose from the specified models. If not set, all available models for that provider are shown.


Anthropic

Setting Path Format
API Key HKLM\SOFTWARE\WindowSill\AnthropicSettings.AnthropicApiKey String as JSON
Default Model HKLM\SOFTWARE\WindowSill\AnthropicSettings.AnthropicDefaultModel String as JSON
Allowed Models HKLM\SOFTWARE\WindowSill\AnthropicSettings.AnthropicAllowedModels String[] as JSON

Example values:

AnthropicApiKey: "sk-ant-api03-..."
AnthropicDefaultModel: "claude-sonnet-4-20250514"
AnthropicAllowedModels: ["claude-sonnet-4-20250514","claude-3-5-haiku-20241022"]

Azure OpenAI

Setting Path Format
Endpoint HKLM\SOFTWARE\WindowSill\AzureOpenAISettings.AzureOpenAIEndpoint String as JSON
API Key HKLM\SOFTWARE\WindowSill\AzureOpenAISettings.AzureOpenAIApiKey String as JSON
Default Model HKLM\SOFTWARE\WindowSill\AzureOpenAISettings.AzureOpenAIDefaultModel String as JSON
Allowed Models HKLM\SOFTWARE\WindowSill\AzureOpenAISettings.AzureOpenAIAllowedModels String[] as JSON

Example values:

AzureOpenAIEndpoint: "https://contoso.openai.azure.com/"
AzureOpenAIApiKey: "abc123..."
AzureOpenAIDefaultModel: "gpt-4o"
AzureOpenAIAllowedModels: ["gpt-4o","gpt-4o-mini"]

Google

Setting Path Format
API Key HKLM\SOFTWARE\WindowSill\GoogleSettings.GoogleApiKey String as JSON
Default Model HKLM\SOFTWARE\WindowSill\GoogleSettings.GoogleDefaultModel String as JSON
Allowed Models HKLM\SOFTWARE\WindowSill\GoogleSettings.GoogleAllowedModels String[] as JSON

Example values:

GoogleApiKey: "AIza..."
GoogleDefaultModel: "gemini-2.0-flash"
GoogleAllowedModels: ["gemini-2.0-flash","gemini-1.5-pro"]

OpenAI

Setting Path Format
API Key HKLM\SOFTWARE\WindowSill\OpenAISettings.OpenAIApiKey String as JSON
Default Model HKLM\SOFTWARE\WindowSill\OpenAISettings.OpenAIDefaultModel String as JSON
Allowed Models HKLM\SOFTWARE\WindowSill\OpenAISettings.OpenAIAllowedModels String[] as JSON

Example values:

OpenAIApiKey: "sk-proj-..."
OpenAIDefaultModel: "gpt-4o"
OpenAIAllowedModels: ["gpt-4o","gpt-4o-mini","o1-preview"]

OpenRouter

Setting Path Format
API Key HKLM\SOFTWARE\WindowSill\OpenRouterSettings.OpenRouterApiKey String as JSON
Default Model HKLM\SOFTWARE\WindowSill\OpenRouterSettings.OpenRouterDefaultModel String as JSON
Allowed Models HKLM\SOFTWARE\WindowSill\OpenRouterSettings.OpenRouterAllowedModels String[] as JSON

Example values:

OpenRouterApiKey: "sk-or-..."
OpenRouterDefaultModel: "anthropic/claude-sonnet-4"
OpenRouterAllowedModels: ["anthropic/claude-sonnet-4","openai/gpt-4o"]

xAI

Setting Path Format
API Key HKLM\SOFTWARE\WindowSill\XAISettings.XAIApiKey String as JSON
Default Model HKLM\SOFTWARE\WindowSill\XAISettings.XAIDefaultModel String as JSON
Allowed Models HKLM\SOFTWARE\WindowSill\XAISettings.XAIAllowedModels String[] as JSON

Example values:

XAIApiKey: "xai-..."
XAIDefaultModel: "grok-2"
XAIAllowedModels: ["grok-2","grok-2-mini"]

Local AI Settings

For organizations running local AI infrastructure, WindowSill supports Foundry Local and Ollama.


Foundry Local

Setting Path Format
Default Model HKLM\SOFTWARE\WindowSill\FoundryLocalSettings.DefaultModel String as JSON
Allowed Models HKLM\SOFTWARE\WindowSill\FoundryLocalSettings.FoundryLocalAllowedModels String[] as JSON

Example values:

DefaultModel: "phi-4"
FoundryLocalAllowedModels: ["phi-4","phi-3.5-mini"]

Ollama

Setting Path Format
Endpoint HKLM\SOFTWARE\WindowSill\OllamaSettings.Endpoint String as JSON
Default Model HKLM\SOFTWARE\WindowSill\OllamaSettings.DefaultModel String as JSON
Allowed Models HKLM\SOFTWARE\WindowSill\OllamaSettings.OllamaAllowedModels String[] as JSON

Example values:

Endpoint: "http://localhost:11434"
DefaultModel: "gpt-oss:20b"
OllamaAllowedModels: ["gpt-oss:20b","deepseek-r1:8b","qwen3:8b"]

Deployment Examples

PowerShell: Configure API Keys

# Set OpenAI API key for all users
$regPath = "HKLM:\SOFTWARE\WindowSill"
New-Item -Path $regPath -Force | Out-Null
Set-ItemProperty -Path $regPath -Name "OpenAISettings.OpenAIApiKey" -Value '"sk-proj-your-key-here"'
Set-ItemProperty -Path $regPath -Name "OpenAISettings.OpenAIDefaultModel" -Value '"gpt-4o"'

PowerShell: Restrict Extensions

$regPath = "HKLM:\SOFTWARE\WindowSill"
Set-ItemProperty -Path $regPath -Name "AllowedExtensions" -Value "WindowSill.MediaControl;WindowSill.ClipboardHistory"

PowerShell: Enable Privacy Protection

$regPath = "HKLM:\SOFTWARE\WindowSill"
Set-ItemProperty -Path $regPath -Name "WindowSill.ScreenRecordingProtection" -Value "true"
Set-ItemProperty -Path $regPath -Name "WindowSill.AnonymousUsageTelemetry" -Value "false"