# ExitPlanMode

プランモード中に作成された実装プランをユーザーの承認のために提出し、承認された場合はセッションをプランモードから遷移させて編集を開始できるようにします。

## 使用タイミング

- `EnterPlanMode` 中に書かれたプランが完成し、レビューの準備ができた。
- タスクは実装中心 (コードや設定の変更) であり、純粋な調査ではないため、明示的なプランが適切である。
- すべての前提となる読み込みと分析が完了し、ユーザーが決定する前にさらなる調査は不要である。
- アシスタントが具体的なファイルパス、関数、ステップを列挙した — 単なる目標ではない。
- ユーザーがプランを見せるよう依頼した、またはプランモードのワークフローが編集ツールに引き渡されようとしている。

## パラメータ

- `allowedPrompts` (array, optional): ユーザーが承認画面で入力してプランを自動承認または変更できるプロンプト。各要素はスコープ付きの権限 (例えば操作名と、それが適用されるツール) を指定します。デフォルトの承認フローを使用する場合は未設定のままにします。

## 例

### 例 1: 標準的な提出

プランモード内で認証リファクタリングを調査し、プランファイルをディスクに書き込んだ後、アシスタントは引数なしで `ExitPlanMode` を呼び出します。ハーネスはプランを正規の場所から読み込み、ユーザーに表示して承認または拒否を待ちます。

### 例 2: 事前承認されたクイックアクション

```
ExitPlanMode(allowedPrompts=[
  {"tool": "Bash", "prompt": "run tests"},
  {"tool": "Bash", "prompt": "install dependencies"}
])
```

ユーザーが日常的なフォローアップコマンドに事前に権限を付与できるようにすることで、実装中にアシスタントが各権限プロンプトで一時停止する必要がなくなります。

## 注意事項

- `ExitPlanMode` は実装スタイルの作業でのみ意味があります。ユーザーのリクエストがファイル変更のない調査や説明タスクである場合は、プランモードを経由せずに直接回答してください — プランモードを終了するためだけにそこに入らないでください。
- このツールを呼び出す前に、プランはすでにディスクに書き込まれている必要があります。`ExitPlanMode` はプラン本体をパラメータとして受け取りません。ハーネスが期待するパスから読み込みます。
- ユーザーがプランを拒否した場合、プランモードに戻ります。フィードバックに基づいて修正し、再度提出してください。プランが承認されていない間はファイル編集を開始しないでください。
- 承認により、プランモードを終了し、プランで説明されたスコープに対して変更ツール (`Edit`、`Write`、`Bash` など) を使用する権限が付与されます。後でスコープを拡大するには新しいプランまたはユーザーの明示的な同意が必要です。
- このツールを呼び出す前に「このプランはどうですか？」と尋ねるために `AskUserQuestion` を使用しないでください — プラン承認を要求することはまさに `ExitPlanMode` が行うことであり、ユーザーは提出されるまでプランを見ることができません。
- プランは最小限で実行可能に保ってください。レビュー担当者は 1 分以内にざっと読んで、何が変更されるかを正確に理解できるはずです。
- 実装途中でプランが間違っていたと気付いた場合、黙って逸脱するのではなく、停止してユーザーに報告してください。プランモードに再度入ることは有効な次のステップです。
