mirror of
https://github.com/anomalyco/opencode.git
synced 2026-10-26 07:40:03 +00:00
1312 lines
No EOL
38 KiB
JSON
1312 lines
No EOL
38 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$ref": "#/$defs/Config",
|
|
"$defs": {
|
|
"LogLevel": {
|
|
"type": "string",
|
|
"enum": [
|
|
"DEBUG",
|
|
"INFO",
|
|
"WARN",
|
|
"ERROR"
|
|
],
|
|
"description": "Log level"
|
|
},
|
|
"ServerConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"port": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Port to listen on"
|
|
},
|
|
"hostname": {
|
|
"type": "string",
|
|
"description": "Hostname to listen on"
|
|
},
|
|
"mdns": {
|
|
"type": "boolean",
|
|
"description": "Enable mDNS service discovery"
|
|
},
|
|
"mdnsDomain": {
|
|
"type": "string",
|
|
"description": "Custom domain name for mDNS service (default: opencode.local)"
|
|
},
|
|
"cors": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Additional domains to allow for CORS"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ConfigV2.Reference.Git": {
|
|
"type": "object",
|
|
"properties": {
|
|
"repository": {
|
|
"type": "string"
|
|
},
|
|
"branch": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"hidden": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"repository"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"ConfigV2.Reference.Local": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"hidden": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"PermissionActionConfig": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ask",
|
|
"allow",
|
|
"deny"
|
|
]
|
|
},
|
|
"PermissionObjectConfig": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/$defs/PermissionActionConfig"
|
|
}
|
|
},
|
|
"PermissionRuleConfig": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/PermissionActionConfig"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/PermissionObjectConfig"
|
|
}
|
|
]
|
|
},
|
|
"PermissionConfig": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/PermissionActionConfig"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"read": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
},
|
|
"edit": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
},
|
|
"glob": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
},
|
|
"grep": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
},
|
|
"list": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
},
|
|
"bash": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
},
|
|
"task": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
},
|
|
"external_directory": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
},
|
|
"todowrite": {
|
|
"$ref": "#/$defs/PermissionActionConfig"
|
|
},
|
|
"question": {
|
|
"$ref": "#/$defs/PermissionActionConfig"
|
|
},
|
|
"webfetch": {
|
|
"$ref": "#/$defs/PermissionActionConfig"
|
|
},
|
|
"websearch": {
|
|
"$ref": "#/$defs/PermissionActionConfig"
|
|
},
|
|
"lsp": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
},
|
|
"doom_loop": {
|
|
"$ref": "#/$defs/PermissionActionConfig"
|
|
},
|
|
"skill": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
}
|
|
},
|
|
"additionalProperties": {
|
|
"$ref": "#/$defs/PermissionRuleConfig"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"AgentConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"model": {
|
|
"type": "string",
|
|
"$ref": "https://models.dev/model-schema.json#/$defs/Model"
|
|
},
|
|
"variant": {
|
|
"type": "string",
|
|
"description": "Default model variant for this agent (applies only when using the agent's configured model)."
|
|
},
|
|
"temperature": {
|
|
"type": "number"
|
|
},
|
|
"top_p": {
|
|
"type": "number"
|
|
},
|
|
"prompt": {
|
|
"type": "string"
|
|
},
|
|
"tools": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
},
|
|
"description": "@deprecated Use 'permission' field instead"
|
|
},
|
|
"disable": {
|
|
"type": "boolean"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Description of when to use the agent"
|
|
},
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"subagent",
|
|
"primary",
|
|
"all"
|
|
]
|
|
},
|
|
"hidden": {
|
|
"type": "boolean",
|
|
"description": "Hide this subagent from the @ autocomplete menu (default: false, only applies to mode: subagent)"
|
|
},
|
|
"options": {
|
|
"type": "object"
|
|
},
|
|
"color": {
|
|
"anyOf": [
|
|
{
|
|
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"primary",
|
|
"secondary",
|
|
"accent",
|
|
"success",
|
|
"warning",
|
|
"error",
|
|
"info"
|
|
]
|
|
}
|
|
],
|
|
"description": "Hex color code (e.g., #FF5733) or theme color (e.g., primary)"
|
|
},
|
|
"steps": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Maximum number of agentic iterations before forcing text-only response"
|
|
},
|
|
"maxSteps": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "@deprecated Use 'steps' field instead."
|
|
},
|
|
"permission": {
|
|
"$ref": "#/$defs/PermissionConfig"
|
|
}
|
|
}
|
|
},
|
|
"ProviderConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"api": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"env": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"npm": {
|
|
"type": "string"
|
|
},
|
|
"whitelist": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"blacklist": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"options": {
|
|
"type": "object",
|
|
"properties": {
|
|
"apiKey": {
|
|
"type": "string"
|
|
},
|
|
"baseURL": {
|
|
"type": "string"
|
|
},
|
|
"enterpriseUrl": {
|
|
"type": "string",
|
|
"description": "GitHub Enterprise URL for copilot authentication"
|
|
},
|
|
"setCacheKey": {
|
|
"type": "boolean",
|
|
"description": "Enable promptCacheKey for this provider (default false)"
|
|
},
|
|
"timeout": {
|
|
"anyOf": [
|
|
{
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"enum": [
|
|
false
|
|
]
|
|
}
|
|
],
|
|
"description": "Timeout in milliseconds for full requests to this provider. Set to false to disable timeout."
|
|
},
|
|
"headerTimeout": {
|
|
"anyOf": [
|
|
{
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"enum": [
|
|
false
|
|
]
|
|
}
|
|
],
|
|
"description": "Timeout in milliseconds to wait for response headers (default: 300000). Set to false to disable timeout."
|
|
},
|
|
"chunkTimeout": {
|
|
"anyOf": [
|
|
{
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"enum": [
|
|
false
|
|
]
|
|
}
|
|
],
|
|
"description": "Timeout in milliseconds between streamed SSE chunks for this provider (default: 300000). If no chunk arrives within this window, the request is aborted. Set to false to disable timeout."
|
|
}
|
|
}
|
|
},
|
|
"models": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"family": {
|
|
"type": "string"
|
|
},
|
|
"release_date": {
|
|
"type": "string"
|
|
},
|
|
"attachment": {
|
|
"type": "boolean"
|
|
},
|
|
"reasoning": {
|
|
"type": "boolean"
|
|
},
|
|
"temperature": {
|
|
"type": "boolean"
|
|
},
|
|
"tool_call": {
|
|
"type": "boolean"
|
|
},
|
|
"interleaved": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"reasoning",
|
|
"reasoning_content",
|
|
"reasoning_text"
|
|
]
|
|
},
|
|
{
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"field": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"reasoning",
|
|
"reasoning_content",
|
|
"reasoning_text"
|
|
]
|
|
},
|
|
{
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"field"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"cost": {
|
|
"type": "object",
|
|
"properties": {
|
|
"input": {
|
|
"type": "number"
|
|
},
|
|
"output": {
|
|
"type": "number"
|
|
},
|
|
"cache_read": {
|
|
"type": "number"
|
|
},
|
|
"cache_write": {
|
|
"type": "number"
|
|
},
|
|
"context_over_200k": {
|
|
"type": "object",
|
|
"properties": {
|
|
"input": {
|
|
"type": "number"
|
|
},
|
|
"output": {
|
|
"type": "number"
|
|
},
|
|
"cache_read": {
|
|
"type": "number"
|
|
},
|
|
"cache_write": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"input",
|
|
"output"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": [
|
|
"input",
|
|
"output"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"limit": {
|
|
"type": "object",
|
|
"properties": {
|
|
"context": {
|
|
"type": "number"
|
|
},
|
|
"input": {
|
|
"type": "number"
|
|
},
|
|
"output": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"context",
|
|
"output"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"modalities": {
|
|
"type": "object",
|
|
"properties": {
|
|
"input": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"text",
|
|
"audio",
|
|
"image",
|
|
"video",
|
|
"pdf"
|
|
]
|
|
}
|
|
},
|
|
"output": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"text",
|
|
"audio",
|
|
"image",
|
|
"video",
|
|
"pdf"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"experimental": {
|
|
"type": "boolean"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"alpha",
|
|
"beta",
|
|
"deprecated",
|
|
"active"
|
|
]
|
|
},
|
|
"provider": {
|
|
"type": "object",
|
|
"properties": {
|
|
"npm": {
|
|
"type": "string"
|
|
},
|
|
"api": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"options": {
|
|
"type": "object"
|
|
},
|
|
"headers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"variants": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"disabled": {
|
|
"type": "boolean",
|
|
"description": "Disable this variant for the model"
|
|
}
|
|
}
|
|
},
|
|
"description": "Variant-specific configuration"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"McpLocalConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"local"
|
|
],
|
|
"description": "Type of MCP server connection"
|
|
},
|
|
"command": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Command and arguments to run the MCP server"
|
|
},
|
|
"cwd": {
|
|
"type": "string",
|
|
"description": "Working directory for the MCP server process. Relative paths resolve from the workspace directory."
|
|
},
|
|
"environment": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"description": "Environment variables to set when running the MCP server"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable or disable the MCP server on startup"
|
|
},
|
|
"timeout": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified."
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"command"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"McpOAuthConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"clientId": {
|
|
"type": "string",
|
|
"description": "OAuth client ID. If not provided, dynamic client registration (RFC 7591) will be attempted."
|
|
},
|
|
"clientSecret": {
|
|
"type": "string",
|
|
"description": "OAuth client secret (if required by the authorization server)"
|
|
},
|
|
"scope": {
|
|
"type": "string",
|
|
"description": "OAuth scopes to request during authorization"
|
|
},
|
|
"callbackPort": {
|
|
"minimum": 1,
|
|
"maximum": 65535,
|
|
"type": "integer",
|
|
"description": "Port for the local OAuth callback server (default: 19876). Shorthand for redirectUri when only the port needs changing. Ignored if redirectUri is set."
|
|
},
|
|
"redirectUri": {
|
|
"type": "string",
|
|
"description": "OAuth redirect URI (default: http://127.0.0.1:19876/mcp/oauth/callback)."
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"McpRemoteConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"remote"
|
|
],
|
|
"description": "Type of MCP server connection"
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"description": "URL of the remote MCP server"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable or disable the MCP server on startup"
|
|
},
|
|
"headers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"description": "Headers to send with the request"
|
|
},
|
|
"oauth": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/McpOAuthConfig"
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"enum": [
|
|
false
|
|
]
|
|
}
|
|
],
|
|
"description": "OAuth authentication configuration for the MCP server. Set to false to disable OAuth auto-detection."
|
|
},
|
|
"timeout": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified."
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"url"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"LayoutConfig": {
|
|
"type": "string",
|
|
"enum": [
|
|
"auto",
|
|
"stretch"
|
|
]
|
|
},
|
|
"ImageAttachmentConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"auto_resize": {
|
|
"type": "boolean",
|
|
"description": "Resize images before sending them to the model when they exceed configured limits (default: true)"
|
|
},
|
|
"max_width": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Maximum image width before resizing or rejecting the attachment (default: 2000)"
|
|
},
|
|
"max_height": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Maximum image height before resizing or rejecting the attachment (default: 2000)"
|
|
},
|
|
"max_base64_bytes": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Maximum base64 payload bytes for an image attachment (default: 5242880)"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"AttachmentConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"image": {
|
|
"$ref": "#/$defs/ImageAttachmentConfig",
|
|
"description": "Image attachment configuration"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"Policy.Effect": {
|
|
"type": "string",
|
|
"enum": [
|
|
"allow",
|
|
"deny"
|
|
]
|
|
},
|
|
"ConfigV2.Experimental.Policy": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"anyOf": [
|
|
{
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"provider.use"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"effect": {
|
|
"$ref": "#/$defs/Policy.Effect"
|
|
},
|
|
"resource": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"effect",
|
|
"resource"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"Config": {
|
|
"type": "object",
|
|
"properties": {
|
|
"$schema": {
|
|
"type": "string",
|
|
"description": "JSON schema reference for configuration validation"
|
|
},
|
|
"shell": {
|
|
"type": "string",
|
|
"description": "Default shell to use for terminal and bash tool"
|
|
},
|
|
"logLevel": {
|
|
"$ref": "#/$defs/LogLevel",
|
|
"description": "Log level"
|
|
},
|
|
"server": {
|
|
"$ref": "#/$defs/ServerConfig",
|
|
"description": "Server configuration for opencode serve and web commands"
|
|
},
|
|
"command": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"agent": {
|
|
"type": "string"
|
|
},
|
|
"model": {
|
|
"type": "string",
|
|
"$ref": "https://models.dev/model-schema.json#/$defs/Model"
|
|
},
|
|
"variant": {
|
|
"type": "string"
|
|
},
|
|
"subtask": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"description": "Command configuration, see https://opencode.ai/docs/commands"
|
|
},
|
|
"skills": {
|
|
"type": "object",
|
|
"properties": {
|
|
"paths": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Additional paths to skill folders"
|
|
},
|
|
"urls": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "URLs to fetch skills from (e.g., https://example.com/.well-known/skills/)"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Additional skill folder paths"
|
|
},
|
|
"references": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/ConfigV2.Reference.Git"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/ConfigV2.Reference.Local"
|
|
}
|
|
]
|
|
},
|
|
"description": "Named git or local directory references"
|
|
},
|
|
"reference": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/ConfigV2.Reference.Git"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/ConfigV2.Reference.Local"
|
|
}
|
|
]
|
|
},
|
|
"description": "@deprecated Use 'references' field instead. Named git or local directory references"
|
|
},
|
|
"watcher": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ignore": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"snapshot": {
|
|
"type": "boolean",
|
|
"description": "Enable or disable snapshot tracking. When false, filesystem snapshots are not recorded and undoing or reverting will not undo/redo file changes. Defaults to true."
|
|
},
|
|
"plugin": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"prefixItems": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "object"
|
|
}
|
|
],
|
|
"maxItems": 2,
|
|
"minItems": 2
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"share": {
|
|
"type": "string",
|
|
"enum": [
|
|
"manual",
|
|
"auto",
|
|
"disabled"
|
|
],
|
|
"description": "Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing"
|
|
},
|
|
"autoshare": {
|
|
"type": "boolean",
|
|
"description": "@deprecated Use 'share' field instead. Share newly created sessions automatically"
|
|
},
|
|
"autoupdate": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"notify"
|
|
]
|
|
}
|
|
],
|
|
"description": "Check for new versions and show an update notice. Updates are never installed automatically; run /update or `opencode upgrade`. Set to false to disable update checks. true and 'notify' behave the same"
|
|
},
|
|
"disabled_providers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Disable providers that are loaded automatically"
|
|
},
|
|
"enabled_providers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "When set, ONLY these providers will be enabled. All other providers will be ignored"
|
|
},
|
|
"model": {
|
|
"type": "string",
|
|
"description": "Model to use in the format of provider/model, eg anthropic/claude-2",
|
|
"$ref": "https://models.dev/model-schema.json#/$defs/Model"
|
|
},
|
|
"small_model": {
|
|
"type": "string",
|
|
"description": "Small model to use for tasks like title generation in the format of provider/model",
|
|
"$ref": "https://models.dev/model-schema.json#/$defs/Model"
|
|
},
|
|
"default_agent": {
|
|
"type": "string",
|
|
"description": "Default agent to use when none is specified. Must be a primary agent. Falls back to 'build' if not set or if the specified agent is invalid."
|
|
},
|
|
"subagent_depth": {
|
|
"minimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Maximum subagent nesting depth. Defaults to 1, which prevents subagents from launching subagents."
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"description": "Custom username to display in conversations instead of system username"
|
|
},
|
|
"mode": {
|
|
"type": "object",
|
|
"properties": {
|
|
"build": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
},
|
|
"plan": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
}
|
|
},
|
|
"additionalProperties": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
},
|
|
"description": "@deprecated Use `agent` field instead."
|
|
},
|
|
"agent": {
|
|
"type": "object",
|
|
"properties": {
|
|
"plan": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
},
|
|
"build": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
},
|
|
"general": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
},
|
|
"explore": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
},
|
|
"title": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
},
|
|
"summary": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
},
|
|
"compaction": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
}
|
|
},
|
|
"additionalProperties": {
|
|
"$ref": "#/$defs/AgentConfig"
|
|
},
|
|
"description": "Agent configuration, see https://opencode.ai/docs/agents"
|
|
},
|
|
"provider": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/$defs/ProviderConfig"
|
|
},
|
|
"description": "Custom provider configurations and model overrides"
|
|
},
|
|
"mcp": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"anyOf": [
|
|
{
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/McpLocalConfig"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/McpRemoteConfig"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"description": "MCP (Model Context Protocol) server configurations"
|
|
},
|
|
"formatter": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"disabled": {
|
|
"type": "boolean"
|
|
},
|
|
"command": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"environment": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extensions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
],
|
|
"description": "Enable or configure formatters. Omit or set to false to disable, true to enable built-ins, or an object to enable built-ins with overrides."
|
|
},
|
|
"lsp": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"disabled": {
|
|
"type": "boolean",
|
|
"enum": [
|
|
true
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"disabled"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"command": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extensions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"disabled": {
|
|
"type": "boolean"
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"initialization": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"command"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"description": "Enable or configure LSP servers. Omit or set to false to disable, true to enable built-ins, or an object to enable built-ins with overrides."
|
|
},
|
|
"instructions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Additional instruction files or patterns to include"
|
|
},
|
|
"layout": {
|
|
"$ref": "#/$defs/LayoutConfig",
|
|
"description": "@deprecated Always uses stretch layout."
|
|
},
|
|
"permission": {
|
|
"$ref": "#/$defs/PermissionConfig"
|
|
},
|
|
"tools": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"attachment": {
|
|
"$ref": "#/$defs/AttachmentConfig",
|
|
"description": "Attachment processing configuration, including image size limits and resizing behavior"
|
|
},
|
|
"enterprise": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "Enterprise URL"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"tool_output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"max_lines": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Maximum lines of tool output before it is truncated and saved to disk (default: 2000)"
|
|
},
|
|
"max_bytes": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Maximum bytes of tool output before it is truncated and saved to disk (default: 51200)"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Thresholds for truncating tool output. When output exceeds either limit, the full text is written to the truncation directory and a preview is returned."
|
|
},
|
|
"compaction": {
|
|
"type": "object",
|
|
"properties": {
|
|
"auto": {
|
|
"type": "boolean",
|
|
"description": "Enable automatic compaction when context is full (default: true)"
|
|
},
|
|
"prune": {
|
|
"type": "boolean",
|
|
"description": "Enable pruning of old tool outputs (default: false)"
|
|
},
|
|
"tail_turns": {
|
|
"minimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Maximum number of recent user turns, including their following assistant/tool responses, to keep verbatim during compaction. By default retention is limited only by the preserved token budget."
|
|
},
|
|
"preserve_recent_tokens": {
|
|
"minimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Maximum number of tokens from recent turns to preserve verbatim after compaction"
|
|
},
|
|
"reserved": {
|
|
"minimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Token buffer for compaction. Leaves enough window to avoid overflow during compaction."
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"experimental": {
|
|
"type": "object",
|
|
"properties": {
|
|
"disable_paste_summary": {
|
|
"type": "boolean"
|
|
},
|
|
"batch_tool": {
|
|
"type": "boolean",
|
|
"description": "Enable the batch tool"
|
|
},
|
|
"openTelemetry": {
|
|
"type": "boolean",
|
|
"description": "Enable OpenTelemetry spans for AI SDK calls (using the 'experimental_telemetry' flag)"
|
|
},
|
|
"primary_tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Tools that should only be available to primary agents."
|
|
},
|
|
"continue_loop_on_deny": {
|
|
"type": "boolean",
|
|
"description": "Continue the agent loop when a tool call is denied"
|
|
},
|
|
"mcp_timeout": {
|
|
"exclusiveMinimum": 0,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"description": "Timeout in milliseconds for model context protocol (MCP) requests"
|
|
},
|
|
"policies": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/ConfigV2.Experimental.Policy"
|
|
},
|
|
"description": "Policy statements applied to supported resources, such as provider access"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"allowComments": true,
|
|
"allowTrailingCommas": true
|
|
} |