Skip to content

macOSサンドボックスでApple Eventsを許可するsandbox.allowAppleEvents設定

原文(日本語に翻訳)

サンドボックス化されたコマンドがmacOS上でApple Eventsを送信できるようにするオプトイン設定sandbox.allowAppleEventsを追加。また、Apple Eventsエンタイトルメントを追加することで、macOSでopenosascript、およびブラウザベースの認証フローがエラー-600で失敗する問題を修正。

原文(英語)

Added sandbox.allowAppleEvents opt-in setting that lets sandboxed commands send Apple Events on macOS.

Fixed open, osascript, and browser-based auth flows failing with error -600 on macOS by adding the Apple Events entitlement.

概要

macOSのサンドボックスモードでosascriptopenコマンドを実行したり、ブラウザ経由のOAuth認証を行う場合、Apple Eventsの送信権限が必要です。この設定以前は、サンドボックス環境でこれらのコマンドがエラーコード-600(「アプリケーションが起動していません」)で失敗していました。sandbox.allowAppleEventsをオプトイン設定として有効化することで、セキュリティを維持しつつ必要なApple Events通信を許可できます。

基本的な使い方

~/.claude/settings.jsonに以下の設定を追加します。

json
{
  "sandbox": {
    "allowAppleEvents": true
  }
}

プロジェクト固有の設定として.claude/settings.jsonにも記述できます。

json
{
  "sandbox": {
    "allowAppleEvents": true
  }
}

設定後、Claude Codeをサンドボックスモードで起動すると、Apple Eventsが有効になります。

bash
# サンドボックスモードで起動(allowAppleEvents: true 設定済みの場合)
claude --sandbox

# osascriptが正常に動作するようになる
# open コマンドも正常に使えるようになる

実践例

osascriptでmacOSアプリを自動操作する

Apple ScriptはmacOSアプリの自動操作に広く使われます。sandbox.allowAppleEvents: trueを設定することでサンドボックス環境でも動作します。

bash
# Finderで特定フォルダを開く
osascript -e 'tell application "Finder" to open POSIX file "/Users/user/Projects"'

# ダイアログを表示する
osascript -e 'display dialog "ビルドが完了しました" buttons {"OK"} default button "OK"'

# 現在のアプリケーションを取得する
osascript -e 'tell application "System Events" to get name of first process whose frontmost is true'
json
// ~/.claude/settings.json
{
  "sandbox": {
    "allowAppleEvents": true
  }
}

ブラウザベースのOAuth認証フローを使う

GitHub、Google、その他のサービスへのOAuth認証では、ブラウザを起動して認証コードを受け取る仕組みが一般的です。サンドボックスモードでもこのフローを動作させるにはallowAppleEventsが必要です。

bash
# GitHubへのOAuth認証(ブラウザが起動する)
gh auth login

# Google Cloud CLIの認証
gcloud auth login

# その他のOAuth対応CLIツール
some-cli auth --browser

これらのコマンドは内部でopenコマンドを使ってブラウザを起動します。allowAppleEventsが無効だとエラー-600が発生し、ブラウザが起動できません。

openコマンドでファイルやURLを開く

bash
# URLをデフォルトブラウザで開く
open https://docs.anthropic.com

# ファイルをデフォルトアプリで開く
open ./report.pdf

# 特定のアプリでファイルを開く
open -a "Visual Studio Code" ./project

# Finderでディレクトリを開く
open ./src

openコマンドもApple Eventsを内部的に使用しており、サンドボックス環境ではallowAppleEvents: trueが必要です。

CI/CDやスクリプトでの通知送信

macOSのスクリプトからシステム通知を送信したり、特定のアプリに連携するユースケースでも活用できます。

bash
# ビルド完了時にシステム通知を表示
osascript -e 'display notification "ビルドが完了しました" with title "Claude Code"'

# Slackデスクトップアプリにメッセージを送る(Apple Script経由)
osascript <<EOF
tell application "Slack"
  activate
end tell
EOF

注意点

  • macOS専用の設定です。 LinuxやWindowsではsandbox.allowAppleEventsは無効(または無視)されます。
  • オプトイン設定です。 セキュリティ上の理由からデフォルトは無効(false)です。必要な場合のみ有効にしてください。
  • エラー-600について。 macOSのエラーコード-600は「アプリケーションが起動していない」または「Apple Eventsの送信が許可されていない」ことを意味します。このエラーが発生した場合はsandbox.allowAppleEvents: trueを設定することで解決できることがあります。
  • サンドボックスを使わない場合は不要です。 サンドボックスモードを有効にしていない場合、この設定は不要です。Apple Eventsは通常のモードでは制限されません。
  • セキュリティへの影響。 Apple Eventsを許可すると、サンドボックス化されたコマンドが他のmacOSアプリケーションに対してコマンドを送信できるようになります。信頼できるスクリプトや用途に限定して使用することを推奨します。
  • 設定の適用範囲。 ~/.claude/settings.jsonに設定すると全プロジェクトに適用されます。特定プロジェクトのみに限定する場合はプロジェクトの.claude/settings.jsonに記述してください。
json
// グローバル設定(全プロジェクトに適用)
// ~/.claude/settings.json
{
  "sandbox": {
    "allowAppleEvents": true
  }
}

// プロジェクト固有の設定
// /path/to/project/.claude/settings.json
{
  "sandbox": {
    "allowAppleEvents": true
  }
}

関連情報