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 が、続ける文によって設定・確認・解除を兼ねます。
- 設定する:
/goalに続けて条件を書く例:/goal test/auth のテストがすべて通り、lint もきれいになる。設定するとすぐにターンが始まり、条件そのものが指示になるので、別に依頼を送る必要はありません。すでに目標があれば、新しい条件に置き換わります。条件は4,000字まで書けます。 - 状態を見る:
/goalだけを打つ条件、経過時間、判定した回数、使ったトークン、直近の判定の理由が出ます。回数と理由は、1回目の判定の後から表示されます。 - やめる:
/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 でした(会話の記録で確認)。
判定役は道具を使わず、会話に出たものだけで判断します。ファイルを読み直したり、テストを自分で走らせたりはしません。数ターン続けて 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つです。
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,254 | 14,750 | 27,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行ずつ確かめ、検査をやり直しました。
6. 分かったこと:向く作業・向かない作業
機械的な作業は、1回のターンで終わる
どの回も、作業は1回のターンで終わりました。1回のターンの中で Claude は道具を何十回も使えるので(大きめの回は Bash を32回)、スクリプトで片付く作業なら、321件でも1回で済みます。このため /goal の売りである「足りなければ次のターンへ続ける」は、今回の種類の作業では一度も働きませんでした。上乗せは判定1回ぶんで、大きめの回では費用全体の約3%でした。
判定役は会話全体を読む
大きめの回で判定役が読んだ量は114,410トークンで、作業の会話がそのまま渡っていました。会話が長くなるほど、判定1回が重くなります。何ターンも回る作業や、もともと長い会話の途中で /goal を始めると、判定の費用は今回より大きくなると考えられます。
判定役が見るのは「条件どおりか」
判定役は、検査の結果や commit の有無といった条件の項目を正確に確かめていました。一方で、文が自然かどうかのように、数字に出ない仕上がりは見ません。「達成」は、条件に書いたことが会話に出たという意味で、仕上がりの確認の代わりにはなりません。
7. Codex の /goal との違い
OpenAI の Codex にも同じ名前の /goal があります。考え方(終わりの条件を保ったまま作業を続ける)は同じですが、操作と上限の決め方が違います。Codex 側の詳しい使い方は Codex の /goal の使い方にまとめています。
| 比べる点 | Claude Code | Codex |
|---|---|---|
| 操作 | 設定・状態の確認・解除(/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日確認。