macOS Sequoia以降のバージョンでは、アプリケーションが初めてローカルネットワーク上のデバイスへのアクセスを試みた際にシステムプロンプトが表示されます。これらの決定は永続的なものとして意図されていますが、多くのアプリケーションはインストールパスが変更されたり、アップデートのために一時フォルダを利用したりするため、繰り返しプロンプトをトリガーします。これはChromeやBraveのようなChromiumベースのブラウザにおける一般的な動作です。Mobile Device Management(MDM)ペイロードや一般的なコマンドラインツールを通じてこれらの権限を事前に拒否する標準的な方法がないため、ユーザーは繰り返し表示されるダイアログに直面し、プライバシー設定が重複したエントリで乱雑になることがよくあります。

`dontallow`ツールは、`UserNotificationCenter`プロセスを監視する軽量なエージェントとして動作することでこの問題に対処します。このツールは、そのプロセスからのウィンドウ作成イベントを特に監視するアクセシビリティ・オブザーバーを登録します。アプリがローカルネットワーク上のデバイスを見つけることを許可するかを尋ねるプロンプトを検出すると、ツールはテキスト内容を確認し、「許可しない」ボタンのクリックを自動的に実行します。開発者は、アイドル時にCPUをゼロで使用し、launchdエージェントとして実行することで再起動後も動作するようにツールを設計しました。安全性を確保するため、このツールは「許可する」オプションを選択することはありません。代わりに、ユーザーが特定のアプリを手動でホワイトリストに追加したり、AirPlayやChromecastなどの機能に対して正当なアクセスを許可する必要がある場合に一時的にアクティビティを停止したりするためのメカニズムを提供します。

macOSにおけるdontallowユーティリティのGitHubリポジトリページ。
dontallowプロジェクトは、ローカルネットワークの権限プロンプトの拒否を自動化する軽量なエージェントを提供します。github.com

この画像は、記事で説明されているdontallowツールのソースリポジトリを表しています。

摩擦を軽減する上で効果的である一方で、このユーティリティはmacOSのアクセシビリティ権限に依存しており、この権限はソフトウェアに対してUI操作に関する大きな制御権を与えます。これにより、利便性とセキュリティの間のトレードオフが生じます。このようなツールを使用するには、未検証のサードパーティ製バイナリに高度な権限を付与する必要があります。さらに、このツールは基礎となるシステムIDではなくダイアログ文字列を照合することで動作するため、現在は英語のローカライズ版のmacOSに限定されています。これらのプロンプトを拒否する必要があるものの、よりきめ細かな透明性を求めるユーザーは、依然として課題に直面する可能性があります。現在の実装は、なぜ特定のアプリケーションが最初にリクエストをトリガーしたのかを説明するのではなく、自動的な拒否に焦点を当てているためです。