vtcode 0.20.0

A Rust-based terminal coding agent with modular architecture supporting multiple LLM providers
Documentation
# VTCode Configuration
# Minimal configuration with only actively used settings

[agent]
# Provider to use: one of "gemini", "openai", "anthropic", "openrouter"
# API key environment variable is automatically inferred from provider
provider = "anthropic"
# Default model for single-agent mode
# Please also check router.models below if change default_model
default_model = "claude-sonnet-4-5"
# Chat UI surface: auto | alternate | inline
ui_surface = "auto"

[router.models]
# Model routing tiers consumed by vtcode-core::router
simple = "claude-sonnet-4-5"
standard = "claude-sonnet-4-5"
complex = "claude-sonnet-4-5"
codegen_heavy = "claude-sonnet-4-5"
retrieval_heavy = "claude-sonnet-4-5"


# Max conversation turns per session (prevents infinite loops)
max_conversation_turns = 150
# Reasoning effort for models that support it: "low" | "medium" | "high"
reasoning_effort = "medium"
todo_planning_mode = true

[security]
# Runloop guardrails enforced inside session_setup
human_in_the_loop = true
require_write_tool_for_claims = true
auto_apply_detected_patches = false

[automation.full_auto]
# Full-auto safeguards consumed by ToolRegistry::enable_full_auto_mode
enabled = false
require_profile_ack = true
profile_path = "automation/full_auto_profile.toml"

[acp]
enabled = true

[acp.zed]
enabled = true
transport = "stdio"

[acp.zed.tools]
read_file = true


[tools]
default_policy = "prompt"
max_tool_loops = 100

[tools.policies]
# File system tools safeguard workspace access
read_file = "allow"
list_dir = "allow"
grep_search = "allow"
run_terminal_cmd = "allow"
curl = "prompt"
create_file = "allow"
edit_file = "allow"
delete_file = "deny"

# Static analysis helpers available without prompts
# Code analysis tools
semantic_search = "allow"
tree_sitter_analyze = "allow"
# Build and format commands needed for Rust workflow

# Build and format commands needed for Rust workflow
# Build and test tools
cargo_check = "allow"
cargo_build = "prompt"
cargo_test = "allow"
cargo_clippy = "allow"
# Git inspection is safe; history mutation asks first
cargo_fmt = "allow"

# Git tools
git_status = "allow"
git_diff = "allow"
git_log = "allow"
# Powerful refactor/search requires confirmation
# Powerful refactor/search requires confirmation
srgn = "prompt"
git_push = "prompt"

# Code modification tools

[commands]
# Quick inspection commands the agent can run freely
allow_list = ["ls", "pwd", "git status", "git diff", "cargo check", "echo"]
# Hard-stop list for destructive or high-risk invocations
deny_list = [
    "rm -rf /",
    "rm -rf ~",
    "shutdown",
    "reboot",
    "sudo *",
    ":(){ :|:& };:",
]
# Pattern-based permissions for common workflows
allow_glob = ["git *", "cargo *", "python -m *"]
deny_glob = ["rm *", "sudo *", "chmod *", "chown *", "kubectl *"]

[pty]
# PTY defaults used by vtcode-core::tools::registry::pty
enabled = true
default_rows = 24
default_cols = 80
max_sessions = 10
command_timeout_seconds = 300
stdout_tail_lines = 20

[ui]
# Controls inline tool output rendering in vtcode-core::ui
tool_output_mode = "compact"
# Show timeline navigation panel in inline UI (default false hides it)
show_timeline_pane = false

[mcp]
# Local MCP transports; fine-grained allowlists live in .vtcode/tool-policy.json
# Local MCP clients executed via stdio transports
enabled = true

[[mcp.providers]]
# Official Model Context Protocol time server
name = "time"
enabled = true
command = "uvx"
args = ["mcp-server-time"]
max_concurrent_requests = 3

[[mcp.providers]]
# Upstash Context7 knowledge base over MCP
name = "context7"
enabled = true
command = "npx"
args = ["-y", "@upstash/context7-mcp@latest"]
max_concurrent_requests = 3

[[mcp.providers]]
# Anthropic sequential thinking planner via MCP
name = "sequential-thinking"
enabled = true
command = "npx"
args = ["-y", "@modelcontextprotocol/server-sequential-thinking"]
max_concurrent_requests = 3

# Example HTTP provider configuration
# Note: HTTP transport is partially implemented - basic connectivity testing is supported
# but full streamable HTTP MCP server support requires additional implementation
# [[mcp.providers]]
# name = "example-http"
# enabled = false
# command = "curl"  # Not used for HTTP transport
# args = []         # Not used for HTTP transport
# [mcp.providers.transport.http]
# endpoint = "http://localhost:3000/mcp"
# api_key_env = "HTTP_API_KEY"
# protocol_version = "2024-11-05"
# headers = { "Content-Type" = "application/json", "User-Agent" = "vtcode-mcp-client" }
# max_concurrent_requests = 2