vtcode 0.108.2

A Rust-based terminal coding agent with modular architecture supporting multiple LLM providers
# VT Code Configuration File
# Saved from /config with readable section headings.
# Every field includes descriptions, defaults, and known choices where available.

# User-defined OpenAI-compatible provider endpoints. These entries are editable in `/config` and
# appear in the model picker using each entry's `display_name`.
# Default: []
# Type: `array`
[[custom_providers]]
api_key_env = "ATLASCLOUD_API_KEY"
base_url = "https://api.atlascloud.ai/v1"
display_name = "Atlas Cloud"
model = "deepseek-ai/deepseek-v4-flash"
models = [
    "deepseek-ai/deepseek-v4-flash",
    "deepseek-ai/deepseek-v4-pro",
    "deepseek-ai/DeepSeek-V3-0324",
    "deepseek-ai/DeepSeek-V3.1",
    "deepseek-ai/deepseek-v3.2",
    "deepseek-ai/deepseek-r1-0528",
    "qwen/qwen3.6-35b-a3b",
    "qwen/qwen3.6-plus",
    "qwen/qwen3.5-122b-a10b",
    "qwen/qwen3-coder-next",
    "moonshotai/kimi-k2.6",
    "moonshotai/kimi-k2.5",
    "zai-org/glm-5.1",
    "zai-org/glm-5-turbo",
    "minimaxai/minimax-m2.7",
    "minimaxai/minimax-m2.5",
    "kwaipilot/kat-coder-pro-v2",
]
name = "atlascloud"

# ACP Bridge
# IDE and Agent Client Protocol integrations.
[acp]
# Globally enable the ACP bridge
# Default: false
# Type: `boolean`
enabled = true

# Zed Integration
# How VT Code connects commands and trust settings to Zed.
[acp.zed]
# Enable Zed integration
# Default: false
# Type: `boolean`
enabled = true


# Agent Defaults
# Primary model, prompt, and chat behavior.
[agent]
# Environment variable that stores the API key for the active provider
# Default: "OPENAI_API_KEY"
# Type: `string`
api_key_env = "DEEPSEEK_API_KEY"

# Default model to use
# Default: "gpt-5.3-codex"
# Type: `string`
default_model = "deepseek-v4-flash"

# AI provider for single agent mode (gemini, openai, anthropic, openrouter, zai)
# Possible values: anthropic, gemini, openai, openrouter, zai
# Default: "openai"
# Type: `string`
provider = "deepseek"

# Reasoning effort level for models that support it (none, minimal, low, medium, high, xhigh, max)
# Applies to: Claude, GPT-5 family, Gemini, Qwen3, DeepSeek with reasoning capability. `max` is
# currently intended for Claude Opus 4.7.
# Possible values: high, low, max, medium, minimal, none, xhigh
# Default: "none"
# Type: `string`
reasoning_effort = "medium"

# UI theme identifier controlling ANSI styling
# Default: "ciapre"
# Type: `string`
theme = "mono"

# Persistent Memory
# Per-repository memory summary, rollout staging, and learned durable notes.
[agent.persistent_memory]
# Toggle main-session persistent memory for this repository
# Default: false
# Type: `boolean`
enabled = true


# Features
[features]
memories = true


# MCP Servers
# Model Context Protocol providers and defaults.
[mcp]
# MCP Server Transport
# How VT Code hosts its own MCP server.
[mcp.server]
# Server version
# Default: "0.97.2"
# Type: `string`
version = "0.96.12"


# Permissions
# Default approval and trust behavior.
[permissions]
# Default unified permission mode for the current session.
# Default: "default"
# Type: `string`
default_mode = "auto"


# Provider Endpoints
# Network and provider-specific API settings.
[provider]
# Anthropic
# Anthropic-specific request settings.
[provider.anthropic]
# Effort level for adaptive thinking/token usage (low, medium, high, xhigh, max) Controls how many
# tokens Claude uses when responding, trading off between response thoroughness and token efficiency.
# VT Code enables this for Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6, and Claude Mythos
# Preview. `xhigh` is Opus 4.7-only; models that do not support it fall back to their supported
# default, typically `high`.
# Possible values: high, low, max, medium, xhigh
# Default: "xhigh"
# Type: `string`
effort = "low"

# Controls how thinking content is returned in API responses. Options: "summarized" (thinking blocks
# contain summarized text, default on Claude 4 models), "omitted" (thinking blocks have an empty
# thinking field, default on Opus 4.7). When unset, uses model-specific default.
# Possible values: omitted, summarized
# Default: -
# Type: `null | string`
thinking_display = "summarized"


# OpenAI
# OpenAI-specific request settings.
[provider.openai]
# Optional native OpenAI `service_tier` request parameter. Leave unset to inherit the Project-level
# default service tier. Options: "flex", "priority"
# Possible values: flex, priority
# Default: -
# Type: `OpenAIServiceTier | null`
service_tier = "flex"


# Subagents
[subagents]
# Background
[subagents.background]
# -
# Default: false
# Type: `boolean`
enabled = true


# Telemetry
# Local analytics, metrics, and reporting.
[telemetry]
# Enable ATIF (Agent Trajectory Interchange Format) trajectory export. When enabled, sessions write an
# `atif-trajectory.json` alongside the existing `.jsonl` trajectory log.
# Default: false
# Type: `boolean`
atif_enabled = true

# Emit bottleneck traces for slow paths
# Default: false
# Type: `boolean`
bottleneck_tracing = false


# Tool Defaults
# Loop limits and default tool behavior.
[tools]
# Tool Policies
# Per-tool allow, prompt, or deny rules.
[tools.policies]
agent_info = "allow"

ask_user_question = "allow"

ast-grep = "allow"

close_agent = "allow"

close_pty_session = "allow"

create_pty_session = "allow"

enter_plan_mode = "prompt"

exec_code = "allow"

execute_code = "allow"

exit_plan_mode = "allow"

git_diff = "allow"

grep_file = "allow"

list_files = "allow"

list_pty_sessions = "allow"

list_skills = "allow"

load_skill = "allow"

load_skill_resource = "allow"

memory = "allow"

open_file = "allow"

plan_task_tracker = "prompt"

read_pty_session = "allow"

request_user_input = "allow"

resize_pty_session = "allow"

resume_agent = "allow"

run_pty_cmd = "allow"

search_file = "allow"

search_tools = "allow"

send_input = "allow"

skill = "allow"

spawn_agent = "allow"

spawn_background_subprocess = "allow"

task_tracker = "allow"

unified_exec = "allow"

unified_file = "allow"

wait_agent = "allow"

web_fetch = "allow"


# Interface
# Appearance, layout, and transcript behavior.
[ui]
hide_header = true

# Notifications
# Desktop and in-app notification delivery.
[ui.notifications]
# Notification transport strategy.
# Default: "desktop"
# Type: `string`
delivery_mode = "hybrid"


# Terminal Title
[ui.terminal_title]
# -
# Default: null
# Type: `array | null`
items = [
    "project",
    "spinner",
    "app-name",
    "git-branch",
]