できること
完了条件まで自走
/goal に続けて条件を書くと、その条件をそのまま指示としてすぐにターンが始まり、条件が満たされるまで Claude がターンをまたいで作業を続けます。別途プロンプトを送る必要はありません。
別モデルで完了を判定
毎ターンの後、作業中のモデルとは別の評価役が条件を判定します。判定結果はトランスクリプトに表示され、Ctrl+O でその理由を確認でき、未達の場合はその理由が次のターンの手がかりになります。
進み具合の確認
ゴールの実行中は ◎ /goal active の表示で経過時間が分かり、経過時間・ターン数・トークン数がオーバーレイパネルにリアルタイムで表示されます。
機能解説
概要
各ターンの後にモデルが条件を満たしたかを判定し、まだ満たしていないと判断した場合は、操作をユーザーに戻さずに次のターンを始めます。完了の判定は、作業しているモデルとは別の評価役が行います。
判定の仕組みと終了条件
/goal は、セッション単位のプロンプトベースの Stop hook を包む仕組みです。Claude がターンを終えるたびに、Claude Code は条件とそれまでの会話を、設定済みの small fast model に送ります。
- ゴールはセッション単位で、有効なのは現在のセッションの間だけです。1 つのセッションで有効にできるゴールは 1 つで、同じコマンドが引数に応じて設定・確認・解除を行います。
- ゴールは、条件が満たされたとき、条件を満たせないとモデルが判断したとき、ユーザーが対処する必要のあるエラーでターンが失敗したときに自動で解除されます。認証の失効、クレジット残高の枯渇、コンテキスト超過など回復不能なエラーでは、通知とともに解除されます。
- Claude がツールを使わないまま評価役への応答を数ターン続けるなど進展が無い場合、Claude Code はループを止めて警告を出し、ゴールを残したまま操作をユーザーに戻します。
条件の書き方と実行時の設定
評価役は、Claude が会話の中で示した内容をもとに条件を判定し、自らコマンドを実行したりファイルを読んだりはしません。そのため条件は、Claude 自身の出力で示せる形で書きます。
- 条件は最大 4,000 文字です。
- 実行の長さを区切るには、
or stop after 20 turnsのように、ターン数や時間の区切りを条件に含めます。 - ゴールは permission mode を変更しません。ゴールのターンを無人で進めるには、auto mode で
/goalを実行します。 - 判定に別のモデルを使うには
ANTHROPIC_DEFAULT_HAIKU_MODELを設定します。
非対話実行とセッションの再開
/goal は対話モード、-p、Remote Control で動作します。-p でゴールを設定すると、1 回の呼び出しでループを完了まで実行します。
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
ループの進行に合わせて各メッセージを出力するには --output-format stream-json --verbose を追加します。解決前に非対話のゴールを止めるには、Ctrl+C でプロセスを中断します。
セッションを再開すると、終了時に有効だったゴールが復元されます。claude --resume のピッカーから再開した場合も同様です。条件は引き継がれますが、ターン数、タイマー、トークン消費量の基準はリセットされます。達成済みまたは解除済みのゴールは復元されません。
バックグラウンド作業とチェックイン
ターンの終了時にサブエージェントやバックグラウンドのシェルコマンドがまだ実行中の場合、Claude Code はそのターンの判定をとばします。
バックグラウンドの作業でゴールが 30 分以上待たされると、Claude はその作業にチェックインします。アイドル状態のセッションでは 30 分後、その後 1 時間、2 時間と間隔を空けて自動でチェックインし、1 つのゴールで始めるチェックインは最大 3 回です。次のメッセージを送ると、さらに 3 回まで許可されます。
最初のチェックインの間隔は CLAUDE_CODE_GOAL_CHECKIN_MINUTES で変更でき、0 にするとチェックインと自動の再試行が無効になります。
使い方
対話モードでゴールを設定し、確認し、解除する流れは次のとおりです。
/goalの後に満たしたい条件を続けて実行します (例:/goal all tests in test/auth pass and the lint step is clean)。すでに有効なゴールがある場合は、新しいゴールに置き換わります。- 引数なしで
/goalを実行すると、現在の状態を確認できます。有効なゴールがあれば、条件、経過時間、判定済みのターン数、現在のトークン消費量、評価役の直近の理由が表示されます。 - 条件が満たされる前にゴールを外すには
/goal clearを実行します。stop、off、reset、none、cancelもclearの別名として使え、/clearで新しい会話を始めた場合も有効なゴールは解除されます。
利用シーン
指定したディレクトリのテストがすべて通り、lint もきれいになるまで修正を続けさせる場面に向いています。
今週マージされた PR すべての項目を CHANGELOG.md に揃えるような定型の更新を、-p の 1 回の呼び出しで完了まで実行する場面に使えます。
非対話の実行で、ループの進行を stream-json 形式で逐次受け取りたい場面に使えます。
条件にターン数の上限を含め、実行の長さを区切って作業させたい場面に向いています。
ChatGPT・OpenAI の対応する機能
比較の単位となる業務: 完了条件を設定してエージェントに長時間の作業を自走させる
OpenAI の Codex には、特定の目標に向けて数時間から数日にわたって作業を進めさせる Goal mode があり、実験的機能ではなくなって Codex アプリ、IDE 拡張、CLI で利用できます。Codex Mobile からも /goal でゴールを作成・管理できます。Claude Code の /goal は完了条件を設定し、毎ターン後に作業中のモデルとは別の評価役が条件を判定する仕組みで、対話モード、-p、Remote Control で動作します。
関連する機能として、Codex の Thread automations は、会話の文脈を保ったままスケジュールに従って同じスレッドを再開させ、長時間実行されるプロセスの確認などに使えます。Claude Code の /goal では、長時間のバックグラウンド作業を待つアイドルセッションが、30 分後から間隔を空けて自動でチェックインします。
これまでの変更
アイドルセッションが始めるチェックインが 1 つのゴールにつき最大 3 回となり、次のメッセージでさらに 3 回許可される変更が入りました。
バックグラウンド作業で 30 分以上待たされた際のチェックイン (
CLAUDE_CODE_GOAL_CHECKIN_MINUTES=0で無効化)、チェックイン間隔を 30 分、1 時間、以後 2 時間と空ける変更、claude --resumeのピッカーからの再開時のゴール復元、回復不能なエラー時の通知付き自動解除が加わりました。アイドル時にステータス表示が 5 Hz でターミナルを再描画しない変更が入り、アイドル時の CPU 使用量が減りました。
完了条件を設定するとターンをまたいで作業を続ける
/goalが加わりました。対話モード、-p、Remote Control で動作し、経過時間・ターン数・トークン数をオーバーレイパネルに表示します。
対象プランについては、公式のリリースノートには記載がありません。