2026年DeepSeek Harness Seatbeltサンドボックスの意味
[最終更新:2026年8月18日。公式リポジトリ、sandbox関連ドキュメント、AppleのmacOS安全資料を確認しています。]
公式ドキュメントでは、DeepSeek Harnessのsandbox機能は3つのモード、read-only、workspace-write、danger-full-accessを持ちます。(github.com)
ここから導ける結論は明確です。SeatbeltはmacOS上のプロセスにファイル操作の制約を適用する基盤ですが、Agent全体の完全な隔離ではありません。 低リスクのリポジトリで許可パス、拒否パス、子プロセス、通信、認証情報を先に検証し、結果を確認してから権限範囲を広げるべきです。
この内容は、Mac上でDeepSeek Harnessにコマンドを実行させる開発者、Agentセキュリティの境界を評価する安全担当者、クラウドMacの試用範囲を決める技術責任者に向いています。個人用Macの通常作業だけを扱う場合は、まず専用ワークスペースの分離から確認してください。
Seatbeltの位置付け
DeepSeek Harnessの公式パッケージ構成では、sandboxは「プロセス閉じ込め」の機能として定義されています。sandbox-localはmacOSでSeatbeltを使い、実行前に利用可能なバックエンドを確認します。使えるバックエンドがない場合は、制約なしで黙って実行するのではなく、SANDBOX_UNAVAILABLEとして失敗する設計です。(github.com)
ただし、ここで確認できるのは実装上の対応範囲です。特定の配布パッケージ、起動プロファイル、設定ファイルでSeatbeltが有効になっているかは、別に確認しなければなりません。公式リポジトリのディレクトリ名にSeatbeltが存在することだけで、利用中の環境に自動適用されているとは断定できません。
AppleのApp Sandboxも、アプリの権限をファイル、通信、ハードウェアなどの単位で制限する仕組みです。しかし、DeepSeek HarnessのSeatbeltバックエンドと、アプリ配布時のApp Sandboxを同一視するのは危険です。適用されるプロセス、プロファイル、許可方式が異なるためです。(developer.apple.com)
5つの実行場面
判断を先送りしないため、Seatbeltを単独の「安全機能」として見るのではなく、実際の作業場面に分けて評価します。
| 実行場面 | Seatbeltが担う範囲 | 別途確認する制御 | 初回判断 |
|---|---|---|---|
| ファイル読み書き | 指定モードのファイル効果 | ワークスペース、シンボリックリンク、成果物 | 低リスクの複製リポジトリで開始 |
| ビルドとスクリプト | 子プロセスへ適用される実行制約 | コマンド承認、依存関係、生成ツール | 承認を維持 |
| 外部ツールとMCP | 呼び出し元プロセスの制約 | 通信先、プラグイン権限、送信データ | 無害な接続先で確認 |
| APIキー | ファイル操作の一部制限 | 環境変数、設定ファイル、ログ、ローテーション | 本物のキーを使わない |
| クラウドMac | 個人環境との混用を減らす | 接続口、OSアカウント、共有範囲、停止手順 | 機密度で専用化を判断 |
この表で重要なのは、Seatbeltがすべての列を埋めるわけではない点です。公式仕様でも、sandboxのモードはファイル効果を扱い、ネットワークやプロセス可視性は別の領域とされています。
リポジトリとワークスペース
DeepSeek Harnessでは、セッションの作業ディレクトリと、OS側のプロセス制約が別の制御層として存在します。workspace-writeはセッションのワークスペースを基準に書き込みを許可しますが、Seatbelt側には一時領域などの追加許可もあります。公式実装では、/tmpやmacOSの一時ディレクトリが扱われます。(github.com)
したがって、確認対象は「プロジェクト内に書けるか」だけでは不十分です。次の3種類を分けて記録します。
- 許可されるパス:検証用ワークスペース、必要な一時領域。
- 拒否されるパス:ホーム直下の別ディレクトリ、機密資料の複製先。
- 生成物の証拠:作成時刻、所有者、パス、終了コード、標準エラー出力。
シンボリックリンクも見落とせません。公式仕様はワークスペースのルートをファイルシステム上の実体に合わせて正規化しますが、実際のリポジトリ構成ではリンク、親ディレクトリ、ビルドキャッシュが境界確認を複雑にします。(github.com)
ビルドと子プロセス
Agentが直接実行するコマンドだけを見ていると、操作範囲を過小評価します。npm、pnpm、make、Xcodeのビルドスクリプト、テストランナーなどは、別の子プロセスや補助ツールを起動します。
Seatbeltは、実際に適用されたポリシーの範囲でプロセスのファイル効果を制限します。しかし、「このコマンドが業務上安全か」「依存パッケージが信頼できるか」「生成物を公開してよいか」までは判断しません。これはAgent安全の設計責任として残ります。
初回検証では、次の順序が現実的です。
- 本番リポジトリではなく、再生成できる検証用リポジトリを作成します。
- DeepSeek Harness、macOS、プリセット、sandbox関連パッケージのバージョンを保存します。
read-onlyで読み取りとビルド準備を試します。workspace-writeで変更先を限定し、生成物を確認します。- 削除、外部パスへの書き込み、権限変更を承認付きで試します。
- 拒否が期待どおりでない場合は、危険なツールを停止して環境を戻します。
確認用のコマンドは、実際の秘密情報を含めない形にします。
printf 'workspace=%s\n' "$PWD"
printf 'home=%s\n' "$HOME"
printf 'path-check\n' > ./sandbox-proof.txt
printf 'outside-check\n' > "$HOME/seatbelt-proof.txt"
期待する出力例は、ワークスペース内の作成成功と、外部パスの拒否が分かれることです。
workspace=/tmp/dsh-safe-repo
path-check: success
outside-check: denied
ただし、標準エラーの文言や終了コードはバックエンドと実装版によって変わります。Seatbeltでは拒否の典型的な分類にEPERMが使われると公式仕様に記載されていますが、ログ全体を固定値として扱わず、バージョンと実行条件を同時に保存してください。(github.com)
通信と外部ツール
Seatbeltのファイルポリシーを、通信遮断の仕組みと誤認してはいけません。公式のsandboxモード自体は、ネットワーク制御を語彙に含めていません。AppleのApp Sandboxでは外向き通信の許可を別のエンタイトルメントで扱いますが、それもDeepSeek HarnessのSeatbelt設定が外部接続を一律に遮断することを意味しません。
MCPやプラグインを利用する場合は、少なくとも次を別々に確認します。
- ローカルプロセスがどの権限で起動するか。
- 外部接続先が固定されているか。
- 送信データにソースコードや環境変数が混入しないか。
- プラグインが別の子プロセスを起動しないか。
テスト先は、機密性のない固定データを受け取るエンドポイントに限定します。実際のAPIキー、顧客データ、社内リポジトリの内容を送ってはいけません。
認証情報の境界
Seatbeltが有効でも、環境変数、設定ファイル、シェル履歴、ビルドログ、セッションログに認証情報が残る可能性はあります。DeepSeek Harnessの公式パッケージ構成にも、認証情報を扱う機能と環境変数・.envを扱うプロバイダーが別機能として存在します。(github.com)
安全設計では、次の4点を分離します。
- 参照方法:環境変数、キーチェーン、短期トークンのどれを使うか。
- 作用範囲:読み取り専用か、書き込みや公開まで許すか。
- ログ処理:標準出力、エラー、監査ログでマスクされるか。
- 失効手順:漏えいを疑った時に、誰がどの順番で無効化するか。
AppleはKeychain Servicesを、パスワード、鍵、証明書などを保管する仕組みとして案内しています。ただし、Agentにキーチェーン参照権限を与えれば安全になるわけではありません。参照対象を限定し、テストでは無効化済みのダミー資格情報だけを使うべきです。(developer.apple.com)
FAQ
macOSでの自動適用
DeepSeek Harnessの公式dsh-sandbox-localは、macOSではSeatbeltを選ぶ実装です。一方、利用中のリリースでバックエンドが読み込まれ、対象コマンドに適用されたかは、起動プロファイルと実行ログで確認する必要があります。自動適用を前提に、個人用Macの全ファイルをAgentへ公開する判断は避けてください。
他のディレクトリへのアクセス
Seatbeltはポリシーに従ってファイル効果を制限できますが、workspace-writeは指定ワークスペース以外の一時領域を扱う場合があります。また、読み取りと書き込みは同じ境界ではありません。外部ディレクトリへの書き込み、リンク経由の参照、生成物の出力先を個別に試験し、拒否結果を記録してください。
コマンド承認の必要性
サンドボックスは、コマンドの目的や依存関係の安全性を判定しません。削除、公開、認証情報の利用、外部サービスへの送信、権限変更は、ファイル制約があっても別の承認対象です。通常操作は最小権限で実行し、必要な場合だけ明示的な昇格を行う設計が適しています。
クラウドMacの検証方法
クラウドMacでは、まず遠隔接続の入口、OSアカウント、ワークスペース、プラグイン、プロセス制約を分けて受け入れ確認します。無害なファイル、子プロセス、通信先、ダミー資格情報を使い、成功と拒否の両方を保存します。検証に失敗した場合、危険なツールを止めて環境を破棄または再作成できる状態が必要です。
クラウドMacの責任分界
独立したクラウドMacは、個人のホームディレクトリや日常業務とDeepSeek Harnessを混在させにくくする点で有効です。しかし、独立環境だから安全になるわけではありません。接続用アカウントが過剰権限を持つ、共有ワークスペースを使う、プラグインを無制限に追加する、ログに秘密情報を残す、といった問題は別に残ります。
プロジェクトの機密度が低く、短期間の互換性確認だけなら、既存Mac上の複製リポジトリでも構いません。継続稼働、複数人利用、顧客コード、長時間のバックグラウンド処理が含まれる場合は、独立した環境へ移し、接続入口と停止手順まで受け入れ確認を行うべきです。
Macの調達方法を比較する場合は、SFTPMACのMacレンタル案内を、Seatbeltの実装確認とは別の運用資料として参照できます。レンタルを選んでも、ユーザーアカウント、ワークスペース、プラグイン、プロセス方針を個別に設定・記録する必要があります。
Macを使った検証環境の準備条件を整理する場合は、一般的な調達手順ではなく、利用期間、接続方式、アカウント分離、終了時のデータ消去を先に確認してください。Seatbeltの有効性と、環境の引き渡し条件は別の受け入れ項目です。環境の受け入れ項目を事前に整理する場合は、Mac miniの注文手順に関する案内も、接続方式や利用者分離を確認する補助資料として扱えます。
初回検証の記録
公開後の最初の試用では、次の記録を1つの受け入れ資料にまとめます。
- 公式リポジトリの確認日とコミットまたはリリース情報。
- macOS、DeepSeek Harness、sandbox関連パッケージ、プリセットのバージョン。
read-onlyとworkspace-writeの設定値。- 許可パス、拒否パス、書き込み結果。
- 子プロセスとスクリプトの起動結果。
- 無害な通信先への接続結果。
- ダミー資格情報の参照とログ出力。
- 失敗時にツールを停止し、環境を回退する担当者と手順。
Seatbeltのバックエンドが利用できない場合に、制約なしで処理を続けないことも重要です。公式ドキュメントは、利用可能なバックエンドがない場合にフェイルクローズする設計を説明しています。(github.com)
現在の環境が、ローカルMacの共有作業領域、広いネットワーク権限、長期保存される認証情報に依存しているなら、Seatbeltだけでは不足します。従来の構成は、個人データとの混在、承認ログの不足、失敗時の再現性不足が弱点になりやすいです。短期の検証であっても、独立したMac環境をSFTPMACで用意し、ファイル、プロセス、通信、認証情報の境界を先に受け入れ確認する方が、試用後の回収作業を抑えやすくなります。
DeepSeek Harnessを本番コードへ広げる前に、まずは安全受け入れと回退手順を文書化してください。Seatbeltは有力なプロセス制約の入口ですが、完全な安全性の証明ではありません。