Claude Code の /goal は、「どうなったら終わりか」を1つ書いておくと、そこに届くまで Claude が自分で作業を続けるコマンドです。1回の作業が終わるたびに、作業している Claude とは別の小さなモデルが条件を満たしたかを判定し、まだなら次の作業へ進ませます。この記事では、公式ドキュメントの原文(2026年10月24日確認)で使い方と止まる条件を整理し、このサイトの実際の作業で試した結果を、トークンの量と仕上がりの確認まで含めて載せます。

何をするか

終わりの条件まで続ける

/goal テストがすべて通る のように書くと、すぐ作業が始まる。条件を満たすか、満たせないと判定されるか、直す必要のあるエラーが出るまで続く。

判定のしかた

別のモデルが毎回確かめる

判定役は会話に出た結果だけを読む。ファイルやコマンドを自分では見ないので、条件は「Claude の出力で証明できること」にする。

試して分かったこと

上乗せは判定1回ぶん

機械的に片付く作業は、321件でも1回の作業で終わった。増えた費用は全体の約3%。仕上がりの細かな不自然さは、判定役では見つからなかった。

1. /goal とは:普通の依頼・/loop・Stop フックとの違い

普通に頼んだ作業は、Claude が「終わった」と判断した時点で止まり、次はあなたの指示を待ちます。/goal を設定すると、1回の作業(ターン)が終わるたびに判定が入り、条件を満たしていなければ、あなたが何も送らなくても次のターンが始まります。公式は、向く例として次のような「終わりの状態を確かめられる大きめの作業」を挙げています。

  • モジュールを新しい API に移し、すべての呼び出し箇所がコンパイルでき、テストが通るまで
  • 設計書を実装し、受け入れ条件がすべて満たされるまで
  • 大きなファイルを分割し、どのファイルも決めた大きさ以下になるまで
  • ラベルの付いた課題の一覧を、空になるまで片付ける

似た仕組みが3つあり、公式は「次のターンを何が始めるか」で使い分けるよう説明しています。

仕組み次のターンが始まるとき止まるとき
/goal前のターンが終わったとき(対話中は、決まった間隔の確認や自動のやり直しでも)判定役が条件を満たした、または満たせないと判定したとき、直す必要のあるエラーのとき、/goal clear を打ったとき
/loop決めた時間がたったときあなたが止めるか、Claude が終わったと判断したとき
Stop フック前のターンが終わったとき自分で書いたスクリプトやプロンプトが判断したとき

/goal の正体は、その会話の中だけで働く「プロンプトで判定する Stop フック」です。Stop フックは設定ファイルに書いてすべての会話に効かせるもの、/goal はその場で条件を書いてその会話だけに効かせるもの、という違いです。

権限モードは変わりません。確認なしでターンを回し続けたいなら、権限モードを auto にしてから /goal を使います。手動のモードのままだと、許可していない操作のたびに確認で止まります。公式は「auto モードは1ターンの中の確認を減らし、/goal はターンごとの指示を減らす。両方を組み合わせる」と説明しています。

出典:Keep Claude working toward a goal(Claude Code 公式ドキュメント、2026年10月24日確認)。

2. 使い方:設定・状態の確認・解除

1つの会話に置ける目標は1つです。同じ /goal が、続ける文によって設定・確認・解除を兼ねます。

  1. 設定する:/goal に続けて条件を書く例:/goal test/auth のテストがすべて通り、lint もきれいになる。設定するとすぐにターンが始まり、条件そのものが指示になるので、別に依頼を送る必要はありません。すでに目標があれば、新しい条件に置き換わります。条件は4,000字まで書けます。
  2. 状態を見る:/goal だけを打つ条件、経過時間、判定した回数、使ったトークン、直近の判定の理由が出ます。回数と理由は、1回目の判定の後から表示されます。
  3. やめる:/goal clear判定が出る前に外します。stop・off・reset・none・cancel も同じ意味です。/clear で会話を新しくしても目標は消えます。

会話を再開すると、まだ終わっていなかった目標も戻ります。条件はそのまま引き継がれ、回数・時間・トークンの数え始めはやり直しになります。デスクトップアプリ、リモート操作、claude -p による自動実行でも使えます。claude -p "/goal …" は終わるまで1回の実行で回るので、途中の様子を見たいときは --output-format stream-json --verbose を付けます。

デスクトップアプリで条件を貼るときの注意。「/goal+複数行の条件」をまとめて貼り付けると、全体がただの貼り付けた文として送られ、/goal がコマンドにならないことがあります(2026年10月23日、Windows のデスクトップアプリ・Claude Code 2.1.308 で確認)。入力欄では /goal に色が付いて見えるので、見た目では区別できません。/goal を手で打って候補から選び、そのあとに条件を貼れば確実です。効いたかどうかは、すぐ下に「Goal set:」で始まる行が出たかで確かめます。

3. 判定のしくみと、止まる条件

ターンが終わるたびに、Claude Code は条件とそれまでの会話を「小さく速いモデル」に送ります。判定は次の3つで、それぞれ短い理由が付きます。このサイトの環境では、判定役は Claude Haiku 5.5 でした(会話の記録で確認)。

まだ(Not yet met)Claude は作業を続け、判定の理由を次のターンの手がかりにする。
達成(Met)目標が外れ、達成の記録が会話に残る。
不可能(Impossible)条件はどうやっても満たせないと判定された。目標が外れ、理由が残る。自分で外す必要はない。

判定役は道具を使わず、会話に出たものだけで判断します。ファイルを読み直したり、テストを自分で走らせたりはしません。数ターン続けて Claude が道具を使わずに判定役に答えるだけになると、Claude Code はループを止めて警告を出し、目標を残したまま操作をあなたに返します。

エラーで止まるとき

起きたこと目標どうなるか
あなたが直す必要のあるエラー(ログインの失敗、クレジットの残高切れ、自動の要約でも収まらない文脈のあふれ、使えないモデル)外れる原因を直して /goal を設定し直す(デスクトップアプリやクラウドのセッションでは、ログインはアプリ側が戻すので目標は残る)
しばらくすると直りやすい失敗(サーバーの混雑、接続の切断)残る待ってから自動でやり直し、3回やり直すと一時停止になる(2.1.269 以降の対話中)
やり直しても同じになる失敗(API の利用制限、claude.ai の使用量の上限、フックがターンを止めた)残る一時停止になる(使用量の上限が戻るのを待つ設定なら、戻ったときに続きから再開)

サブエージェントやバックグラウンドの作業があるとき

ターンの終わりにサブエージェントやバックグラウンドのコマンドが動いていると、そのターンの判定は後回しになります。結果が返ると、新しいターンとして Claude に届きます。待ちが30分続くと「途中確認」が入り、動いている作業の出力を読んで、進んでいれば待ち、止まっていれば直すか止めるよう Claude に促します。2回目以降の間隔は倍になり、既定では1時間後、その後は2時間ごとです。最初の間隔は環境変数 CLAUDE_CODE_GOAL_CHECKIN_MINUTES で変えられ、0 にすると途中確認と自動のやり直しが止まります。

使えないとき・費用

判定役はフックのしくみの一部なので、フックと同じく、信頼していないフォルダーでは使えません。設定で disableAllHooks が true のときや、管理者の設定で allowManagedHooksOnly が有効なときも使えず、その場合は理由が表示されます。判定にかかるトークンは小さく速いモデルの料金で数えられ、公式は「ふつうは本体の作業に比べてごくわずか」としています。判定役のモデルは ANTHROPIC_DEFAULT_HAIKU_MODEL で変えられますが、この設定は会話の要約など、小さなモデルを使うほかの処理にも効きます。

出典:Keep Claude working toward a goal(2026年10月24日確認)。

4. 条件の書き方

判定役は会話しか読まないので、条件は Claude 自身の出力で証明できる形にします。公式が挙げる、長く回しても崩れにくい条件の要素は3つです。

確かめられる終わりの状態を1つテストの結果、ビルドの終了コード、ファイルの数、空になった一覧など。
確かめ方「npm test が成功で終わる」「git status がきれい」のように、どう証明するか。
守ること「ほかのテストファイルは変えない」など、途中で変えてはいけないもの。

回す長さに上限を付けたいときは、「または20ターンで止める」のように条件の中に書きます。Codex の /goal にあるトークン予算のような専用の設定は、公式ドキュメントにはありませんでした。

書き方判定役から見ると
品質を上げて、終わるまで続けて何をもって終わりか決められない
テストがすべて通るまで直して結果が会話に出れば判定できるが、どのテストかが曖昧
npm test が成功で終わり、その出力を会話に出す(src/legacy は変えない、30ターンで止める)終わりの状態・確かめ方・守ること・上限がそろっている

このサイトで試して分かった注意点が1つあります。守らせたいことは、別の手順書ではなく条件の文に書きます。手順書にだけ「毎ターン残りの件数を書く」と書いたところ、Claude はそれを書かずに終え、判定役は「手順書の指示は守られていないが、条件はそれを求めていない」と理由に書いたうえで「達成」と判定しました。判定役は手順書の違反に気づいていましたが、判定は条件の文字どおりでした。

5. このサイトで3回試した結果

このサイトの日本語の記事には、文末の「。」が付いたり付かなかったりする箇所が、既存の記事に1,035件たまっていました(検査ツール audit-sentence-end-mix で数えた数)。直し方の基準が決まっていて、終わりの状態が「検査で0件」とはっきりしているので、/goal 向きの作業として選び、範囲を変えて3回試しました。1回目は /goal を使わない普通の依頼として動いたので、比べる基準にしています。実行したのは2026年10月23日、Windows のデスクトップアプリの Claude Code 2.1.308、作業役は Claude Opus 5.5、権限モードは auto です。

比べる点普通の依頼(/goal なし)/goal(小さめ)/goal(大きめ)
範囲・件数10記事・166件9記事・119件48記事・321件
かかった時間6分9秒5分54秒10分7秒
作業の回数1回で終了1回で達成(判定1回・5.6秒)1回で達成(判定1回・9.0秒)
作業役の出力トークン15,25414,75027,835
判定役なし出力899出力1,569・読んだ量114,410
Claude Code が記録した換算額$1.33$1.26$2.74(うち判定役 $0.075)
確認後に人が直したものなしなし不自然な2文

数字は各回の会話の記録(Claude Code が保存する JSONL)から集計した。換算額は Claude Code が API の料金で計算して記録したもので、サブスクリプションでの利用には請求されない。それぞれ1回だけの結果で、作業の種類やモデルが変われば数字も変わる。

仕上がりの確認

判定役の「達成」をそのまま信じず、毎回、別の会話で差分を1行ずつ確かめ、検査をやり直しました。

範囲どの回も、変わったのは対象の記事の日本語の本文と、照合の記録だけだった。
中身差分の大半は「。」を足しただけ。残りは「。」を読点や括弧に組み替えたもので、全部読んで語と意味が変わっていないことを確かめた。
判定役が見ないもの:文の自然さ大きめの回では、文末の「——」を「次のとおり。」に言い換えた12か所のうち2か所が「だから次のとおり。」という不自然な文になっていた。検査の数字は0件なので、判定役は「達成」と判定した。数字で測れない仕上がりは、人が読んで確かめる必要がある。
範囲の外の気づき作業の途中で、Claude は「色の付いた表の行を検査ツールが見ていない」ことに自分で気づいて報告した。確かめると本当で、ツールを直すと、見えていなかった16件が見つかった。条件に無いことでも、気づいたことは報告に書かせると役に立つ。

6. 分かったこと:向く作業・向かない作業

機械的な作業は、1回のターンで終わる

どの回も、作業は1回のターンで終わりました。1回のターンの中で Claude は道具を何十回も使えるので(大きめの回は Bash を32回)、スクリプトで片付く作業なら、321件でも1回で済みます。このため /goal の売りである「足りなければ次のターンへ続ける」は、今回の種類の作業では一度も働きませんでした。上乗せは判定1回ぶんで、大きめの回では費用全体の約3%でした。

判定役は会話全体を読む

大きめの回で判定役が読んだ量は114,410トークンで、作業の会話がそのまま渡っていました。会話が長くなるほど、判定1回が重くなります。何ターンも回る作業や、もともと長い会話の途中で /goal を始めると、判定の費用は今回より大きくなると考えられます。

判定役が見るのは「条件どおりか」

判定役は、検査の結果や commit の有無といった条件の項目を正確に確かめていました。一方で、文が自然かどうかのように、数字に出ない仕上がりは見ません。「達成」は、条件に書いたことが会話に出たという意味で、仕上がりの確認の代わりにはなりません。

向く1回では終わらない作業:テストが落ちるたびに原因を調べ直す修正、ビルドが通るまでの移行、外の処理を待ちながら進める作業、途中の結果で次の手が変わる調査。
向く終わりの状態をコマンドの結果で示せる作業:テスト・ビルド・検査ツールの件数・一覧が空になること。
向かない「良くして」「自然に」のように、数字で終わりを示せない作業。判定役は会話に出た結果しか見ないので、条件を満たしたと言えるだけになる。
上乗せが小さいだけ1回で終わる量の機械的な作業。害はないが、普通に頼むのと結果は変わらない。

7. Codex の /goal との違い

OpenAI の Codex にも同じ名前の /goal があります。考え方(終わりの条件を保ったまま作業を続ける)は同じですが、操作と上限の決め方が違います。Codex 側の詳しい使い方は Codex の /goal の使い方にまとめています。

比べる点Claude CodeCodex
操作設定・状態の確認・解除(/goal clear)、直すときは新しい条件で設定し直す表示・編集・一時停止・再開・解除(/goal edit・pause・resume・clear)
上限専用の設定はなく、「20ターンで止める」などを条件に書く目標ごとのトークン予算がある
判定作業役とは別の小さく速いモデルが、ターンごとに会話を読んで判定完成条件を基準に作業と確認を繰り返す(OpenAI の説明)
一時停止利用制限や使用量の上限のときに自動で一時停止自分で一時停止・再開できる

出典:Claude Code は Keep Claude working toward a goal、Codex は Using Goals in Codex(OpenAI Cookbook)。2026年10月24日時点。

まとめ

  • /goal は、終わりの条件を1つ書くと、別のモデルがターンごとに判定し、満たすまで Claude に作業を続けさせるコマンド。設定・状態の確認・解除を同じコマンドで行う。
  • 判定役は会話しか読まない。条件は「確かめられる終わりの状態・確かめ方・守ること」を、Claude の出力で証明できる形で書き、上限もその中に書く。
  • 権限モードは変わらないので、任せきりにするなら auto と組み合わせる。
  • このサイトの実験では、機械的な作業は321件でも1回のターンで終わり、上乗せは判定1回ぶん(費用の約3%)だった。効くのは、1回では終わらない作業。
  • 「達成」は条件に書いたことが会話に出たという意味。文の自然さのような仕上がりは、別に確かめる。
  • デスクトップアプリで条件を丸ごと貼ると、コマンドにならないことがある。「Goal set:」の行で確かめる。

FAQ

Q. /goal を使うと料金は上がりますか?

判定の分だけ増えます。判定は小さく速いモデルで行われ、公式は「ふつうはごくわずか」としています。このサイトの実験では、321件を直した回の換算額 $2.74 のうち、判定役は $0.075 でした。ただし判定役は会話全体を読むので、会話が長いほど1回の判定は重くなります。

Q. 途中で止めたいときは?

/goal clear で目標を外します。stop や cancel でも同じです。claude -p で動かしているときは Ctrl+C で止めます。目標を外しても、それまでの変更は元に戻りません。

Q. Claude が「終わった」と言っても判定役が「まだ」と言うことはありますか?

あります。そのために別のモデルが判定しています。判定役が「まだ」と言えば、理由を手がかりに次のターンが始まります。逆に、条件どおりの結果が会話に出れば「達成」になるので、条件に書かなかった品質は保証されません。

Q. 何ターンで止まりますか?

決まった上限はありません。条件を満たす・満たせないと判定される・直す必要のあるエラーが出る・あなたが外す、のどれかで止まります。上限を付けたいときは「または20ターンで止める」のように条件に書くと、Claude が毎ターンその進み具合を報告し、判定役も会話から判断します。

Q. /loop とどちらを使えばいいですか?

終わりの状態が決まっているなら /goal、決まった時間ごとに同じことを確かめたいなら /loop です。たとえば「デプロイが終わるまで5分ごとに見る」は /loop、「テストが全部通るまで直す」は /goal に向きます。

参考:Keep Claude working toward a goal・Run prompts on a schedule・Hooks guide(Claude Code 公式ドキュメント)、Using Goals in Codex(OpenAI Cookbook)。2026年10月24日確認。