DeepSeekのdsh-superagentプロトタイプ、OSユーザー権限でコマンドを実行
DeepSeekがオープンソースのコーディングエージェントのプロトタイプを公開しました。このツールはオペレーターのシステム権限でシェルコマンドを実行するため、厳格な分離環境が必要です。
英語の原文から自動翻訳されました。
DeepSeekは、GitHubおよびFeishuと連携してプルリクエストを生成するMITライセンスの研究用プロトタイプ「dsh-superagent」を公開しました。2026年11月初頭にリリースされたこのツールは、チャットスレッドを監視し、リポジトリ内でコード変更を直接実行することでソフトウェア開発タスクを自動化するように設計されています。人間の注意が必要なオーバーヘッドを削減すると約束していますが、その実行モデルはエージェントに広範なシステムレベルのアクセス権限を付与するため、これを実行する開発者には慎重な運用セキュリティが求められます。
何が起きたか
新しいリポジトリでは、単一のGitHubリポジトリにスコープされた能動的なコーディングエージェントについて説明しています。許可されたユーザーがエージェントに明示的に指示するか、既存のチケットに対するフォローアップを行うと、システムは「Ticket」と呼ばれるワークアイテムを作成します。その後、隔離されたセッションとフォルダ内でリクエストを処理し、最終的には結果(プルリクエストやさらなる確認事項など)を元の会話スレッドに返信します。セットアッププロセス自体も自動化されており、SETUP.mdファイルに基づく一連の質問を通じてオペレーターの設定をガイドします。
DeepSeekはこのリリースを明確に研究用プロトタイプとして位置づけ、社内生産バージョンとは大きく異なることを指摘しています。ドキュメントでは、人間の介入を最小限に抑えつつ、出力価値を最大化するという原則を強調しています。エージェントはリクエストの受信を確認し、実行中は沈黙を保ち、結果が準備できた場合、判断が必要になった場合、またはブロッキング問題が発生した場合のみ再稼働します。Webパネルは人間によるレビューが必要な項目への可視性を提供し、オペレーターが頻繁なポーリングなしに進捗を監視できるようにします。
仕組み
システムの核となるのは、明示的なリクエスト、推定コンテキスト、無視される入力を区別する認可および実行モデルです。各受信メッセージには強度レベルが割り当てられます。明示的なリクエストは、許可された人物がエージェントに直接話しかけるか、アクティブなTicketに関連するスレッドを継続する場合にのみ発生します。推定リクエストは、Ticketに対するフォローアップを行う未登録ユーザーや、特定の許可リストにあるボットから発生します。エージェントに話しかけない未登録ユーザーからのメッセージを含むその他のすべての入力は、デフォルトで無視されます。この構造により、ランダムなノイズや不正なアクターによるワークフローのトリガーを防ぎます。
誰も明示的に依頼していない能動的な作業は、書かれたルールを必要とし、acceptモード設定に依存します。デフォルトのobserveモードでは、エージェントは潜在的なタスクを評価し、何も実行せずに本来行うはずだった内容を記録します。autoモードでは、肯定的な評価が即時の実行をトリガーします。承認されたすべてのTicketには、ルール、送信者、ポリシーバージョンなど、なぜそれが許可されたかを記録する「Mandate」が付随します。人が停止コマンドを発行した場合や安全チェックが失敗した場合にはこのMandateを取り消すことができるため、権限は動的かつ可逆的であることが保証されます。
重要なのは、実行環境がオペレーターのOSユーザーとして承認なしでコマンドを実行する点です。各Ticketには一意のワーカーセッションとフォルダが割り当てられますが、基礎となるプロセスはエージェントを実行しているユーザーアカウントの特権を引き継ぎます。つまり、エージェントはそのユーザーが利用可能なSSHキー、クラウド認証情報、他のリポジトリへのアクセス権を持っています。シェルコマンドは5秒後にバックグラウンドへ移動し、バックグラウンドジョブは30分後に強制終了されますが、初期のアクセスレベルは広範です。ドキュメントには「Executor sessions run commands without approval as the operator's OS user.」(エグゼクターセッションは、オペレーターのOSユーザーとして承認なしでコマンドを実行します)と記載されています。
主要な詳細
- ライセンスとステータス: このプロジェクトはMITライセンスであり、DeepSeekの内部ツールとは異なる研究用プロトタイプとしてラベル付けされています。
- 実行特権: ワーカーセッションはオペレーターのOSユーザーとしてシェルコマンドを実行し、すべてのローカル権限と認証情報を引き継ぎます。
- 認可レベル: リクエストは明示的、推定的、または不受理に分類され、未登録ユーザーを無視する厳格なデフォルト設定があります。
- 能動モード: デフォルトのobserveモードは意図したアクションを記録しますが実行はせず、autoモードは自動的に作業を実行します。
- Mandateシステム: 各タスクには取り消し可能な権限レコードがあり、一時停止中の作業を再開する前に現在のポリシーに対してチェックが行われます。
- 入力分離: メッセージやコメントは入力データとしてのみ機能し、権限構造を変更することはできないため、一部のPrompt Injectionリスクを軽減します。
なぜ重要なのか
ソフトウェアエンジニアやテクニカルリードにとって、このプロトタイプはAIエージェント設計における重要な緊張関係、つまり利便性とセキュリティのトレードオフを浮き彫りにしています。プルリクエストの自動化やルーチンなコーディングタスクの処理能力は非常に魅力的ですが、ホストユーザーとしてコマンドを実行するという決定は重大なリスクをもたらします。攻撃者がチャットインターフェースを制御したり、エージェントロジックの脆弱性を悪用したりした場合、サービスを実行している開発者と同等の特権で任意のコマンドを実行できる可能性があります。これには機密性の高い環境変数、SSHキー、ローカルファイルシステムへのアクセスが含まれます。
研究用プロトタイプとDeepSeekの内部バージョンの区別は、同社が生産環境においてここには存在しない追加の保護措置を実装している可能性が高いことを示唆しています。このコードを試験する開発者は、セキュリティモデルが最小限であると想定しなければなりません。エージェントの分離責任は完全にオペレーターにあります。これはプラットフォームプロバイダーから個々のチームへセキュリティ負担を移転させるものであり、システム管理と最小権限原則に対する成熟した理解を要求します。
対策
- エージェントを、個人のSSHキーやクラウド認証情報へのアクセスがない専用仮想マシンまたはコンテナ上で実行してください。
- エージェントプロセスの実行専用に、制限付き権限を持つ別のOSユーザーを作成してください。
- エージェントが使用するGitHubトークンのスコープを、対象リポジトリ単体の読み取りおよび書き込みアクセスみに限定してください。
- 最初はacceptモードをobserveに設定し、提案されたすべてのアクションを確認してからautoモードに切り替えてください。
- 許可リストを信頼できるチームメンバーのみに厳格に制限し、未登録ユーザーからの言及はignoreに設定してください。
- セットアップスクリプトを実行する前に、docs/000、docs/002、docs/003のドキュメントファイルを徹底的に読んでください。



