Goalモードとは何か
OpenAIの長時間実行ワークフローガイドには、次のような考え方が示されています。「多くのステップを要する作業では、ChatGPTに明確な成果、制約、および完了の定義を与えてください。関連する作業を同じチャット内に留めることで、ChatGPTは同じコンテキストを使用して次のステップを選択し、作業がいつ完了したかを判断できます。」
Goalモードは、これをコマンド化したものです。「ChatGPTデスクトップアプリ、Codex CLI、またはIDE拡張機能で /goal と入力します。ゴールのテキストは、最初のプロンプトであると同時に、タスクの完了基準にもなります。」
この2番目の文が、その挙動の大部分を説明しています。ゴールは単にタスクの開始方法ではありません。Codexがタスクが終了したかどうかを判断するために使用するテストなのです。
利用可能な場所
- ChatGPTデスクトップアプリ:
/goalと入力してGoalモードを開始します。コンポーザーの上のプログレス行で、ゴールのポーズ、再開、編集、クリアが可能です。 - Codex CLI: インタラクティブセッションで
/goalと入力し、同じセッションで継続して操作します。 - IDE拡張機能: 開いているワークスペースのチャットで
/goalと入力し、ゴールが実行されている間、ワークスペースを利用可能な状態に保ちます。
ChatGPTのウェブ版は動作が異なります。ウェブ版でのホスト型長時間実行タスクについては、ガイドではChatGPT Workを使用し、「成果、制約、レビュー基準をプロンプトに直接含める」よう指示されています。
Goalモードはデフォルトでオンになっています。構成リファレンスでは、goals は「永続的なゴールと自動継続を有効にする」機能として、デフォルトで有効な安定機能にリストされています。
コマンド一覧
CLIリファレンスには以下のコントロールが記載されています:
/goal <objective>:ゴールを設定します。/goal(単体):現在のゴールを表示します。/goal edit:ゴールを修正します。/goal pause、/goal resume、/goal clear:ゴールのポーズ、再開、削除を行います。
OpenAIの言葉を借りれば、期待される結果は「作業が継続されている間、Codexはアクティブなチャットにゴールを付随させ続ける」ことです。
ゴールが保持するもの
ゴールは意図的に小さく設計されています。保持される内容と場所は以下の通りです。
目的(Objective): 入力したテキスト。これは最初のプロンプトであり、完了基準でもあります。
ステータス: アクティブまたはポーズ状態。上記のコマンドやデスクトップアプリのプログレス行で制御されます。
特定のチャット内での場所: ゴールはアクティブなチャットに紐付けられます。長時間実行ワークフローガイドでは、並行作業について明示されています。「各チャットは、独自のコンテキスト、メッセージ、結果、およびゴールを保持します。」
進捗の集計: クライアントが使用するインターフェースを記述したアプリサーバーのドキュメントによると、ゴールにはトークン予算、使用されたトークン数、および使用時間が含まれます。また、編集時の挙動についても記載されています。「新しい目的を指定すると、ゴールが置き換えられ、使用状況の集計がリセットされます。」ステータスのみを変更する場合や、同じ目的を維持する場合は、使用履歴が保持されます。
サイズ制限: 「ゴールの目的は空であってはならず、最大4,000文字です。より長い指示が必要な場合は、詳細をファイルに記述し、ゴールからそのファイルを参照させてください。」
この最後の行は、制限事項の中で最も実用的な部分です。ゴールはターゲット(目標)であり、Codexが知るべきすべての情報を詰め込むコンテナではありません。
ゴールが代替できないもの
ゴールは永続的であるため、コンテキストを詰め込みたくなりますが、そのようには設計されていません。ドキュメントでは他の場所を推奨しています。
プロジェクトの指示事項
すべてのタスクに適用される規約やルールは AGENTS.md に記述すべきです。Codexの記憶(memories)に関するドキュメントには、「チームに必要なガイダンスは AGENTS.md またはチェックインされたドキュメントに保持してください」という一般原則が示されています。ゴールは一つのチャットに紐付きますが、AGENTS.md はリポジトリ内のすべてのチャットに適用されます。CodexがAGENTS.mdのルールをスキップするのを防ぐガイドでは、Codexがこれらのファイルをどのように見つけるかを解説しています。
記憶 (Memories)
Codexの記憶は、以前のチャットのコンテキストを後のチャットに引き継ぐもので、デフォルトではオフになっています。記憶のドキュメントでは、常に適用されるべきルールの唯一のソースではなく、「有用な想起レイヤー」と呼ばれています。ゴールは逆の役割を果たします。つまり、一つのチャットを一つの成果に集中させます。一方が他方の代わりになることはありません。Codexのローカル記憶をオンにするガイドで、記憶の仕組みを解説しています。
会話の残り部分
ゴールは、Codexが途中で学習した内容を保持しません。それはチャットの中にあります。ガイドが「関連する作業を同じチャット内に留める」ようアドバイスしているのはこのためです。チャットはコンテキストが存在する場所であり、ゴールはCodexが何を目指しているかを知るための手段です。長いチャットがコンテキスト制限に近づいた場合については、CodexにおけるGPT-6.1 Solのデフォルト500kコンテキストに関するガイドで、コンパクション(圧縮)がいつ行われるかを解説しています。
権限
ゴールを設定しても、Codexの行動範囲が広がるわけではありません。「ゴールを開始しても、ChatGPTに広範なアクセス権が付与されるわけではありません。同じサンドボックスと承認ポリシーが維持され、判断が必要な場合は一時停止します。」
持続可能なゴールの書き方
長時間実行ワークフローガイドでは、該当する場合に以下の3つの要素を含めることを推奨しています。
- 成果(Outcome): 「ChatGPTが実行すべき活動だけでなく、望む結果を記述してください。」
- 制約(Constraints): 「必要なツール、境界条件、互換性のニーズ、または避けるべきアプローチを指定してください。」
- 検証(Verification): 「作業が完了したことを証明するテスト、測定、またはレビュー基準を追加してください。」
OpenAI自身の例では、これら3つを2文にまとめています。「コードベースをJavaScriptからTypeScriptに移行し、既存の挙動を維持し、明示的な any 型を使用せずにstrictモードでコンパイルし、すべてのテストスイートをパスさせること。」
成果がまだ明確でない場合、ガイドは代わりに /plan から始めることを提案しています。「ChatGPTにインタビューを依頼し、制約を特定させ、その結果を測定可能な成功基準を持つゴールに変換させます。その後、洗練されたゴールを /goal で開始してください。」
実行中のゴールの操作
Codexが完了するのを待つ必要はありません。どのクライアントでも、同じチャットでフォローアップメッセージを送信してコンテキストを追加したり、制約を調整したり、ステータスの要約を求めたりすることができます。
デスクトップアプリには2つの追加オプションがあります。メインのチャットを中断せずにステータスの要約や説明が欲しいときは「サイドチャット」を使用できます。また、接続が切れることが予想される前にゴールをポーズし、Codexを続行させる準備ができたら再開することも可能です。
並行作業については、ガイドでは別々のチャットを実行し、2つのチャットが同じファイルを変更するのを避け、worktreeを使用して並行コーディングチャットに別々のチェックアウトを割り当てることが推奨されています。Macでは、「実行中のスリープ防止」によりローカルの作業を継続できます。
よくある間違い
指示書のすべてをゴールに書き込む: 目的は4,000文字に制限されています。長い指示はファイルに置き、ゴールからそのファイルを参照させてください。
方向転換のために新しいチャットを始める: ゴールとコンテキストは古いチャットにあります。作業中のチャットでゴールを編集するか、フォローアップを送信してください。
ゴールが次のチャットに引き継がれると期待する: 各チャットには独自のゴールがあります。新しいチャットはゴールがない状態で始まります。
AGENTS.md の代わりにゴールを使う: ゴールは一つのタスクをカバーします。すべてのタスクに適用されるルールは AGENTS.md に記述すべきです。
途中で目的を完全に入れ替える: 新しい目的を設定すると、ゴールが置き換えられ、使用状況の集計がリセットされます。制約を調整するだけであれば、フォローアップメッセージで十分な場合があります。
解決策:ゴールは短く保ち、詳細はファイルに置き、意図的に引き継ぐ
ステップ1:ゴールをテストとして書く
成果、制約、そして完了を証明するチェック方法を記述します。チェック方法を明文化できない場合は、/plan から始めて、そのプランをゴールに変換してください。ゴールは、Codexが終了を判断するために必要な情報だけに絞ります。
ステップ2:詳細は永続的な場所に置く
詳細な要件は、仕様書やタスクノートなどのリポジトリ内のファイルに記述し、ゴールからそのファイルを参照させます。このタスク以外にも適用される規約は AGENTS.md に記述します。どちらもゴールがクリアされた後も利用可能であり、他のファイルと同様にレビューできます。
ステップ3:チャットを切り替える前に引き継ぎを行う
別のチャット、別のマシン、またはworktreeで作業を継続する必要がある場合は、まず現在の状況(完了したこと、残っていること、決定事項)を書き留めます。Codexのハンドオフ機能は、ローカル、worktree、リモートホスト間でチャットを移動させます。Codexハンドオフのガイドでは、何が一緒に移動するかを説明しています。新しいチャットについては、ハンドオフプロンプトの書き方ガイドで含めるべき内容を解説しています。元の状態を失わずに別のアプローチを試したい場合は、Codexチャットのフォークに関するガイドを参照してください。
MemoryLakeでのセットアップ
ゴールは、一つのチャットを一つの成果に向けさせ続けます。なぜそのアプローチが選ばれたのか、何がうまくいかなかったのかといった作業から得られた決定事項は、ゴールよりも長生きし、次のタスク、チャット、またはツールでも必要になります。
MemoryLake は、そのようなコンテキストを一つのリストとして維持し、Codexや、ChatGPT、Claude Codeなどの接続された他のアシスタントから利用できるようにする記憶レイヤーです。
エントリーはあなた自身の言葉で記述します。あなたのゴール、チャット、AGENTS.md ファイル、Codexの記憶、あるいはベンダーのストレージから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。GoalモードはOpenAIが説明している通りに機能し続けます。
ステップ1:APIキーを作成する
サインインしてダッシュボードからキーを生成します。このキーはMemoryLakeワークスペースに属し、ChatGPTアカウントやCodexの構成とは別個のものです。

ステップ2:最初の記憶をアップロードする
直近の長いゴールから得られた内容(決定事項、発見した制約、除外したアプローチなど)から始めましょう。1エントリーにつき1ポイントとし、日付とリポジトリのラベルを付けます。

ステップ3:AIとエージェントを接続する
Codexや、普段使用している他のアシスタントを接続します。どのチャットやツールであっても、次のゴールは前回の作業で確定した内容から開始できます。

実践で何が変わるか
第一の違いは、長時間のタスクが意図した通りに完了することです。ゴールが完了テストとなるため、Codexはいつ停止すべきかを把握できます。
第二に、ゴールを小さく保てることです。詳細はチャットよりも長生きするファイルに、ルールは AGENTS.md に集約されます。
第三に、チャットを切り替えても最初からやり直す必要がないことです。状態を書き留めることで、意図的に引き継ぎを行うことができます。
Codex Goalモードのベストプラクティス
成果、制約、検証方法を明記する。 ゴールは完了基準でもあります。
4,000文字以内に収める。 残りの情報はファイルを参照させます。
同じチャットで操作する。 そこにゴールとコンテキストがあります。
成果が不明確な場合は /plan を使う。 その後、プランをゴールに変換します。
接続が切れる前にポーズする。 準備ができたら再開します。
並行チャットには別々のworktreeを割り当てる。 各チャットは独自のゴールとコンテキストを保持します。
ルールは AGENTS.md に置く。 ゴールは一つのタスクをカバーするものです。
結論
Goalモードは、長時間のCodexタスクに永続的なターゲットを与えます。デスクトップアプリ、CLI、またはIDE拡張機能で /goal を使用して設定し、ゴールのテキストは最初のプロンプトと完了基準の両方の役割を果たします。ゴールはチャットに紐付けられ、最大4,000文字の目的、ステータス、使用状況を保持しますが、Codexの権限を広げるものではありません。
ゴールをテストとして記述し、詳細は参照ファイルに置き、ルールは AGENTS.md に保持し、作業が別のチャットに移る際は意図的に引き継ぎを行いましょう。