Claude Codeの「/goal」コマンド解説
AIコーディングアシスタントのClaude Codeに、新たに「/goal」コマンドが追加されました。ユーザーが完了条件を設定するとClaudeがその条件を満たすまで自動的に作業を継続し、テストの全通過・設計書の全実装といった大型タスクを途中で指示を出すことなく完走させられます。
【出典元】Keep Claude working toward a goal | Claude Code Docs
「/goal」コマンドの概要
「/goal」コマンドは、ユーザーが特定の完了条件を設定し、Claudeがその条件を満たすまで自動的に作業を続ける機能です。
各ターンが終了するたびに小型・高速モデル(デフォルトはHaiku)が条件の充足を確認し、満たされていない場合は次のターンを自動的に開始します。条件が満たされると、ゴールは自動的にクリアされます。
この機能は、次のような明確な終了状態を持つ作業に適しています。
- モジュールを新しいAPIに移行し、すべての呼び出し箇所がコンパイルされ、テストが通過するまで
- 設計ドキュメントを実装し、すべての受け入れ基準が満たされるまで
- 大きなファイルを焦点を絞ったモジュールに分割し、それぞれがサイズ制限内に収まるまで
- ラベル付きのIssueバックログを処理し、キューが空になるまで
他の自律ワークフローとの比較
Claude Codeには自律的にセッションを継続するアプローチが複数あります。「次のターンをいつ始めるか」と「いつ止まるか」の2軸で整理すると以下の通りです。
| アプローチ | 次のターンが始まるタイミング | 停止条件 | スコープ |
|---|---|---|---|
| /goal | 前のターンが終了したとき | モデルが条件の充足を確認したとき | 現在のセッションのみ |
| /loop | 設定した時間間隔が経過したとき | 手動停止、またはClaudeが完了と判断したとき | 現在のセッションのみ |
| Stop hook | 前のターンが終了したとき | 自作スクリプトまたはプロンプトが決定 | 設定ファイルのスコープ全体 |
| auto mode | (新しいターンは開始しない) | Claudeが1ターン内で完了と判断したとき | 現在のターン内のみ |
/goalはセッション限定のショートカットで、コマンド一行で条件を設定できます。Stop hookは設定ファイルに記述するため、セッションをまたいでより永続的に適用されます。
/goalとauto modeの組み合わせが特に有効です。auto modeで1ターン内のツール承認を自動化し、/goalでターンをまたぐ繰り返しを自動化することで、大型タスクを完全に無人で走り切れます。
ゴールの設定と条件の書き方
/goalの後に満たしたい条件をテキストで入力して実行します。既にゴールがアクティブな場合、新しい内容で上書きされます。
/goal all tests in test/auth pass and the lint step is clean
ゴールを設定すると条件がそのまま指示として扱われ、即座にターンが開始されます。別途プロンプトを送信する必要はありません。アクティブ中は「◎ /goal active」インジケーターに実行時間が表示され、各ターン後に評価モデルが短い判定理由を返します。
評価モデルは会話のトランスクリプトのみを参照し、ファイルの読み取りやコマンドの独自実行は行いません。そのため「Claudeが実行した結果がトランスクリプトに現れる」形で条件を記述することが重要です。効果的な条件文の3要素は次の通りです。
| 要素 | 説明 | 例 |
|---|---|---|
| 計測可能な終了状態 | ○×が明確な1つの結果を指定する | テスト結果・ビルドの終了コード・ファイル数 |
| 確認方法の明示 | Claudeが実行して証明できるコマンドを添える | npm testが0で終了、git statusがクリーン |
| 守るべき制約 | 途中で変えてはいけない要件を明示する | 他のテストファイルは変更しない |
条件文の最大文字数は4,000字です。「or stop after 20 turns」のようにターン数の上限を含めることで、条件が達成できない場合の無限ループを防止できます。
コマンド一覧
「/goal」は引数に応じてゴールの設定・確認・クリアを切り替えます。
| コマンド | 動作 |
|---|---|
/goal <条件文> | ゴールを設定してすぐに作業を開始。既存ゴールがあれば上書き |
/goal(引数なし) | 現在の状態(条件・実行時間・ターン数・トークン消費量・直近の評価理由)を確認 |
/goal clear | アクティブなゴールをキャンセル(stop / off / cancel も同義) |
claude -p "/goal <条件文>" | 非対話モードで条件を満たすまで一括実行 |
非対話モードはCIパイプラインや定期バッチへの組み込みに適しており、人の手を介さずに条件達成まで走り切らせることができます。
なお、利用にはトラストダイアログの承認が必要です。disableAllHooksまたはallowManagedHooksOnlyが設定されている環境では利用できません。
まとめ
「/goal」コマンドは、完了条件を宣言するだけで大型タスクを自律完走させる機能です。ターンごとに独立したモデルが条件を判定するため、作業モデル自身が誤って「完了した」と判断するリスクを軽減しています。
auto modeと組み合わせることで、ツール承認とターン継続の両方が自動化され、コーディング作業の大部分を無人で進められる環境が整います。終了状態を明確に定義できるタスクであれば、積極的に活用してみてください。