case_1246

Claude Codeの/goal|完了条件まで続けさせる設定と止まる時

Claude Codeの/goal|完了条件まで続けさせる設定と止まる時

Claude Codeの/goalは、完了条件を満たすまでClaudeにターンを続けさせるコマンドです。条件の書き方、/loopとの違い、止まる時と止まらない時の確認を公式ドキュメントで整理しました。

Claude Code の /goal は、完了条件を1つ書いておくと、その条件を満たすまで Claude にターンを続けさせるコマンドだ。ターンが終わるたびに小さく速いモデルが条件を判定し、まだ満たしていなければ、人が指示しなくても次のターンが始まる(Claude Code 公式ドキュメント「Keep Claude working toward a goal」)。/goal は v2.1.139 で追加された(Claude Code CHANGELOG)。

途中で止まって次の指示を待つ、ゴールがいつの間にか消えている、逆にいつまでも終わらない。この記事では、2026年10月11日時点の公式ドキュメントと更新履歴(最新は v2.1.296・Claude Code CHANGELOG)を1つずつ確かめ、設定の手順と、止まる時・止まらない時の確認をまとめた。

この記事の要点

  • 何をするか:完了条件を満たすまで、ターンごとの指示なしで Claude に作業を続けさせる。判定は作業しているモデルとは別のモデルが行う。
  • 使い方:/goal 条件 で設定、/goal だけで状態の確認、/goal clear で解除。1つのセッションに置けるゴールは1つ。
  • 条件の書き方:測れる終わり方、確かめ方、変えてはいけないことの3つを入れる。条件は4,000文字まで(公式)。
  • 止まる時:認証の失敗など4種類のエラーではゴールが消える。混雑や通信の切断は自動で再試行し、使用上限やレート制限では一時停止する。
  • 進まない時:許可の確認、バックグラウンドの作業、-p の出力の形式を順に確かめる。
  • 対象読者:Claude Code に長めの作業を任せ、途中で止まる・終わらないことに困っている開発者。

Claude Codeの/goalとは|ターンごとに条件を判定する

/goal は完了条件を設定するコマンドで、条件を書くとすぐにターンが始まる。条件そのものが指示になるので、別にプロンプトを送る必要はない。ゴールが有効な間は ◎ /goal active という表示が出て、何分動いているかがわかる(公式「Keep Claude working toward a goal」)。

ターンが終わる、条件を判定、まだ満たしていない、次のターンの4つの箱が輪になって回り、条件を判定から右へ満たしたと満たせないの2つの出口が出て、その先にゴールが消えるの箱を置いた図
ターンが終わるたびに条件を判定し、まだ満たしていなければ次のターンへ進む

判定の3つの結果

ターンが終わるたびに、Claude Code は条件とそこまでの会話を、設定済みの小さく速いモデルに送る。モデルは理由を添えて、次の3つのどれかを返す(公式「Keep Claude working toward a goal」)。

  • まだ満たしていない(Not yet met):Claude は作業を続け、返ってきた理由を次のターンの手がかりにする。
  • 満たした(Met):ゴールが消え、会話の記録に達成の記録が残る。
  • 満たせない(Impossible):条件は満たせないと判定されると、ゴールが消え、失敗の記録と理由が残る。自分で解除する必要はない。

まとめると、ターンが終わる、条件を判定する、まだ満たしていなければ次のターンへ進む、の繰り返しだ。判定の結果はそのたびに会話の記録に出て、Ctrl+O を押すと判定の理由を読める(公式「Keep Claude working toward a goal」)。

向いている作業

公式ドキュメントが挙げる使いどころは、終わりの状態を確かめられる大きめの作業だ(公式「Keep Claude working toward a goal」)。

  • モジュールを新しい API へ移し、すべての呼び出し箇所がコンパイルでき、テストが通るまで続ける
  • 設計書を実装し、受け入れ条件がすべて成り立つまで続ける
  • 大きなファイルを分け、それぞれが決めた大きさに収まるまで続ける
  • ラベルの付いた Issue を、キューが空になるまで片付ける

/loop・Stopフック・auto modeとの違い

セッションを止めずに動かし続ける方法は、/goal のほかに /loop と Stop フックがある。

下の段にauto modeとツールごとの確認を省く、中の段に/goalとターンごとの指示を省く、上の段に判定するモデルと別のモデルが確かめるを置いた3段の図
auto modeはツールごとの確認を省き、/goalはターンごとの指示を省く。完了は別のモデルが確かめる

次のターンを始めるものの違い

3つの方法の違いは、次のターンを何が始めるかだ(公式「Keep Claude working toward a goal」)。

方法 次のターンが始まる時 止まる時
/goal 前のターンが終わった時(対話中は、確認の時刻や自動の再試行の時刻が来た時も) 条件を満たした・満たせないと判定された時、直す必要のあるエラーで失敗した時、/goal clear を実行した時
/loop 決めた時間の間隔がたった時 自分で止めた時、または Claude が作業は終わったと判断した時
Stop フック 前のターンが終わった時 自分のスクリプトかプロンプトが決める

Stopフックとの使い分け

/goal と Stop フックは、どちらもターンが終わるたびに動く。/goal は今のセッションだけで有効な近道で、Stop フックは設定ファイルに書くので、その範囲のすべてのセッションに効く。決まった手順で確かめたい時は、Stop フックでスクリプトを動かす方が向いている(Claude Code Hooks の実践ガイド)。

auto modeとは組み合わせて使う

auto mode は、1つのターンの中のツールの実行を自動で許可するが、新しいターンは始めない。/goal は、ターンごとに条件を確かめる判定役を足す。auto mode の役目はツールごとの確認を省くこと、/goal の役目はターンごとの指示を省くことで、役目が違うので組み合わせて使う。完了かどうかは、作業しているモデルとは別のモデルが確かめる(公式「Keep Claude working toward a goal」)。判定するモデルは、会話に出たものしか読まない点も覚えておきたい。auto mode の入れ方はauto mode 標準化の移行手順にまとめている。

/goalの使い方|設定・確認・解除

1つのセッションに置けるゴールは1つで、同じ /goal コマンドが、引数によって設定・確認・解除を兼ねる。ゴールがある状態で新しく設定すると、前のゴールは置き換わる(公式「Keep Claude working toward a goal」)。

条件を設定する

公式ドキュメントの例は次のとおりだ。

/goal all tests in test/auth pass and the lint step is clean

ゴールを置いても、権限モードは変わらない。席を外しても進めたいなら auto mode で /goal を実行する。Manualモード(設定値は default)のままだと、許可していないツールを使う前に確認が出て、そこで止まる(公式「Keep Claude working toward a goal」、公式「Permission modes」)。

状態を確認する

引数なしの /goal で、今の状態が出る。ゴールが有効なら、表示されるのは次の5つだ(公式「Keep Claude working toward a goal」)。

  • 条件
  • 動いている時間
  • 判定したターンの数
  • 今のトークンの使用量
  • 直近の判定の理由

ターンの数と判定の理由は、1回目の判定が終わってから出る。ゴールがなくても、同じセッションで前に達成したゴールがあれば、その条件と、かかった時間・ターンの数・トークンの使用量が出る(公式「Keep Claude working toward a goal」)。

解除する

/goal clear

解除すると Goal cleared: に続けて条件が表示され、何も設定していなければ No goal set と出る。clear の代わりに stop、off、reset、none、cancel も使える。/clear で会話をやり直した時も、ゴールは消える(公式「Keep Claude working toward a goal」)。

再開したセッションと -p での動き

セッションを再開すると、終了時に有効だったゴールが戻る。--continue、--resume(セッション ID・名前・記録ファイルのパス)、セッションの一覧のどこから再開しても戻る。v2.1.239 より前は、claude --resume の一覧から再開した時だけ戻らなかった。戻るのは条件だけで、ターンの数・時間・トークンの使用量は数え直しになる。達成済みや解除済みのゴールは戻らない(公式「Keep Claude working toward a goal」)。

/goal は、非対話モード(-p)、デスクトップアプリ、Remote Control でも使える。-p で設定すると、1回の実行で最後まで回る(公式「Keep Claude working toward a goal」)。

claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

途中で止める時は Ctrl+C を押す。-p の使い方はヘッドレス自動実行のガイドにまとめている。

効く条件の書き方|3つの要素と上限

判定するモデルは、自分でコマンドを動かしたりファイルを読んだりしない。会話に出たものだけで判定するので、条件は Claude 自身の出力で示せる形で書く。「test/auth のテストがすべて通る」がうまくいくのは、Claude がテストを動かし、その結果が会話に出て、判定するモデルが読めるからだ(公式「Keep Claude working toward a goal」)。

左下から右上へ測れる終わり方、確かめ方、変えてはいけないことの3段の階段を上り、最上段の先に効く条件の箱を置き、階段の下に4,000文字までと回数や時間の上限の2つの札を並べた図
効く条件は、測れる終わり方・確かめ方・変えてはいけないことの3段で組み、上限を足す

3つの要素

効く条件には、次の3つが入っている(公式「Keep Claude working toward a goal」)。

  • 測れる終わり方:テストの結果、ビルドの終了コード、ファイルの数、空になったキューのように、1つの状態で終わりを言える。
  • 確かめ方:「npm test が終了コード 0 で終わる」「git status に変更が残っていない」のように、何で示すかを書く(例は公式ドキュメントのもの)。
  • 変えてはいけないこと:「ほかのテストファイルは変えない」のように、途中で守ってほしい制約を書く。

条件は4,000文字まで書ける。終わらない時のために、回数や時間の上限を条件に足しておくとよい。公式ドキュメントは or stop after 20 turns のような一文を例に挙げていて、Claude はターンごとにその上限に対する進み具合を報告する(公式「Keep Claude working toward a goal」)。

条件の例(構成例)

以下は構成例で、公式ドキュメントの例ではない。プロジェクトのコマンドに合わせて書き換える。

/goal src/api の呼び出しをすべて新しいクライアントに置き換え、npm test が終了コード 0 で終わり、npm run lint にエラーがないこと。テストファイルは変えない。20ターンで止める。

「きれいにする」「いい感じに直す」のような、会話の出力で示せない条件は判定がぶれる。終わりの状態を、出力で示せる事実に置き換えて書く。

止まる時の確認|ゴールが消える4つのエラー

ターンがエラーで失敗した時の扱いは、エラーの種類で分かれる。直さないと解消しないエラーではゴールが消え、それ以外のエラーではゴールが残る(公式「Keep Claude working toward a goal」)。

左に認証の失敗、クレジット残高の不足、コンテキストのあふれ、使えないモデルの4つの箱を縦に並べ、4本の矢印が右のゴールが消えるの箱に集まり、その右に原因を直して設定し直すの札を置いた図
この4つのエラーで失敗するとゴールが消える。原因を直して設定し直す

ゴールが消える4つのエラー

次の4つで失敗すると、ゴールが消え、Goal cleared after an unrecoverable error で始まり Run /goal again to continue で終わる警告が出る(公式「Keep Claude working toward a goal」)。

  • 認証の失敗(Claude Code が自分で認証情報を管理している場合。デスクトップアプリやクラウドのセッションのように、ホストが認証を管理している時はゴールが残る)
  • クレジット残高の不足
  • コンテキストのあふれ(自動の圧縮でも解消できなかったもの)
  • 使えないモデル

この場合は、原因を直して設定し直す。条件はもう一度 /goal 条件 で書く。コンテキストがあふれやすい長い作業は、/compact を使った長時間開発の進め方も合わせて見ておきたい。

自動で再試行するエラー・一時停止するエラー

それ以外のエラーでは、ゴールは残る。v2.1.269 以降の対話中のセッションでは、原因を書いた1行が出て、自動で再試行するか、人を待つかに分かれる(公式「Keep Claude working toward a goal」)。

  • 再試行:サーバーの混雑や通信の切断のように、待てば解消しやすい失敗。Goal still active で始まる表示に、次の試行までの待ち時間が出る。自動の再試行が3回続くと、一時停止に切り替わる(公式)。
  • 一時停止:API のレート制限、claude.ai の使用上限、フックがターンを終わらせた時など、再試行しても同じ結果になる失敗。Goal paused で始まる表示に原因が出る。

一時停止の間も、メッセージを送ればすぐに次のターンが始まる。使用上限で止まった時は、上限のリセットを待って自動で続ける機能が働いていれば、その時刻にゴールに向けた作業が再開する(公式「Interactive mode」)。上限そのものへの対処は「session limit」の対処法、混雑による 529 などはAPI エラーの対処手順を見てほしい。

進まないまま応答を続けた時

Claude がツールを使わないまま判定への返事だけを何ターンも続けると、Claude Code はループを止めて警告を出し、ゴールを残したまま操作を人に戻す。判定は、次にメッセージを送った後から再開する(公式「Keep Claude working toward a goal」)。仕組みの説明はフックのガイドにあり、Stop フックが間にツールの実行をはさまずに8回続けてターンの終了を止めると、Claude Code はそのフックを無視する(公式「Automate actions with hooks」)。

止まらない・進まない時の確認

エラーは出ていないのに、作業が進んでいないように見える時は、許可の確認、バックグラウンドの作業、出力の形式を順に確かめる。

許可の確認、バックグラウンドの作業、出力の形式の3つの関門を左から順に並べ、それぞれの下にManualモード、判定を待つ、stream-jsonの札を置き、右端に順に確かめるの箱を置いた図
進まない時は、許可の確認、バックグラウンドの作業、出力の形式を順に確かめる

許可の確認で止まっている

Manualモードでは、許可していないツールを使う前に確認が出る。ゴールは権限モードを変えないので、確認に答えるまで先へ進まない。席を外して進めたい時は auto mode で始める(公式「Keep Claude working toward a goal」)。チームで auto mode を使う時の考え方は自動許可モードのチーム導入に書いた。

バックグラウンドの作業を待っている

ターンが終わった時にサブエージェントやバックグラウンドのシェルが動いていると、そのターンの判定は飛ばされる。判定を待つのは、バックグラウンドの作業がない状態でターンが終わるまでだ。作業が終わると、結果が新しいターンとして Claude に届くので、プロンプトを送る必要はない(公式「Keep Claude working toward a goal」)。

バックグラウンドの作業が30分ゴールを待たせると、確認の時刻が来る。確認では、Claude Code が動いている作業を一覧にし、出力を読ませ、進んでいれば待たせ、止まっていれば直すか止めさせる。2回目以降は間隔が倍になり、初回の4倍までのびる。既定の値では、初回の確認から1時間後、その後は2時間ごとだ(公式「Keep Claude working toward a goal」)。

  • 対話中のセッションでは、手が空いている間も Claude Code が自分でターンを始めて確認する。ただし、人のプロンプトの間に始める確認は1つのゴールにつき3回までで、3回目で、次のプロンプトまで止めると知らせる。
  • 間隔は環境変数 CLAUDE_CODE_GOAL_CHECKIN_MINUTES で変えられる。既定は 30 で、0 にすると確認と自動の再試行が止まる。指定できるのは整数の分で、上限は 10080(1週間)(公式「Environment variables」)。

確認の仕組みは v2.1.234 以降、手が空いている間の確認は v2.1.236 以降で使える。サブエージェントの使い方はサブエージェント並列開発の入門を参照してほしい。

-p の出力の形式で止まって見える

-p で既定のテキスト出力を使うと、Claude の最後の応答はループが終わってから表示される。何ターンも回るゴールだと、止まっているように見える。途中の様子を見るには --output-format stream-json --verbose を付けて、メッセージを1つずつ出す(公式「Keep Claude working toward a goal」)。

/goalが使えない時|フックの設定と信頼

フックの設定とフォルダの信頼

/goal の判定役はフックの仕組みの一部なので、設定ファイルのフックと同じ「フォルダを信頼する」規則のもとで使える。設定の優先順位を当てはめた結果 disableAllHooks が true の時と、管理者の設定で allowManagedHooksOnly が入っている時も使えない。どの場合も、何も起きずに終わるのではなく、使えない理由が表示される(公式「Keep Claude working toward a goal」)。

バージョンを確かめる

コマンド自体が見つからない時は、バージョンを確かめる。/goal は v2.1.139 で入り、v2.1.140 では disableAllHooks や allowManagedHooksOnly の時に黙って止まる不具合が直っている(Claude Code CHANGELOG)。止まる時の再試行と一時停止は v2.1.269 以降なので、古いままなら更新する。更新のしかたはアップデートの手順にまとめた。

判定のモデルと費用

判定にかかる費用

判定は、使っているプロバイダーの小さく速いモデルで行われる。判定するモデルはツールを呼ばないので、会話に出たものだけで判断する。判定に使うトークンはその小さく速いモデルの料金で数えられ、公式ドキュメントは、通常はメインのターンの使用量と比べてごくわずかだとしている(公式「Keep Claude working toward a goal」)。

判定に使うモデルを変える

判定に別のモデルを使うなら、環境変数 ANTHROPIC_DEFAULT_HAIKU_MODEL を設定する。ただし、この変数は /goal の判定だけでなく、小さく速いモデルを使うすべての場面に効く。haiku という別名もそのモデルを指すようになり、会話の要約のようなバックグラウンドの処理もそのモデルで動く(公式「Keep Claude working toward a goal」、公式「Model configuration」)。ゴール全体でどれだけ使ったかは、引数なしの /goal で見られる。

想定シナリオ|APIの移行をテストが通るまで続ける

以下は構成例で、実在の企業や個人(チーム)の事例ではない。社内の Web アプリで、古い HTTP クライアントの呼び出しを新しいクライアントへ置き換える作業を、/goal で最後まで進める流れを示す。

左下の条件を書くから、auto modeで始める、結果を会話に出させる、右上の達成を確かめるへ上がる道に4つの節目を置き、それぞれに20ターンで止める、許可の確認を減らす、状態を見る、テストの結果の札を付けた図
APIの移行をテストが通るまで続ける流れ(構成例)

手順1|条件を書く

上の「条件の例」のように、測れる終わり方(npm test と lint)、確かめ方、変えてはいけないこと(テストファイルを変えない)を書き、最後に「20ターンで止める」と上限を足す。上限の書き方は、公式ドキュメントの例(Keep Claude working toward a goal)にならった。

手順2|auto modeで始める

auto mode に切り替えてから /goal を実行する。許可の確認を減らすためで、確認が出るたびに止まるのを避ける。

手順3|結果を会話に出させる

判定するモデルは会話しか読まないので、テストと lint は Claude に実行させ、結果を会話に出させる。途中で引数なしの /goal を打ち、状態を見る。判定の理由を読めば、次に何をしようとしているかがわかる。

手順4|達成を確かめる

判定が「満たした」を返すとゴールは消え、達成の記録が残る。人は差分とテストの結果を読み、変えてはいけないファイルが変わっていないかを git status と差分で確かめてから取り込む。

よくある質問

Claude Codeの/goalとは何ですか?

完了条件を設定すると、その条件を満たすまで Claude にターンを続けさせるコマンドだ。ターンが終わるたびに小さく速いモデルが条件を判定し、まだ満たしていなければ次のターンが始まる(公式「Keep Claude working toward a goal」)。

/goalと/loopはどう使い分けますか?

/goal は条件を満たすまで続け、/loop は決めた時間の間隔で同じプロンプトを繰り返す。テストが通るまで、のように終わりの状態が決まっている作業は /goal、一定の間隔で様子を見る作業は /loop が向いている(公式「Keep Claude working toward a goal」)。

ゴールが勝手に消えたのはなぜですか?

条件を満たした、満たせないと判定された、/clear を実行した、のどれかか、認証の失敗、クレジット残高の不足、コンテキストのあふれ、使えないモデルのどれかで失敗した可能性がある。エラーで消えた時は Goal cleared after an unrecoverable error で始まる警告が出ているので、原因を直して設定し直す。

使用上限に当たるとゴールはどうなりますか?

ゴールは残り、Goal paused で始まる表示とともに一時停止する。上限のリセットを待って自動で続ける機能が働いていれば、リセットの時刻に作業が再開する(公式「Keep Claude working toward a goal」)。上限そのものの対処は「session limit」の対処法にまとめた。

/goalの判定に追加の料金はかかりますか?

判定のトークンは、使っているプロバイダーの小さく速いモデルの料金で数えられる。公式ドキュメントは、通常はメインのターンと比べてごくわずかだとしている(公式「Keep Claude working toward a goal」)。

1つのセッションで複数のゴールを置けますか?

置けない。1つのセッションで有効なゴールは1つで、新しく設定すると前のゴールと置き換わる(公式「Keep Claude working toward a goal」)。

あわせて読みたい

運営元 Uravation よりこの事例を自社の業務で試す場合のテーマ選定・評価・本番移行の確認項目を、無料のチェックリストにまとめています。 Claude Code業務自動化PoCチェックリストを受け取る(無料)

参考・出典

Next Step

この事例を、自社の業務に置き換える。

対象業務、利用データ、評価基準、社内展開の順番まで整理すると、AI開発ツール導入の失敗を減らせます。

導入を相談する

チームで学ぶなら: Claude Code 法人研修(2日間ハンズオン) / 1人で習得するなら: 個別指導(週1マンツーマン)