エラーの内容
VS Code マーケットプレイスから拡張機能をインストールしようとすると、次のようなエラーが表示されます:
EACCES: permission denied, mkdir '/home/youruser/.vscode/extensions/...'
または、拡張機能パネルのインストールボタンが数秒間くるくると回った後、赤いエラー通知が表示されます。出力パネルを確認すると、完全なメッセージが確認できます:
EACCES: permission denied
VS Code が拡張機能ディレクトリに書き込めない状態です。インストールは失敗します — エラーメッセージが表示される場合も、無音で失敗する場合もあります。
原因
VS Code は Linux と macOS では ~/.vscode/extensions に拡張機能を保存します。このエラーが発生する原因は、ほぼ次の2つのどちらかです:
~/.vscodeディレクトリの所有者がrootになっている — 過去にsudoを使って VS Code を起動したことが原因であることがほとんどです。- ディレクトリのパーミッションが厳しすぎて、自分のユーザーアカウントがアクセスできない状態になっている。
重要なポイント:sudo code . を一度でも実行すれば、~/.vscode の所有者が root に変わってしまいます。修正するまで、その後のすべての拡張機能インストールが失敗します。
手順ごとの修正方法
ステップ 1 — 拡張機能ディレクトリの所有者を確認する
ターミナルを開いて次のコマンドを実行します:
ls -la ~/.vscode/
所有者の列を確認してください。自分のユーザー名ではなく root と表示されている場合、それが問題の原因です:
drwx------ 3 root root 4096 Mar 18 10:00 extensions
ステップ 2 — 所有者を修正する
ディレクトリの所有権を自分のユーザーに戻します:
sudo chown -R $USER:$USER ~/.vscode
-R フラグは再帰的に適用されます — ~/.vscode とその中のすべてのファイル・フォルダが対象になります。$USER は現在のユーザー名に自動展開されるため、手動で入力する必要はありません。
ステップ 3 — ディレクトリのパーミッションを修正する
所有権を修正したら、パーミッションを正しく設定します:
chmod -R 755 ~/.vscode
モード 755 は、自分が完全な読み取り/書き込み/実行権限(7)を持ち、他のユーザーは読み取りと実行のみ(5)可能であることを意味します。このパーミッションで拡張機能は正常にインストールされます。
ステップ 4 — システム全体への VS Code インストールでエラーが発生する場合
一部の Linux ディストリビューションでは、VS Code が snap、apt、または rpm 経由でシステム全体にインストールされており、拡張機能ディレクトリが別の場所にある場合があります。Snap インストールの場合、拡張機能は通常 ~/snap/code/ 以下に保存されます。同じ方法で修正してください:
sudo chown -R $USER:$USER ~/snap/code/
拡張機能の実際の保存場所がわからない場合は、ls -la ~/.vscode/extensions/ と ls -la ~/snap/code/ を実行して、どちらが root 所有になっているか確認してください。
ステップ 5 — sudo を使った VS Code の起動をやめる
これがほとんどの場合の根本原因です。次のようにしていたなら:
# これはやめてください
sudo code .
今すぐやめましょう。通常のユーザーとして VS Code を起動してください:
# こちらを使ってください
code .
root 権限が必要なシステムファイルを編集する必要がある場合は、ターミナルで sudoedit /path/to/file を使うか、保存時に表示される VS Code の組み込み**「Root として保存」**プロンプトを使用してください。sudo code は絶対に使わないでください。
修正を確認する
- VS Code を完全に終了します。macOS の場合、ウィンドウを閉じるだけでは不十分です — Cmd+Q を使用してください。
- VS Code を通常通り(
sudoなしで)再起動します。 - Ctrl+Shift+X(Mac では Cmd+Shift+X)で拡張機能パネルを開きます。
- 任意の拡張機能(例:Prettier や GitLens)を検索して、「インストール」をクリックします。
赤い通知が表示されなければ成功です。ターミナルからも確認できます:
ls -la ~/.vscode/extensions/
新しい拡張機能のフォルダが表示され、所有者が root ではなく自分のユーザー名になっているはずです。
補足情報
変更前にパーミッションを理解する
chmod 755 が実際に何を意味するのかわからない場合は、ToolCraft の Unix Permissions Calculator を使うと、chmod の値を視覚的に確認できます。パーミッションビットをクリックするだけで、8進数の値と許可される操作が表示されます — コマンドを実行する前に確認できます。通常の 755/644 以外のパーミッションを設定する際にいつも活用しています。
複数ユーザー環境での拡張機能キャッシュの共有
開発チームが1台の Linux マシンを共有している場合、各ユーザーが個別に拡張機能を管理する代わりに、グループパーミッションを使った共有拡張機能ディレクトリをセットアップできます:
sudo mkdir -p /opt/vscode-extensions
sudo chown -R root:developers /opt/vscode-extensions
sudo chmod -R 775 /opt/vscode-extensions
起動時に VS Code にそのディレクトリを指定します:
code --extensions-dir /opt/vscode-extensions .
developers グループのメンバー全員が共有キャッシュに拡張機能をインストールできます。重複ダウンロードもなく、パーミッションの問題も発生しません。
ディスククォータの問題を除外する
大学のサーバーや企業のワークステーションなどの管理されたシステムでは、ディスククォータを超過した場合にも EACCES: permission denied が表示されることがあります。誤解を招くエラーメッセージです。次の2つのコマンドで確認してください:
df -h ~
quota -u $USER
ホームパーティションが 100% に達しているか、クォータを超過している場合は、先にディスクの空き容量を確保してから、拡張機能のインストールを再試行してください。

