Lỗi Gặp Phải
Bạn mở VS Code, nhấn Turn On Settings Sync, chọn GitHub hoặc Microsoft — và nhận được thông báo này:
Turning on Settings Sync failed: Cannot sign in
Không có thêm thông tin nào. Hộp thoại đóng lại. Settings Sync vẫn tắt.
Lỗi này trông có vẻ đơn giản, nhưng tùy môi trường của bạn, nó có thể xuất phát từ hàng chục nguyên nhân khác nhau — token hết hạn, keychain bị hỏng, proxy chặn, hay sandbox của Snap trên Linux.
Nguyên Nhân
- Keychain/kho lưu thông tin xác thực không truy cập được (phổ biến nhất trên Linux)
- Token OAuth cũ hoặc bị hỏng được VS Code lưu trong cache
- Mạng/proxy chặn URL callback OAuth
- Trình duyệt không thể hoàn tất luồng xác thực (redirect thất bại không có thông báo)
- Extension host của VS Code bị crash giữa chừng khi đang xác thực
- Firewall doanh nghiệp chặn URI scheme
vscode://
Cách Sửa 1: Xóa Thông Tin Xác Thực Đã Lưu (Làm Trước Tiên)
Trong hầu hết trường hợp, dữ liệu token cũ là thủ phạm. Hãy xóa nó trước khi động đến bất cứ thứ gì khác.
Mở Command Palette (Ctrl+Shift+P / Cmd+Shift+P) và chạy:
Settings Sync: Reset Extension
Sau đó đăng xuất khỏi tất cả tài khoản:
Accounts: Remove Account
Khởi động lại VS Code hoàn toàn — không chỉ reload cửa sổ — rồi thử bật Settings Sync lại.
Cách Sửa 2: Xóa Thủ Công Mục Trong Keychain
Vẫn bị lỗi? VS Code có thể đã để lại một mục bị hỏng trong kho thông tin xác thực của hệ điều hành.
Windows
Mở Credential Manager → Windows Credentials. Tìm các mục bắt đầu bằng vscode hoặc GitHub. Xóa tất cả chúng rồi thử lại.
macOS
Mở Keychain Access và tìm kiếm vscode. Xóa các mục liên quan đến VS Code hoặc GitHub. Hoặc xử lý qua Terminal:
security delete-generic-password -s "VS Code" -a "$(whoami)"
Lưu ý: tên service trong Keychain có thể khác nhau — hãy xác nhận tên mục chính xác trong Keychain Access trước khi chạy lệnh này.
Linux
Linux là nơi lỗi này xảy ra thường xuyên nhất. VS Code cần một keyring daemon đang chạy. Trên các desktop tối giản và môi trường headless, thường thiếu thành phần này:
# Cài gnome-keyring nếu chưa có
sudo apt install gnome-keyring libsecret-1-0 libsecret-tools
# Khởi động keyring daemon (thêm vào shell rc để giữ lại sau khi khởi động lại)
export $(gnome-keyring-daemon --start --components=secrets)
# Kiểm tra xem nó có đang chạy không
ps aux | grep keyring
Trên server hoặc CI không có màn hình, bỏ qua keyring hoàn toàn:
code --password-store=basic
Đặt làm cố định bằng alias:
alias code='code --password-store=basic'
Cách Sửa 3: Sửa Redirect Trình Duyệt OAuth
Đây là cách luồng xác thực hoạt động: VS Code mở trình duyệt → bạn phê duyệt OAuth → trình duyệt chuyển hướng về VS Code qua URI vscode://. Nếu hệ thống của bạn không xử lý được URI scheme đó, trình duyệt chỉ đứng yên. VS Code không bao giờ nhận được token. Không có thông báo lỗi — chỉ là im lặng.
Trên Linux (xdg-open chưa được cấu hình)
# Đăng ký URI handler cho vscode
xdg-mime default code-url-handler.desktop x-scheme-handler/vscode
# Kiểm tra
xdg-mime query default x-scheme-handler/vscode
# Kết quả nên là: code-url-handler.desktop
Không tìm thấy file desktop? Cài lại VS Code từ gói .deb/.rpm chính thức. Snap thường xuyên làm hỏng URI handler — xem bên dưới.
VS Code cài qua Snap trên Ubuntu
Sandbox của Snap chặn redirect vscode://. Hãy chuyển sang repo Microsoft chính thức:
sudo snap remove code
# Thêm repo Microsoft
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
echo "deb [arch=amd64] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
sudo apt update && sudo apt install code
Cách Sửa 4: Proxy hoặc Firewall Chặn Xác Thực
Đang dùng proxy của công ty? Callback OAuth có thể bị chặn trước khi đến được VS Code. Thêm proxy vào settings.json:
// Trong settings.json
"http.proxy": "http://your-proxy:port",
"http.proxyStrictSSL": false
Ngoài ra, hãy whitelist các domain sau trong quy tắc firewall:
github.comapi.github.comlogin.microsoftonline.comvscode.devinsiders.vscode.dev
Cách Sửa 5: Xóa Hoàn Toàn Trạng Thái Xác Thực VS Code
Vẫn không được? Hãy reset toàn bộ. Thao tác này chỉ xóa token xác thực cục bộ và metadata đồng bộ — các cài đặt thực sự của bạn vẫn còn trên cloud.
Windows
rmdir /s /q "%APPDATA%\Code\User\sync"
del "%APPDATA%\Code\User\settings.json" # Chỉ nếu bạn chấp nhận đồng bộ lại từ cloud
macOS
rm -rf "$HOME/Library/Application Support/Code/User/sync"
Linux
rm -rf "$HOME/.config/Code/User/sync"
Khởi động lại VS Code và thử lại.
Kiểm Tra Kết Quả
- Mở Command Palette → Settings Sync: Show Synced Data. Bạn sẽ thấy một timeline với mục gần đây nhất.
- Kiểm tra biểu tượng tài khoản ở góc dưới bên trái Activity Bar — tên người dùng GitHub hoặc Microsoft của bạn sẽ hiển thị ở đó.
- Thay đổi một cài đặt bất kỳ, chờ 30 giây, rồi mở VS Code trên máy thứ hai hoặc kiểm tra tại
https://vscode.dev. Thay đổi đó phải xuất hiện.
Phòng Ngừa
- Trên Linux, cài VS Code từ repo Microsoft chính thức — không dùng Snap.
- Đang dùng i3, sway, hay window manager tối giản khác? Thêm
gnome-keyring-daemonvào autostart để nó luôn sẵn sàng. - Giữ VS Code được cập nhật. Luồng xác thực được vá lỗi thường xuyên.
- Sau khi thay đổi token GitHub hoặc thu hồi OAuth app, hãy cấp phép lại cho VS Code trong GitHub Settings → Applications → Authorized OAuth Apps.

