file_opener = "none"
notify = []
project_doc_fallback_filenames = []
[acp]
enabled = true
[acp.zed]
enabled = true
transport = "stdio"
workspace_trust = "full_auto"
[acp.zed.auth]
default_method = "agent"
[acp.zed.tools]
list_files = true
read_file = true
[agent]
api_key_env = "OPENAI_API_KEY"
autonomous_mode = true
credential_storage_mode = "keyring"
default_editing_mode = "edit"
default_model = "gpt-5.2"
enable_self_review = false
enable_split_tool_results = true
include_temporal_context = true
include_working_directory = true
instruction_excludes = []
instruction_files = []
instruction_import_max_depth = 5
instruction_max_bytes = 16384
max_conversation_turns = 193
max_review_passes = 1
max_task_retries = 2
project_doc_fallback_filenames = []
project_doc_max_bytes = 16384
provider = "openai"
reasoning_effort = "low"
refine_prompts_enabled = false
refine_prompts_max_passes = 1
refine_prompts_model = ""
refine_temperature = 0.3
require_plan_confirmation = true
system_prompt_mode = "default"
temperature = 0.7
temporal_context_use_utc = false
theme = "ciapre"
todo_planning_mode = false
tool_documentation_mode = "minimal"
ui_surface = "auto"
verbosity = "medium"
[agent.checkpointing]
enabled = false
max_age_days = 30
max_snapshots = 50
[agent.circuit_breaker]
enabled = true
failure_threshold = 5
max_open_circuits = 3
pause_on_open = true
recovery_cooldown = 60
[agent.codex_app_server]
args = ["app-server"]
command = "codex"
startup_timeout_secs = 10
[agent.harness]
auto_compaction_enabled = false
continuation_policy = "all"
event_log_path = ""
max_revision_rounds = 2
max_tool_calls_per_turn = 0
max_tool_retries = 2
max_tool_wall_clock_secs = 600
orchestration_mode = "single"
[agent.onboarding]
enabled = true
guideline_highlight_limit = 3
include_guideline_highlights = true
include_language_summary = false
include_project_overview = true
include_recommended_actions_in_welcome = false
include_usage_tips_in_welcome = false
intro_text = "Let's get oriented. I preloaded workspace context so we can move fast."
recommended_actions = [
"Review the highlighted guidelines and share the task you want to tackle.",
"Ask for a workspace tour if you need more context.",
]
usage_tips = [
"Describe your current coding goal or ask for a quick status overview.",
"Reference AGENTS.md guidelines when proposing changes.",
"Prefer asking for targeted file reads or diffs before editing.",
]
[agent.open_responses]
emit_events = true
enabled = false
include_extensions = true
include_reasoning = true
map_tool_calls = true
[agent.persistent_memory]
auto_write = true
enabled = true
startup_byte_limit = 25600
startup_line_limit = 200
[agent.prompt_suggestions]
enabled = true
model = "MiniMax-M2.5"
show_cost_notice = true
temperature = 0.3
[agent.small_model]
enabled = true
model = "gpt-5-nano"
temperature = 0.3
use_for_git_history = true
use_for_large_reads = true
use_for_memory = true
use_for_web_summary = true
[agent.vibe_coding]
enable_conversation_memory = true
enable_entity_resolution = true
enable_proactive_context = true
enable_pronoun_resolution = true
enable_relative_value_inference = true
enabled = false
entity_index_cache = ".vtcode/entity_index.json"
max_context_files = 3
max_context_snippets_per_file = 20
max_entity_matches = 5
max_memory_turns = 50
max_recent_files = 20
max_search_results = 5
min_prompt_length = 5
min_prompt_words = 2
track_value_history = true
track_workspace_state = true
[auth.copilot]
auth_timeout_secs = 300
available_tools = [
"view",
"glob",
"grep",
"edit",
"create",
]
excluded_tools = []
startup_timeout_secs = 20
vtcode_tool_allowlist = [
"unified_search",
"unified_file",
"unified_exec",
"apply_patch",
]
[auth.openai]
auto_refresh = true
callback_port = 1455
flow_timeout_secs = 300
preferred_method = "auto"
[auth.openrouter]
auto_refresh = true
callback_port = 8484
flow_timeout_secs = 300
use_oauth = false
[automation.full_auto]
allowed_tools = [
"read_file",
"list_files",
"grep_file",
]
enabled = true
max_turns = 30
require_profile_ack = true
[automation.scheduled_tasks]
enabled = true
[chat.askQuestions]
enabled = true
[commands]
allow_glob = [
"git *",
"cargo *",
"rustc *",
"python *",
"python3 *",
"pip *",
"pip3 *",
"node *",
"npm *",
"npm run *",
"yarn *",
"yarn run *",
"pnpm *",
"pnpm run *",
"bun *",
"bun run *",
"npx *",
"go *",
"gcc *",
"g++ *",
"clang *",
"clang++ *",
"javac *",
"java *",
"mvn *",
"gradle *",
"make *",
"cmake *",
"ninja *",
"docker *",
"docker-compose *",
"virtualenv *",
"tar *",
"zip *",
"unzip *",
"gzip *",
"gunzip *",
]
allow_list = [
"ls",
"pwd",
"cat",
"grep",
"find",
"head",
"tail",
"wc",
"git status",
"git diff",
"git log",
"git show",
"git branch",
"git remote",
"cargo check",
"cargo build",
"cargo build --release",
"cargo build --profile release",
"cargo test",
"cargo run",
"cargo clippy",
"cargo fmt",
"cargo tree",
"cargo metadata",
"cargo doc",
"rustc",
"which",
"echo",
"printf",
"date",
"tree",
"stat",
"file",
"sort",
"uniq",
"cut",
"awk",
"sed",
"tar",
"zip",
"unzip",
"gzip",
"gunzip",
"make",
"cmake",
"ninja",
"python3",
"python3 -m pip install",
"python3 -m pytest",
"python3 -m build",
"python",
"pip3",
"pip",
"virtualenv",
"node",
"npm",
"npm run build",
"npm run test",
"npm install",
"yarn",
"yarn build",
"yarn test",
"pnpm",
"pnpm build",
"pnpm test",
"bun",
"bun install",
"bun run",
"bun test",
"npx",
"go",
"go build",
"go test",
"gcc",
"g++",
"clang",
"clang++",
"javac",
"java",
"mvn",
"gradle",
"docker",
"docker-compose",
]
allow_regex = [
'^(ls|pwd|cat|grep|find|head|tail|wc|echo|printf|date|tree|stat|file|sort|uniq|cut|awk|sed|tar|zip|unzip|gzip|gunzip)\b',
'^git (status|diff|log|show|branch|remote)\b',
'^cargo (check|build|test|run|doc|clippy|fmt|tree|metadata)\b',
'^rustc\b',
'^(python|python3) (-m | )?\w*',
'^(pip|pip3)\b',
'^virtualenv\b',
'^(node|npm|yarn|pnpm|bun|npx)\b',
'^go\b',
'^(gcc|g\+\+|clang|clang\++)\b',
'^(javac|java)\b',
'^(mvn|gradle)\b',
'^(make|cmake)\b',
'^(docker|docker-compose)\b',
]
approval_prefixes = []
deny_glob = [
"rm *",
"sudo *",
"chmod *",
"chown *",
"kill *",
"pkill *",
"systemctl *",
"service *",
"mount *",
"umount *",
"docker run *",
"kubectl *",
]
deny_list = [
"rm",
"rm -rf /",
"rm -rf ~",
"rm -rf /*",
"rm -rf /home",
"rm -rf /usr",
"rm -rf /etc",
"rm -rf /var",
"rm -rf /opt",
"rmdir /",
"rmdir /home",
"rmdir /usr",
"shutdown",
"reboot",
"halt",
"poweroff",
"init 0",
"init 6",
"systemctl poweroff",
"systemctl reboot",
"systemctl halt",
"sudo rm",
"sudo chmod 777",
"sudo chown",
"sudo passwd",
"sudo su",
"sudo -i",
"sudo bash",
"su root",
"su -",
"format",
"fdisk",
"mkfs",
"mkfs.ext4",
"mkfs.xfs",
"mkfs.vfat",
"dd if=/dev/zero",
"dd if=/dev/random",
"dd if=/dev/urandom",
"wget --no-check-certificate",
":(){ :|:& };:",
"nohup bash -i",
"exec bash -i",
"eval",
"source /etc/bashrc",
"source ~/.bashrc",
"chmod 777",
"chmod -R 777",
"chown -R",
"chgrp -R",
"rm ~/.ssh/*",
"rm -r ~/.ssh",
"cat /etc/passwd",
"cat /etc/shadow",
"cat ~/.ssh/id_*",
"tail -f /var/log",
"head -n 1 /var/log",
]
deny_regex = [
'rm\s+(-rf|--force)',
'sudo\s+.*',
'chmod\s+.*',
'chown\s+.*',
'docker\s+run\s+.*--privileged',
'kubectl\s+(delete|drain|uncordon)',
]
extra_path_entries = [
"$HOME/.cargo/bin",
"$HOME/.local/bin",
"/opt/homebrew/bin",
"/usr/local/bin",
"$HOME/.asdf/bin",
"$HOME/.asdf/shims",
"$HOME/go/bin",
]
[context]
max_context_tokens = 130048
preserve_recent_turns = 10
trim_to_percent = 85
[context.dynamic]
enabled = true
max_spooled_files = 100
persist_history = true
spool_max_age_secs = 3600
sync_mcp_tools = true
sync_skills = true
sync_terminals = true
tool_output_threshold = 8192
[context.ledger]
enabled = true
include_in_prompt = true
max_entries = 12
preserve_in_compression = true
[debug]
enable_tracing = true
max_debug_log_age_days = 7
max_debug_log_size_mb = 50
trace_level = "error"
trace_targets = []
[dotfile_protection]
additional_protected_patterns = []
audit_log_path = "~/.vtcode/dotfile_audit.log"
audit_logging_enabled = true
backup_directory = "~/.vtcode/dotfile_backups"
block_during_automation = true
blocked_operations = [
"dependency_installation",
"code_formatting",
"git_operations",
"project_initialization",
"build_operations",
"test_execution",
"linting",
"auto_fix",
]
create_backups = true
enabled = true
max_backups_per_file = 10
preserve_permissions = true
prevent_cascading_modifications = true
require_explicit_confirmation = true
require_secondary_auth_for_whitelist = true
whitelist = []
[history]
persistence = "file"
[hooks.lifecycle]
notification = []
post_tool_use = []
pre_compact = []
pre_tool_use = []
quiet_success_output = false
session_end = []
session_start = []
subagent_start = []
subagent_stop = []
task_completed = []
task_completion = []
user_prompt_submit = []
[ide_context]
enabled = true
include_selection_text = true
inject_into_prompt = true
provider_mode = "auto"
show_in_tui = true
[ide_context.providers.generic]
enabled = true
[ide_context.providers.vscode_compatible]
enabled = true
[ide_context.providers.zed]
enabled = true
[mcp]
connection_pooling_enabled = true
connection_timeout_seconds = 30
enabled = true
experimental_use_rmcp_client = true
max_concurrent_connections = 5
providers = []
request_timeout_seconds = 30
retry_attempts = 3
tool_cache_capacity = 100
[mcp.allowlist]
enforce = false
[mcp.allowlist.default]
[mcp.allowlist.providers]
[mcp.requirements]
allowed_http_endpoints = []
allowed_stdio_commands = []
enforce = false
[mcp.security]
auth_enabled = false
[mcp.security.rate_limit]
concurrent_requests = 10
requests_per_minute = 100
[mcp.security.validation]
max_argument_size = 1048576
path_traversal_protection = true
schema_validation_enabled = true
[mcp.server]
bind_address = "127.0.0.1"
enabled = false
exposed_tools = []
name = "vtcode-mcp-server"
port = 3000
transport = "sse"
version = "0.72.2"
[mcp.ui]
max_events = 50
mode = "compact"
show_provider_names = true
[mcp.ui.renderers]
[model]
loop_detection_interactive = true
loop_detection_threshold = 2
skip_loop_detection = false
[optimization.agent_execution]
enable_performance_prediction = false
idle_backoff_ms = 100
idle_timeout_ms = 5000
max_execution_time_secs = 300
max_idle_cycles = 10
max_memory_mb = 1024
resource_monitor_interval_ms = 100
state_history_size = 1000
use_optimized_loop = false
[optimization.async_pipeline]
batch_timeout_ms = 100
cache_size = 100
enable_batching = false
enable_caching = true
max_batch_size = 5
[optimization.command_cache]
allowlist = [
"rg",
"ls",
"git status",
"git diff --stat",
]
enabled = true
max_entries = 128
ttl_ms = 2000
[optimization.file_read_cache]
enabled = true
max_entries = 128
max_size_bytes = 10485760
min_size_bytes = 262144
ttl_secs = 300
[optimization.llm_client]
cache_ttl_secs = 300
connection_pool_size = 4
enable_connection_pooling = false
enable_request_batching = false
enable_response_caching = true
rate_limit_burst = 20
rate_limit_rps = 10.0
response_cache_size = 50
[optimization.memory_pool]
enabled = true
max_string_pool_size = 64
max_value_pool_size = 32
max_vec_pool_size = 16
[optimization.profiling]
auto_export_results = false
enable_regression_testing = false
enabled = false
export_file_path = "benchmark_results.json"
max_history_size = 1000
max_regression_percent = 10.0
monitor_interval_ms = 100
[optimization.tool_registry]
default_timeout_secs = 180
hot_cache_size = 16
max_concurrent_tools = 4
use_optimized_registry = false
[output_style]
active_style = "default"
[permissions]
allow = []
allowed_tools = []
ask = []
audit_directory = "~/.vtcode/audit"
audit_enabled = true
cache_enabled = true
cache_ttl_seconds = 300
default_mode = "default"
deny = []
disallowed_tools = []
enabled = true
log_allowed_commands = true
log_denied_commands = true
log_permission_prompts = true
resolve_commands = true
[permissions.auto_mode]
allow_exceptions = [
"Allow read-only tools and read-only browsing/search actions.",
"Allow file edits and writes inside the current workspace when the path is not protected.",
"Allow pushes only to the current session branch or configured git remotes inside the trusted environment.",
]
block_rules = [
"Block destructive source-control actions such as force-pushes, direct pushes to protected branches, or remote branch deletion unless the user explicitly authorized that exact blast radius.",
"Block remote code download-and-execute flows, including curl-or-wget pipes into interpreters or shells, and running code from freshly cloned external repositories.",
"Block sending workspace contents, credentials, environment variables, or other sensitive data to external endpoints unless the user explicitly named both the destination and the data.",
"Block credential hunting, secret discovery, or scanning config and environment stores for alternative tokens unless the user explicitly asked for that credential workflow.",
"Block commands that bypass safety checks, disable verification, install persistence, or weaken the host security posture.",
"Block destructive or production/shared-infrastructure actions unless the user explicitly authorized the target and the action.",
"Block destructive actions against inferred, fuzzy-matched, or agent-selected targets when the user did not name the exact target.",
]
drop_broad_allow_rules = true
max_consecutive_denials = 3
max_total_denials = 20
model = ""
probe_model = ""
[permissions.auto_mode.environment]
trusted_domains = []
trusted_git_hosts = []
trusted_git_orgs = []
trusted_paths = []
trusted_services = []
[prompt_cache]
cache_dir = "~/.vtcode/cache/prompts"
cache_friendly_prompt_shaping = false
enable_auto_cleanup = true
enabled = false
max_age_days = 30
max_entries = 1000
min_quality_threshold = 0.7
[prompt_cache.providers.anthropic]
cache_system_messages = true
cache_tool_definitions = true
cache_user_messages = true
enabled = true
extended_ttl_seconds = 3600
max_breakpoints = 4
messages_ttl_seconds = 300
min_message_length_for_cache = 256
tools_ttl_seconds = 3600
[prompt_cache.providers.deepseek]
enabled = true
surface_metrics = true
[prompt_cache.providers.gemini]
enabled = true
explicit_ttl_seconds = 3600
min_prefix_tokens = 1024
mode = "implicit"
[prompt_cache.providers.moonshot]
enabled = true
[prompt_cache.providers.openai]
enabled = true
idle_expiration_seconds = 3600
min_prefix_tokens = 1024
prompt_cache_key_mode = "session"
surface_metrics = true
[prompt_cache.providers.openrouter]
enabled = true
propagate_provider_capabilities = true
report_savings = true
[prompt_cache.providers.zai]
enabled = false
[provider.anthropic]
count_tokens_enabled = false
effort = "low"
extended_thinking_enabled = true
interleaved_thinking_beta = "interleaved-thinking-2025-05-14"
interleaved_thinking_budget_tokens = 31999
interleaved_thinking_type_enabled = "enabled"
skip_model_validation = false
[provider.anthropic.tool_search]
algorithm = "regex"
always_available_tools = []
defer_by_default = true
enabled = false
max_results = 5
[provider.openai]
service_tier = "flex"
websocket_mode = false
[provider.openai.hosted_shell]
enabled = false
environment = "container_auto"
[provider.openai.hosted_shell.network_policy]
type = "disabled"
[provider.openai.tool_search]
always_available_tools = []
defer_by_default = true
enabled = true
[pty]
command_timeout_seconds = 3600
default_cols = 120
default_rows = 24
emulation_backend = "ghostty"
enabled = true
large_output_threshold_kb = 5000
max_scrollback_bytes = 25000000
max_sessions = 10
scrollback_lines = 400
shell_zsh_fork = false
stdout_tail_lines = 20
[sandbox]
default_mode = "read_only"
enabled = false
[sandbox.external]
sandbox_type = "none"
[sandbox.external.docker]
cpu_limit = ""
image = "ubuntu:22.04"
memory_limit = ""
network_mode = "none"
[sandbox.external.microvm]
kernel_path = ""
memory_mb = 512
rootfs_path = ""
vcpus = 1
vmm = ""
[sandbox.network]
allow_all = false
allowlist = []
block_all = false
[sandbox.resource_limits]
cpu_time_secs = 0
max_disk_mb = 0
max_memory_mb = 0
max_pids = 0
preset = "moderate"
timeout_secs = 0
[sandbox.seccomp]
additional_blocked = []
enabled = true
log_only = false
profile = "strict"
[sandbox.sensitive_paths]
additional = []
exceptions = []
use_defaults = true
[security]
auto_apply_detected_patches = false
encrypt_payloads = false
hitl_notification_bell = true
human_in_the_loop = true
integrity_checks = true
require_write_tool_for_claims = true
zero_trust_mode = false
[security.gatekeeper]
auto_clear_paths = [
".vtcode/bin",
"~/.vtcode/bin",
]
auto_clear_quarantine = false
warn_on_quarantine = true
[skills]
enable-auto-trigger = true
enable-description-matching = true
max-skills-in-prompt = 10
min-keyword-matches = 2
prompt-format = "xml"
render-mode = "lean"
[skills.bundled]
enabled = true
[subagents]
auto_delegate_read_only = true
default_timeout_seconds = 300
enabled = true
max_concurrent = 4
max_depth = 1
[subagents.background]
auto_restore = true
default_agent = "default"
enabled = true
refresh_interval_ms = 2000
toggle_shortcut = "ctrl+b"
[syntax_highlighting]
cache_themes = true
enabled = true
enabled_languages = [
"rust",
"python",
"javascript",
"typescript",
"go",
"java",
"cpp",
"c",
"php",
"html",
"css",
"sql",
"csharp",
"bash",
"swift",
]
highlight_timeout_ms = 5000
max_file_size_mb = 10
theme = "base16-ocean.dark"
[telemetry]
bottleneck_tracing = true
dashboards_enabled = true
perf_events = true
retention_days = 14
sample_interval_ms = 1000
trajectory_enabled = true
trajectory_max_age_days = 14
trajectory_max_files = 50
trajectory_max_size_mb = 50
[timeouts]
adaptive_decay_ratio = 0.875
adaptive_min_floor_ms = 1000
adaptive_success_streak = 5
default_ceiling_seconds = 180
mcp_ceiling_seconds = 120
pty_ceiling_seconds = 300
streaming_ceiling_seconds = 600
warning_threshold_percent = 80
[tools]
default_policy = "allow"
max_consecutive_blocked_tool_calls_per_turn = 8
max_repeated_tool_calls = 2
max_sequential_spool_chunk_reads = 6
max_tool_loops = 0
[provider.openai.manual_compaction]
[tools.editor]
enabled = true
preferred_editor = ""
suspend_tui = false
[tools.loop_thresholds]
[tools.plugins]
allow = []
auto_reload = true
default_trust = "sandbox"
deny = []
enabled = true
manifests = []
[tools.policies]
"/edit" = "prompt"
"/plan" = "prompt"
"/plan_off" = "prompt"
agent_info = "allow"
apply_patch = "prompt"
ask_user_question = "allow"
"assistant<|channel|>apply_patch" = "allow"
checklist = "prompt"
close_pty_session = "allow"
coder_mode = "prompt"
create_file = "allow"
create_pty_session = "allow"
delete_file = "prompt"
edit_file = "allow"
enter_plan = "prompt"
enter_plan_mode = "prompt"
exec_code = "allow"
execute_code = "allow"
exit_plan = "prompt"
exit_plan_mode = "prompt"
git_diff = "allow"
grep_file = "allow"
implement_plan = "prompt"
list_files = "allow"
list_pty_sessions = "allow"
list_skills = "allow"
load_skill = "allow"
load_skill_resource = "allow"
mode_edit = "prompt"
mode_plan = "prompt"
open_file = "allow"
plan_checklist = "prompt"
plan_exit = "prompt"
plan_manager = "prompt"
plan_mode = "prompt"
plan_off = "prompt"
plan_on = "prompt"
plan_start = "prompt"
plan_task_tracker = "prompt"
plan_tasks = "prompt"
planner_mode = "prompt"
read_file = "allow"
read_pty_session = "allow"
request_user_input = "allow"
resize_pty_session = "allow"
resume_agent = "allow"
resume_edit_mode = "prompt"
run_pty_cmd = "allow"
search_file = "allow"
search_replace = "prompt"
search_tools = "allow"
"send_command<|channel|>analysis" = "allow"
send_input = "allow"
send_pty_input = "prompt"
skill = "allow"
spawn_agent = "allow"
start_implementation = "prompt"
start_planning = "prompt"
switch_edit_mode = "prompt"
switch_plan_mode = "prompt"
switch_to_edit_mode = "prompt"
switch_to_plan_mode = "prompt"
task_tracker = "prompt"
track_tasks = "prompt"
unified_exec = "allow"
unified_file = "allow"
unified_search = "allow"
vtcode-check = "prompt"
vtcode-clippy = "prompt"
wait_agent = "allow"
web_fetch = "allow"
write_file = "allow"
[tools.web_fetch]
allowed_domains = []
audit_log_path = "~/.vtcode/web_fetch_audit.log"
blocked_domains = []
blocked_patterns = []
dynamic_blocklist_enabled = false
dynamic_blocklist_path = "~/.vtcode/web_fetch_blocklist.json"
dynamic_whitelist_enabled = false
dynamic_whitelist_path = "~/.vtcode/web_fetch_whitelist.json"
enable_audit_logging = false
mode = "restricted"
strict_https_only = true
[tui]
[ui]
allow_tool_ansi = true
bold_is_bright = true
color_scheme_mode = "auto"
dim_completed_todos = true
display_mode = "minimal"
inline_viewport_rows = 16
layout_mode = "auto"
message_block_spacing = true
minimum_contrast = 4.5
reasoning_display_mode = "toggle"
reasoning_visible_default = true
reduce_motion_keep_progress_animation = false
reduce_motion_mode = false
safe_colors_only = false
screen_reader_mode = false
show_diagnostics_in_transcript = true
show_sidebar = false
show_turn_timer = false
tool_output_max_lines = 50
tool_output_mode = "compact"
tool_output_spool_bytes = 200000
vim_mode = false
[ui.keyboard_protocol]
disambiguate_escape_codes = true
enabled = true
mode = "default"
report_all_keys = false
report_alternate_keys = true
report_event_types = true
[[custom_providers]]
name = "mycorp"
display_name = "MyCorporateName"
base_url = "https://llm.corp.example/v1"
api_key_env = "MYCORP_API_KEY"
model = "gpt-5.4"
[ui.notifications]
command_failure = true
completion = true
completion_failure = true
completion_success = true
delivery_mode = "hybrid"
enabled = true
error = true
hitl = true
max_identical_in_window = 1
policy_approval = true
repeat_window_seconds = 30
request = true
suppress_when_focused = true
tool_failure = true
tool_success = true
[ui.status_line]
command_timeout_ms = 200
mode = "Auto"
refresh_interval_ms = 1000