自動レビューは、ChatGPT や Codex の自動承認機能と同様に、エージェントの作業中に発生した承認リクエストのうち、レビュー対象のものを自動的に承認または拒否します。エージェントのセッションを作成するときに、review フィールドで設定します。この設定は、ルートターンと、各ルートターンで作成されるすべてのサブエージェントに適用されます。
-
アクションのレビュー
エージェントとそのサブエージェントからのリクエストのうち、レビュー対象のものを自動的に承認または拒否します。
-
タスク間でのレビューモードの変更
次のルートターンに適用するレビューモードを選択できます。
-
ネットワーク制限の維持
レビュー結果にかかわらず、環境の外向きネットワーク通信には設定済みの制限が適用されます。
-
レビューモードを設定し、保留中のアクションを確認できます。
-
-
環境テンプレート
/v1/agents/environments/templates
-
セッションイベント
/v1/agents/sessions/{session_id}/events
進行状況を追跡し、ターンがどのように終了したかを確認できます。
自動レビューを使うと、Codex ハーネスの「代わりに承認」機能をエージェントでも利用できます。セッション中に、エージェントがアクションを実行するために追加の権限を求めると、承認リクエストが発生することがあります。対象となるアクションの例を以下に示します。
- 権限の昇格や危険を伴う可能性のあるコマンドの実行など、承認が必要なシェルコマンドやターミナル入力
- 承認が必要なファイル変更
- ファイルシステムやネットワークへのアクセス範囲の拡大など、追加の権限を求めるリクエスト
- 環境のネットワーク制限の範囲内で、承認が必要となるネットワークアクセスのリクエスト
- 承認ルールで確認が必要とされる MCP ツール呼び出し
OpenAI が管理するレビューモデルは、会話のコンテキストを基に、アクションを実行すると何が起きるか、どのようなリスクがあるか、ユーザーの意図に沿っているかを評価します。その結果に基づいて、リクエストを承認または拒否します。
レビューに使用したトークンの料金は、エージェントのモデル利用料に加算されます。
ブラウザのオリジンへのアクセス要求とサインイン要求は、引き続きアプリケーションで処理します。入力が必要な MCP フォームや、ユーザーを URL に誘導するリクエストも、従来どおりの手順で処理します。自動レビュー用に新しい承認イベントハンドラーを追加する必要はありません。エージェントの進行状況を追跡し、ターンの結果を確認する方法は、イベントとアイテムを参照してください。
セッションの review フィールドに次のいずれかの値を設定します。
| 値 |
動作 |
"auto_review" |
アクションのリスクと会話内のユーザーの指示に基づいて、対象のリクエストを自動的に承認または拒否します。 |
"none" |
自動レビューを適用しません。ほとんどのアクションは、環境の権限と制限に従って直接実行されます。 |
review を省略した場合の既定値は "none" です。セッションを再開しても設定は保持されます。設定を変更するには、"auto_review" または "none" を送信してください。null は指定できません。review を "none" に設定しても、手動承認のために対象のアクションがアプリケーションに送られることはありません。
OpenAI がホストする環境で実行する場合は、新しい環境でセッションを作成してください。必要に応じて、環境テンプレートから環境を作成できます。environment_id で既存のホスト環境を再利用する場合、自動レビューは利用できません。
セルフホスト環境で実行する場合は、自動レビューを有効にする前に、セルフホスト環境の設定手順に従い、使用する OS のサンドボックスの前提条件を満たしてください。review を設定するだけでは、環境のサンドボックスは構成されません。
自動レビューを使用しても、環境のネットワーク制限は変わりません。外向きのアクセスは、環境のネットワーク設定で構成してください。ブラウザのオリジンへのアクセスを承認しても、これらの制限は引き続き適用されます。
セッションの作成時に review を "auto_review" に設定します。この例では、エージェントに npm install を /workspace で実行するよう指示します。
API キーと SDK を設定してから、既存のエージェントと環境テンプレートを使用してください。テンプレートには、Node.js と、/workspace/package.json を含むプロジェクトが必要です。例にあるエージェント ID とテンプレート ID は、ご自身のものに置き換えてください。
1
2
3
4
5
6
7
8
9
10
11
12
13import OpenAI from "openai";
const client = new OpenAI();
const session = await client.beta.agents.sessions.create({
agent_id: "agt_123",
environment: {
type: "openai_hosted",
environment_template_id: "envtmpl_123",
},
review: "auto_review",
input: "Run npm install in /workspace.",
});
console.log(session.id);
1
2
3
4
5
6
7
8
9
10
11
12
13from openai import OpenAI
client = OpenAI()
session = client.beta.agents.sessions.create(
agent_id="agt_123",
environment={
"type": "openai_hosted",
"environment_template_id": "envtmpl_123",
},
review="auto_review",
input="Run npm install in /workspace.",
)
print(session.id)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
)
client := openai.NewClient()
session, err := client.Beta.Agents.Sessions.New(context.Background(), openai.BetaAgentSessionNewParams{
AgentID: openai.String("agt_123"),
Environment: openai.EnvironmentParamUnion{
OfParamOpenAIHosted: &openai.EnvironmentParamOpenAIHosted{
EnvironmentTemplateID: openai.String("envtmpl_123"),
},
},
Review: openai.BetaAgentSessionNewParamsReviewAutoReview,
Input: openai.BetaAgentSessionNewParamsInputUnion{OfString: openai.String("Run npm install in /workspace.")},
})
if err != nil {
panic(err)
}
fmt.Println(session.ID)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.beta.agents.EnvironmentParam;
import com.openai.models.beta.agents.sessions.SessionCreateParams;
OpenAIClient client = OpenAIOkHttpClient.fromEnv();
var session =
client
.beta()
.agents()
.sessions()
.create(
SessionCreateParams.builder()
.agentId("agt_123")
.environment(
EnvironmentParam.OpenAIHosted.builder()
.environmentTemplateId("envtmpl_123")
.build())
.review(SessionCreateParams.Review.AUTO_REVIEW)
.input("Run npm install in /workspace.")
.build());
System.out.println(session.id());
1
2
3
4
5
6
7
8
9
10
11
12
13require "openai"
client = OpenAI::Client.new
session = client.beta.agents.sessions.create(
agent_id: "agt_123",
environment: {
type: :openai_hosted,
environment_template_id: "envtmpl_123"
},
review: :auto_review,
input: "Run npm install in /workspace."
)
puts session.id
1
2
3
4
5
6
7
8
9
10
11
12
13curl --fail-with-body https://api.openai.com/v1/agents/sessions \
-H "OpenAI-Beta: agents=v1" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "agt_123",
"environment": {
"type": "openai_hosted",
"environment_template_id": "envtmpl_123"
},
"review": "auto_review",
"input": "Run npm install in /workspace."
}'
返されたセッションの id を使って、タスクの合間にレビューモードを変更できます。リクエストのフィールドについては、セッション作成のリファレンスを参照してください。
自動レビューを有効にするには、プロジェクトで自動レビューを利用できる必要があります。利用できない場合、API は有効化のリクエストを拒否し、該当するパラメーターとして review を示します。
タスクの合間にセッションの review フィールドを更新します。モードを変更できるのは、メインタスクがアイドル状態で、入力の送信処理が完了しているときです。この例では、自動レビューを無効にします。sess_123 は、先ほど返されたセッション ID に置き換えてください。
const updatedSession = await client.beta.agents.sessions.update("sess_123", {
review: "none",
});
console.log(updatedSession.id);
updated_session = client.beta.agents.sessions.update("sess_123", review="none")
print(updated_session.id)
updatedSession, err := client.Beta.Agents.Sessions.Update(context.Background(), "sess_123", openai.BetaAgentSessionUpdateParams{
Review: openai.BetaAgentSessionUpdateParamsReviewNone,
})
if err != nil {
panic(err)
}
fmt.Println(updatedSession.ID)
import com.openai.models.beta.agents.sessions.SessionUpdateParams;
var updatedSession =
client
.beta()
.agents()
.sessions()
.update(
SessionUpdateParams.builder()
.sessionId("sess_123")
.review(SessionUpdateParams.Review.NONE)
.build());
System.out.println(updatedSession.id());
updated_session = client.beta.agents.sessions.update("sess_123", review: :none)
puts updated_session.id
curl --fail-with-body https://api.openai.com/v1/agents/sessions/sess_123 \
-X POST \
-H "OpenAI-Beta: agents=v1" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"review": "none"
}'
更新に成功すると、200 OK と更新後のセッションが返されます。セッションのほかの設定を更新するときは、review を省略すると現在の値が保持されます。自動レビューを再度有効にするには、"review": "auto_review" を送信します。リクエストのフィールドについては、セッション更新のリファレンスを参照してください。
メインタスクが実行中の場合、または入力の送信処理が完了していない場合にモードの変更をリクエストすると、409 Conflict が返されます。そのリクエストに含まれる更新はどれも適用されません。メインタスクがアイドル状態になり、入力の送信処理が完了してから再試行してください。セッションの状態を確認してから更新するまでの間に新しい入力が届くことがあるため、状態を確認した場合でも 409 を処理してください。現在のレビューモードと同じ値であれば、作業中でも送信できます。
セッションを取得するか、セッションの一覧を取得すると、保存されている review の値を確認できます。レスポンスにこのフィールドが含まれていない場合は、"none" として扱ってください。