插件安装失败90%是因~/.vscode/extensions目录不可写:linux/macos需属主为当前用户且权限drwxr-xr-x,windows需用户具备“修改”和“写入”权限;自定义--extensions-dir时须手动创建并赋权,禁用系统保护路径及wsl挂载点。

插件市场权限报错,90%不是网络或 Marketplace 本身的问题,而是 VS Code 无法往本地扩展目录写入文件——~/.vscode/extensions(Windows 是 %USERPROFILE%\.vscode\extensions)不可写,直接导致下载后解压失败、安装卡在 “Installing…”、甚至静默消失。
检查 ~/.vscode/extensions 目录是否可写
这是最常被跳过的根因。VS Code 安装插件时,会把 .vsix 解压到这个目录;如果当前用户没权限,整个流程就停在底层,UI 层连错误提示都未必给出。
- Linux/macOS:运行
ls -ld ~/.vscode/extensions,确认输出开头是drwxr-xr-x,且属主是你自己(不是root) - Windows:右键该文件夹 → “属性” → “安全”页签 → 找到你的用户名 → 确认勾选了“修改”和“写入”
- 若属主错误(比如是
root或另一个用户),Linux/macOS 执行:sudo chown -R $USER:$USER ~/.vscode/extensions;Windows 需用管理员身份打开文件资源管理器,重置 ACL 并勾选“替换子容器和对象的所有者”
别让 --extensions-dir 成为新坑
有人为避开默认路径,用 code --extensions-dir /path/to/dir 指定自定义插件目录,但 VS Code 不会自动创建路径,也不校验权限——目录不存在或不可写,就会报 “Unable to install extension”,错误极其模糊。
- 手动创建并赋权:
mkdir -p /path/to/dir(Linux/macOS)或mkdir /path/to/dir(PowerShell) - 再设权限:
chmod 755 /path/to/dir(Linux/macOS),或 Windows 下右键 → “安全” → 给当前用户“完全控制” - 绝对不要指向系统保护路径,例如
/usr/local、C:\Program Files,UAC/SELinux 仍会拦截
WSL 用户特别注意挂载点权限失效
在 WSL 中用 code . 打开 /mnt/c/Users/xxx/project 这类 Windows 路径,插件行为异常(Permission denied、不监听文件变更)不是 bug,而是 WSL 对 /mnt/c 的挂载默认不支持 Linux 权限模型和 inotify。
- 验证方式:执行
ls -l ~/.vscode/extensions,若显示?????????? ? ? ? ? ? extensions,说明元数据不可读 - 临时解法:把项目移到 WSL 原生路径,例如
~/project,插件立即正常 - 不要用
sudo code启动——这会让settings.json和extensions归属变成root,普通用户后续彻底写不了
Marketplace 连接失败?先排除本地权限链路
报 Failed to fetch 或进度条不动,很多人立刻怀疑网络,但真实情况常是:VS Code 成功从 marketplace 下载了 .vsix,却在解压到 extensions 目录时被权限拦住,于是前端只显示“网络请求失败”这种误导性信息。
- 查日志:Ctrl+Shift+P → 输入
Developer: Toggle Developer Tools→ 切换到 Console 页签,过滤extension或error,看是否有EACCES或EPERM - 删残留:
rm -rf ~/.vscode/extensions/*.incomplete(Linux/macOS)或手动删掉.vscode\extensions下所有以.incomplete结尾的文件夹(Windows) - 禁用自动更新干扰:
"extensions.autoUpdate": false加进settings.json,避免后台更新和前台安装冲突
真正卡住插件市场的,往往不是远端服务器,而是你电脑上那个几 KB 大小的 extensions 文件夹——它太小,容易被忽略;但它又太关键,一旦权限不对,所有后续动作都成空转。











