📁
macOS Tahoe (v26)で"Visual Code Studioで開く"を作る
この記事を書いた理由
macOS 26以前ではFinderのツールバーでVSCodeを開けるAutomatorを使用していたのですが、仕様変更によりツールバーにAutomatorを設置できなくなってしまい動かず、さらに元からあるクイックアクションの"Visual Studio Codeで開く"も使えないためそれの代替案を考え、同じ悩みで困っている方の手助けになればと思いこの記事を書きました。
結論
Automatorは使用せず、ショートカットを使用して、フォルダ右クリック→クイックアクション→VSCodeで開くを実行できるようにしました。
ショートカットを作成
ショートカット.appを開き、ショートカットを新規作成します。
名称はVSCodeで開くなど好きな名前を設定してください。

右上のⓘをクリックし、Finderを有効化する

受け取る内容を"フォルダ"のみにする
シェルスクリプトを実行を追加し、以下のコードを入力

# PATH補強(Shortcuts経由だと PATH が最小限になりがち)
PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
# 現在のログインユーザー名を取得
USER_NAME="$(stat -f %Su /dev/console)"
USER_HOME="/Users/$USER_NAME"
# codeコマンドが使える場合はそれを優先
if command -v code >/dev/null 2>&1; then
sudo -u "$USER_NAME" /usr/bin/env -i HOME="$USER_HOME" PATH="$PATH" \
code -n \
--user-data-dir="$USER_HOME/Library/Application Support/Code" \
--extensions-dir="$USER_HOME/.vscode/extensions" \
"$@"
else
sudo -u "$USER_NAME" /usr/bin/open -na "Visual Studio Code" --args \
--user-data-dir="$USER_HOME/Library/Application Support/Code" \
--extensions-dir="$USER_HOME/.vscode/extensions" \
"$@"
fi
詳細設定は以下のように設定する
シェル:zsh /bin/zsh
入力:ショートカットの入力
入力を渡す方法:引数として
管理者として実行:✅
動かしてみる

作成したショートカットが表示され、実行するとVSCodeが立ち上がり、開くことができました。
つまづいたこと
完成のコードを入力する前に以下のコードで試したらエラーが出ました。
エラーコード
PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
if command -v code >/dev/null 2>&1; then
/usr/bin/env -i HOME="$HOME" PATH="$PATH" code -n "$@"
else
/usr/bin/open -n -a "Visual Studio Code" "$@"
fi

日本語訳
プログラムのユーザーデータを書き込めません。
システムエラーが発生しました (EACCES: アクセス拒否,
mkdir/var/root/Library/ApplicationSupport/Code/CachedData/385651c938df8a906869babee516bffdOddb9829')以下のディレクトリが書き込み可能であることを確認してください:~/Library/Application Support/Code~/vscode/extensions
エラー直すのに試した方法
壊れた権限を直す
sudo chown -R "$USER" ~/Library/Application\ Support/Code ~/.vscode
スクリプトを書き換える(完成系と同じものです)
# シェル: /bin/zsh
# 入力を引数として渡す: ON
# PATH補強(Shortcuts経由だと PATH が最小限になりがち)
PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
# 現在のログインユーザー名を取得
USER_NAME="$(stat -f %Su /dev/console)"
USER_HOME="/Users/$USER_NAME"
# codeコマンドが使える場合はそれを優先
if command -v code >/dev/null 2>&1; then
sudo -u "$USER_NAME" /usr/bin/env -i HOME="$USER_HOME" PATH="$PATH" \
code -n \
--user-data-dir="$USER_HOME/Library/Application Support/Code" \
--extensions-dir="$USER_HOME/.vscode/extensions" \
"$@"
else
sudo -u "$USER_NAME" /usr/bin/open -na "Visual Studio Code" --args \
--user-data-dir="$USER_HOME/Library/Application Support/Code" \
--extensions-dir="$USER_HOME/.vscode/extensions" \
"$@"
fi
Discussion