スポンサードリンク



Anthropic Official · Claude Code · 2026 Edition

本サイトは Google AdSense による広告が表示されることがあります(記事内容には影響しません)。本記事はアフィリエイトではなく公式ドキュメントの解説です。

ターン「続けて」「次やって」「テストまだ落ちてる?」と Claude Code に打ち続けるのに疲れたことはありませんか。2026 年に公式追加された /goal コマンドは、まさにその「ターン渡り作業」を消すための仕組みです。本記事は Anthropic 公式ドキュメント Keep Claude working toward a goal[1] を、はじめて触る人向けに 1 行ずつほどいて解説します。読了 8 分。

user@sinyblog:~/article 01_tldr.md結論:/goal は「完了条件を渡すと自走する」コマンド

細かい説明に入る前に、この記事を 1 行で要約します。

/goal <完了条件> と打つと、Claude Code は その条件が満たされるまで毎ターン自動で次の作業を続ける。完了したかどうかは別の小さなモデル(既定は Haiku)が判定する。

公式ドキュメント要約 / [1]

つまり、これまで自分が「続けて」「もう一回やって」と毎ターン打っていた判断を、あなたが渡した完了条件と、その条件の自動判定モデルに置き換えるのが /goal の仕事です。

この記事の読み方

「Claude Code は触ったことがあるが、スラッシュコマンドはあまり使っていない」人を想定して書いています。実行例はすべてそのままコピペで動く形にしているので、まずは Chapter 3 の基本構文をターミナルで動かしてみるとイメージが掴みやすいはずです。本文中の [n] は記事末の References に対応します。

user@sinyblog:~/article 02_problem.mdこれまでの不便:「続けて」を毎ターン打つ問題

Claude Code は、Claude にツール(ファイル編集・コマンド実行・テスト走行など)を使わせながら開発を進められる CLI です。ただし、1 つ大きなクセがあります。

1 ターンが終わるたびに、制御がユーザーに戻るのです。たとえば次のような流れは、よくある光景でした。

  1. test/auth のテストを通して」と指示
  2. Claude が修正 → テスト実行 → 2 件赤いまま 1 ターン終了
  3. ユーザーが「続けて」と打つ → 次のターンが走る
  4. また赤が残っている → ユーザーが「続けて」
  5. ……これを 5〜10 回繰り返す

本来は 「全部緑になるまで頑張って」と一度伝えれば済む話なのに、合間の「続けて」を人間が毎回タイプしないと進まない。これは Claude Code 1.x 時代から続く構造的な不便で、運用上、地味に集中力を削っていました。

/goal はこの問題に対する公式の回答です。Anthropic 公式ドキュメントは次のように説明しています[1]

After each turn, a small fast model checks whether the condition holds. If not, Claude starts another turn instead of returning control to you.

Anthropic — Keep Claude working toward a goal / [1]

つまり「制御をユーザーに戻すか、Claude にもう 1 ターン回させるか」の判定を、小さい評価モデルに肩代わりさせる仕組みになっています。

user@sinyblog:~/article 03_syntax.md基本構文:set / status / clear はすべて /goal

/goal は「設定・確認・解除」のすべてを 1 つのコマンドで兼ねます。引数の違いで動きが変わるだけです。

やりたいこと 打つコマンド 動作
ゴールを設定する /goal <完了条件> そのままその条件を起点にターンが 1 回走り、満たすまで継続
状態を見る /goal(引数なし) 現在のゴール文・経過時間・ターン数・トークン・評価器の最新コメントを表示
途中で解除する /goal clear 達成前でもゴールを破棄して通常モードに戻る(stop / off / reset / none / cancel も可)

最小例を 1 つ動かしてみます。

text— Claude Code セッション内


/goal all tests in test/auth pass and the lint step is clean
出典: 公式ドキュメントの例 / [1]

この 1 行を送ると、ふだんなら「test/auth のテストと lint を通して」と打ったときと同じように Claude が動き始めます。違うのは、1 ターン目が終わってもプロンプトが返ってこないことです。代わりに評価器が走り、条件が満たされていなければそのまま 2 ターン目に入ります。

解除したくなったら /goal clear です。すぐ止まります。

text— ゴール解除


/goal clear
ゴールはセッションに 1 つ

1 セッションに同時に持てるゴールは 1 つだけです。すでに動いている状態で /goal <別の条件> を送ると、新しいゴールが古いゴールを上書きします。複数の目標を並列で追わせたい場合は、別ターミナルで別セッションを開きます。

user@sinyblog:~/article 04_display.md画面に出るもの:経過時間・ターン数・トークン

ゴールが動いている間、画面の上端付近に ◎ /goal active という小さなインジケータが表示され、そのゴールが何分動いているかを常時カウントします[1]

もっと詳しい数字を見たくなったら、/goal を引数なしで叩きます。表示されるのは次の 5 つです。

  • 現在の完了条件(あなたが渡した文)
  • 経過時間(このゴールを動かしてから何分か)
  • ターン数(評価器が見たターンの累計)
  • トークン使用量(このゴールで消費した分)
  • 評価器の最新コメント(なぜまだ未達なのか、または次に Claude が見るヒント)

最後の「評価器の最新コメント」は地味に強力です。Claude が「コードを書き換えた → テストはまだ赤」と動いた直後だとすると、評価器は次のような短文を返します(公式の挙動説明より[1])。

2 of 14 tests in test/auth are still failing; lint has not been re-run yet.

評価器が返すコメントの例(概念図)

このコメントは 次のターンの Claude にも引き継がれるので、人間が「次は lint を流して」と言わなくても、Claude はそのヒントを読んで動きを継続できます。

達成後の表示も残る

ゴールが達成されると自動的にクリアされますが、その後も /goal を叩けば 「達成済みの条件・所要時間・ターン数・トークン」がそのセッションの履歴として確認できます。後から「あの自走、何分かかってたっけ」を振り返るのに便利です。

user@sinyblog:~/article 05_condition.md「効く完了条件」の書き方 3 原則

/goal は強力ですが、条件文の書き方しだいで成果が大きく変わります。評価器は「自分でコマンドを叩いてファイルを読む」ことはできず、会話のなかで Claude が表に出した出力だけを見て可否判定するためです[1]

公式が推奨する「長持ちする条件文」の構造は次の 3 点セットです。

  1. 計測可能な終端状態を 1 つだけ書く(テスト結果・ビルドの終了コード・ファイル数・キューが空・など)
  2. その確認手段を一緒に書く(例:「npm test exits 0」「git status is clean」)
  3. 途中で壊してはいけない制約があれば書く(例:「他のテストファイルは編集しない」)

ダメな書き方と効く書き方を 1 組だけ比べてみます。

区分 条件文 評価器が困る理由
NG 「コードを綺麗にする」 終端状態が無い。評価器は「綺麗」を判定できない
OK npm test exits 0、npm run lint exits 0、ファイル src/auth/*.ts 以外は変更しない」 3 要素(測定・確認手段・制約)が揃い、Claude の出力で検証可能

もう 1 つ覚えておきたいのが 「打ち切り句」です。完了条件のなかに 「もしくは 20 ターン経過したら止める」のような句を入れておくと、評価器はそれも判定材料にしてくれます。たとえば次のように書きます。

text— 打ち切り句付き


/goal `npm test` exits 0 and `npm run lint` exits 0, or stop after 20 turns
条件文中に turn 上限を明示する例(公式が推奨)[1]

これがないと、テストが永遠に直らないコードでゴールが回り続けて、想定外のトークンを溶かす可能性があります。「自走系コマンドには必ず止め時を一緒に渡す」と覚えておきましょう。

条件文は 4,000 文字まで

条件文は最長 4,000 文字です[1]。仕様書を丸ごと貼り付けても動きますが、評価器が判定すべき終端状態が散らかると精度が落ちます。長文を渡すときは、最後に「合格条件は次の通り」と箇条書きで束ねるのがおすすめです。

user@sinyblog:~/article 06_evaluator.md完了判定はどう行われるのか(評価モデルの正体)

「条件が満たされたかどうかは誰が決めるのか?」——これは /goal を使うとき必ず気になる点です。仕組みは次のようになっています[1]

  1. Claude が 1 ターン終わる
  2. その時点までの会話全体と完了条件が、契約中プロバイダの「small fast model」(既定では Haiku)に送られる
  3. その小さなモデルが Yes / No と短い理由を返す
  4. No なら、その理由が次ターンへのヒントとして Claude に渡され、自動的に次ターンが始まる
  5. Yes なら、ゴールは自動クリア。トランスクリプトに「achieved」として記録される

仕組み上、評価器は 自分でツールを呼ばない点が重要です。会話のなかで Claude が表に出した文字情報しか見られないので、たとえば「テスト全部緑」を判定させたいなら、Claude が npm test を実行してその出力を会話に貼り付ける必要があります(普通は実行すれば貼られるので、特別な工夫はほぼ不要)。

評価のコストはほぼ無視できる

評価には小さい高速モデル(既定 Haiku)が使われ、トークン課金もそちらに乗ります。公式は 「typically negligible compared to main-turn spend」 と説明しており[1]、本体ターンのコストに比べれば誤差レベルです。それでも気になる場合は model-config で評価器側のモデルを差し替えられます。

実装的には、/goal「セッション限定の prompt-based Stop hook」のラッパーです[1]。Stop hook を自分で書けば同じことができますが、/goal は「セッション内で 1 行で起動・解除できる」気軽さが売りです。逆に「全セッション共通で同じ判定を走らせたい」「シェルスクリプトで判定したい」場合は、settings に Stop hook を仕込むほうが向いています(後述)。

user@sinyblog:~/article 07_compare.md似た自走系コマンドとの違い(/loop / Stop hook / Auto mode)

Claude Code には、自走に使える仕組みがすでに複数あります。/goal をきれいに使い分けるには、それぞれが 「いつ次ターンを始めるか」「いつ止まるか」で何が違うかを押さえるのが近道です。公式のまとめを表にすると次のとおりです[1]

アプローチ 次ターンが始まるトリガ 止まる条件 向いている場面
/goal 前ターンが終わった瞬間 評価モデルが「条件を満たした」と判定 達成条件が明確な作業を自走させたい
/loop 一定時間が経過した瞬間 ユーザーが止めるか、Claude が「もう終わった」と判断 定期巡回・モニタリング・周期実行
Stop hook 前ターンが終わった瞬間 自分のスクリプト or プロンプトが判定 全セッション共通の判定ルールを固定したい
Auto mode (次ターンは始めない) Claude が「終わった」と判断 ツール承認だけを自動化したい

関係を一文で言うと、Auto mode は「ツール承認」を自動化し、/goal は「次ターンを開始するか」を自動化する、というレイヤーの違いです。両者は併用できます[1]。Auto mode で個別ツールの「許可しますか?」をスキップしつつ、/goal でターンの「続けますか?」もスキップする、というのが実用上いちばん強力な組み合わせです。

/loop との使い分け

/loop は時間ベースなので、たとえば「30 分おきに監視リポジトリを巡回して新しい issue があれば trial 実装」みたいな運用に向きます。一方 /goal は「達成 = 終了」のためのコマンドなので、「一日中ずっと走らせるもの」には設計上向いていません(あくまで合格判定が出るまでの一時的な自走)。

user@sinyblog:~/article 08_headless.md非対話実行と再開(-p / --resume

/goal は対話セッション専用ではありません。非対話モード(headless)でも、Remote Control 経由でも動きます[1]。CI からも cron からも呼べる、ということです。

公式の最小例はこうです。

bash— ヘッドレスでゴール起動


claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
公式の headless 例 / [1]

この 1 行で、Claude Code は 「今週マージされた全 PR が CHANGELOG.md に記載されている」を満たすまで自走し、達成したら 0 で終了します。途中で止めたいときは Ctrl+C で OK。

もう 1 つ覚えておきたいのが セッション再開時の挙動です。

  • claude --resume--continue でセッションを再開した場合、未達のゴールはそのまま引き継がれる
  • ただしターン数・経過時間・トークンのカウンタはリセットされる
  • すでに達成済み or 解除済みのゴールは復元されない

「昨日の自走を、今日は別マシンから続きたい」みたいなときに便利な仕様です。ただしカウンタはリセットされるため、コスト感の通算管理は別途必要になります。

user@sinyblog:~/article 09_use_cases.md使いどころ:今日から試せる 4 ユースケース

公式が想定例として挙げているのは、次の 4 つのような 「終端状態が検証可能」な仕事です[1]

  1. モジュールの API 移行:旧 API を呼んでいる全箇所をビルド成功&テスト通過まで書き換える
  2. 設計ドキュメントの実装:仕様書中の acceptance criteria を全部満たすまで実装と修正を続ける
  3. 大ファイルの分割:1 ファイル N 行以下になるまでモジュール分割
  4. ラベル付きの Issue バックログ整理:対象ラベルの Issue キューが空になるまで対応

個人開発寄りの例にも置き換えやすいので、3 つだけ条件文サンプルを置いておきます。コピペで動く形にしてあります。

text— サンプル条件文 ×3


// 1. テストと lint を全部通す
/goal `pytest` exits 0 and `ruff check` exits 0, or stop after 15 turns

// 2. 大ファイルを分割し、すべて 400 行以下にする
/goal every file under src/ is at most 400 lines, all tests still pass, or stop after 30 turns

// 3. TODO コメントを 0 件にする
/goal `grep -r "TODO" src/` returns no matches, no test breaks, or stop after 25 turns
それぞれ「測定値」「確認手段」「打ち切り」を明示している
向かない仕事

「いい感じにリファクタしてほしい」「読みやすくしてほしい」「ドキュメントを充実させて」のような 主観評価で終わるもの/goal 向きではありません。評価器が「終わった」を判定できないので、ゴールが切れずに延々と回ります。こういう案件は通常の対話 + /loop(時間で区切る)か、人間レビューで止めるほうが結果的に早いです。

user@sinyblog:~/article 10_requirements.md要件と注意点

/goalhooks システムの上で動いているため、ワークスペースの信頼設定が前提になります。具体的には次の 2 点です[1]

  • そのワークスペースで trust dialog(信頼ダイアログ)を承認済みであること
  • 管理ポリシーで disableAllHookstrue になっていないこと

どちらかを満たしていない場合、コマンドは黙って失敗するのではなく、その理由を表示して停止してくれます。企業環境などで動かない場合は、まず IT 管理者に hooks の有効化を相談するのが筋です。

自走の暴走を防ぐ 3 つの習慣

自動でターンが回るということは、放っておけばトークンも勝手に積み上がるということです。次の 3 点を「自走系コマンドを使う前のクセ」にしておくと事故が減ります。

  1. 条件文に必ず「or stop after N turns」を入れる
  2. Auto mode の自動承認範囲を broad にしすぎない(破壊的操作は手動承認に残す)
  3. /goal 中も画面の ◎ /goal active インジケータをチラ見してターン数・経過時間を確認する

user@sinyblog:~/article 99_summary.mdまとめ

ここまでを 3 点に圧縮します。

  1. /goal <完了条件> で Claude Code はターン跨ぎで自走する。判定は小さい評価モデル(既定 Haiku)が会話履歴を見て下す。
  2. 条件文は「終端状態 + 確認手段 + 制約 + 打ち切り句」の 4 点セットで書くと壊れにくい。「いい感じに」みたいな主観条件は向かない。
  3. Auto mode と組み合わせると効果が大きい。Auto mode が「ツール承認」を、/goal が「次ターン開始」を肩代わりしてくれるので、人間は完了通知が来るまで他の作業に集中できる。

慣れてくると、/goal は「タスク管理 UI」に近い感覚で扱えるようになります。GitHub Action や CI 上の cron からも投げられるので、夜のうちに走らせて朝には PR ができている、という運用も現実的です。まずは手元のテストプロジェクトで「テストが緑になるまで」のシンプルな条件文を 1 度試してみるのが、いちばん早く感覚を掴む方法です。

本記事は Anthropic 公式ドキュメント 「Keep Claude working toward a goal」code.claude.com/docs/en/goal)を一次情報として、運営者(現役 IT エンジニア・15 年以上の業界経験)が読解・編集・構成しています。引用文は原文を保持し、解釈・コード例の補足は編集部追記です。最新の仕様は必ず公式ドキュメントをご確認ください。

おすすめの記事