AIに大きな作業を任せると、途中で何度も止まります。「テストが3つまだ失敗しています。続けますか?」と尋ねてくるのです。
そのたびに「はい、続けて」と入力すること自体が作業になります。席を離れると、作業はそこで止まったままです。
Claude Codeの/goalは、この問題を条件宣言で解決します。達成条件を設定すると、条件を満たすまでClaudeがターンをまたいで作業を続けます。
Claude Code 第5回の/rewindが安全網なら、/goalは完走のための仕組みです。
仕組み:別の判定役がいる
公式 /goalドキュメントの説明が要点を押さえています。毎ターンの終了時に、小さく高速な別モデルが条件を満たしたか検査します。満たしていなければ、Claudeはユーザーに戻らず次のターンを開始します。
作業中のモデルが「完了しました」と自己判定する構造ではありません。第三者の判定モデル(Claude APIではHaiku)が毎ターン判定し、短い理由も残します。評価トークンは本作業と比べれば無視できる量です。
条件を満たすと、目標は自動的に解除されます。
基本的な使い方
/goalの後に条件を書くと、すぐにターンが始まります。別のプロンプトは必要ありません。
/goal test/authすべてのテストが通り、lintがクリーンであること
有効中は◎ /goal activeの表示で経過時間を確認できます。
/goal(引数なし):条件、経過時間、ターン数、トークン使用量、直近の判定理由を確認/goal clear:条件を満たす前に目標を解除(stop・cancelなども使用可能)
目標はセッションごとに1つです。新しく設定すると、既存の目標が置き換わります。
条件をうまく書くことが半分
判定モデルはコマンドを直接実行したり、ファイルを読んだりしません。Claudeが会話に残した出力だけを見て判定します。
そのため、条件はClaudeの出力から証明できる形にする必要があります。公式ドキュメントが推奨する要素は3つです。
- 測定可能な終了状態を1つ:テスト結果、ビルドの終了コード、空のキュー
- 検証方法を明記:「npm testが0で終了」のような確認手段
- 守るべき制約:「他のテストファイルは変更しない」など
無限に実行されるのが心配なら、「または20ターン後に停止」のような節を条件に追加します。ただし、これはシステムが強制する上限ではありません。会話中の進捗報告を見て判定モデルが評価する条件の一部です。
権限は別の話
/goalが権限まで開放するわけではありません。デフォルトの権限モードでは、許可されていないツール呼び出しごとに引き続き確認を求められます。
無人で完走させたいなら、auto modeと組み合わせるのが定石です。auto modeがツール承認プロンプトをなくし、/goalがターン間のプロンプトをなくす分担です。
似た仕組みとの違いも整理しておきます。/loopは時間間隔で再実行する反復、/goalは条件を満たすまで続ける完走です。
セッションが切れても目標は残る
目標が有効なままセッションが終了しても、--resumeまたは--continueで再開すれば条件はそのまま復元されます。ターン数、タイマー、トークンの基準値だけが新しく始まります。
ターミナルなしで実行したい場合は、ヘッドレスモードも使えます。
claude -p "/goal 今週マージされたすべての項目 PRが CHANGELOG.mdに反映されること"
1回呼び出すだけで、条件を満たすまでループが回ります。デフォルト出力では完了するまで何も表示されないため、止まったように見えます。進捗を見るには--output-format stream-json --verboseを付けてください。
まとめ
/goalは「続けて」を代わりに押してくれるコマンドです。条件を宣言すると、別の判定モデルが毎ターン判定し、達成するまで作業が続きます。
要点は条件設計です。測定可能な終了状態と検証方法を明記し、ターン制限の節も条件に含めてください。
次回は、セッション全体をバックグラウンドに送る/backgroundと/tasksを扱います。完走の仕組みに続き、今回は分担の仕組みです。
出典と確認基準
- Claude Code公式ドキュメント — Keep Claude working toward a goal(Anthropic、2026-08-14確認)

![[Claude Code #6] /goal:AIに達成条件を設定する方法のカバー画像](/assets/images/posts/328b90d9-62a2-4671-b597-b1fe9b5355e9/claude-code-goal-completion.jpg)