This guide covers VT Code's update system, including release channels, version pinning, and configuration options.
VT Code includes a built-in update system that can check for and install updates from GitHub Releases. The system supports:
- Multiple release channels (stable, beta, nightly)
- Version pinning for staying on specific versions
- Configurable update behavior via
~/.vtcode/update.toml - Download mirrors for better availability
# Check and install updates
vtcode update
# Check only (don't install)
vtcode update --check# List recent versions
vtcode update --list
# List more versions
vtcode update --list --limit 20# Pin to a specific version
vtcode update --pin 0.85.3
# Unpin and resume following the channel
vtcode update --unpin# Switch to beta channel
vtcode update --channel beta
# Switch to nightly channel
vtcode update --channel nightly
# Back to stable
vtcode update --channel stable# Show current update configuration
vtcode update --show-configVT Code follows three release channels:
- Purpose: Production-ready releases
- Update frequency: Every 2-4 weeks
- Recommended for: Most users, production environments
- Quality: Fully tested and validated
# ~/.vtcode/update.toml
channel = "stable"- Purpose: Pre-release testing
- Update frequency: Weekly
- Recommended for: Early adopters, testing new features
- Quality: Feature-complete, minor bugs possible
# ~/.vtcode/update.toml
channel = "beta"- Purpose: Bleeding edge builds
- Update frequency: Daily (automated builds)
- Recommended for: Contributors, extreme early adopters
- Quality: May contain bugs, rapid iteration
# ~/.vtcode/update.toml
channel = "nightly"Version pinning allows you to stay on a specific version, disabling automatic updates until you unpin.
- Waiting for a bug fix in the next release
- Stability requirements for production
- Testing compatibility with specific version
- Avoiding a problematic release
vtcode update --pin 0.85.3This creates/updates ~/.vtcode/update.toml:
[pin]
version = "0.85.3"vtcode update --unpinLocation: ~/.vtcode/update.toml
# VT Code Update Configuration
# Release channel to follow
# Options: stable (default), beta, nightly
channel = "stable"
# Version pinning (optional)
# Uncomment to pin to a specific version
# [pin]
# version = "0.85.3"
# reason = "Waiting for bug fix in next release"
# auto_unpin = false
# Download mirrors (optional)
# [mirrors]
# primary = "https://github.com/vinhnx/vtcode/releases"
# fallbacks = [
# "https://mirror.example.com/vtcode",
# ]
# geo_select = true
# Auto-update check interval in hours (0 = disable)
check_interval_hours = 24
# Download timeout in seconds
download_timeout_secs = 300
# Keep backup of previous version after update
keep_backup = true
# Auto-rollback on startup if new version fails
auto_rollback = false| Option | Type | Default | Description |
|---|---|---|---|
channel |
String | "stable" |
Release channel: stable, beta, or nightly |
pin.version |
String | null |
Pinned version (null = follow channel) |
pin.reason |
String | null |
User note for pinning |
pin.auto_unpin |
Boolean | false |
Auto-remove pin after successful update |
mirrors.primary |
String | GitHub | Primary download mirror URL |
mirrors.fallbacks |
Array | [] |
Fallback mirror URLs |
mirrors.geo_select |
Boolean | true |
Enable geographic mirror selection |
check_interval_hours |
Integer | 24 |
Hours between update checks (0 = disable) |
download_timeout_secs |
Integer | 300 |
Download timeout in seconds |
keep_backup |
Boolean | true |
Keep backup of previous version |
auto_rollback |
Boolean | false |
Auto-rollback on startup failure |
Check for and install updates.
Options:
--check- Check only, don't install--force- Force reinstall even if up-to-date--list- List available versions--limit <N>- Number of versions to list (default: 10)--pin <VERSION>- Pin to specific version--unpin- Remove version pin--channel <CHANNEL>- Set release channel--show-config- Show current configuration
Examples:
# Check and install
vtcode update
# Check only
vtcode update --check
# List versions
vtcode update --list
# Pin version
vtcode update --pin 0.85.3
# Switch to beta
vtcode update --channel betaIf VT Code was installed via a package manager, the update system will detect this and provide the appropriate update command:
- Homebrew:
brew upgrade vtcode - Cargo:
cargo install vtcode --force - npm:
npm install -g @vinhnx/vtcode@latest --registry=https://npm.pkg.github.com - Standalone: Direct update via
vtcode update
When keep_backup = true (default), the previous version is kept after update. If auto_rollback = true, VT Code will automatically revert to the backup if the new version fails to start.
By default, VT Code checks for updates every 24 hours. The check timestamp is cached in ~/.cache/vtcode/last_update_check.
To disable automatic checks:
check_interval_hours = 0- Check internet connectivity
- Try a different mirror:
[mirrors] primary = "https://mirror.example.com/vtcode"
- Increase timeout:
download_timeout_secs = 600
On Unix systems, ensure the binary has execute permissions:
chmod +x ~/.local/bin/vtcodeIf an update causes issues:
- Manual rollback: Download previous version from GitHub Releases
- Auto-rollback: If enabled, happens automatically on startup failure
auto_rollback = true
vtcode --versionIf you suspect corruption:
vtcode update --forceFor automated environments, you can:
-
Pin versions to ensure consistency:
vtcode update --pin 0.85.3
-
Disable auto-checks:
check_interval_hours = 0
-
Use specific channels for testing:
channel = "beta"
- Updates are downloaded from GitHub Releases over HTTPS
- Binary signatures are verified automatically
- Backup versions are kept for rollback safety
- Configuration file is user-controlled (
~/.vtcode/update.toml)