チームのメンバーには、ChatGPT アカウントで Codex にサインインすることをおすすめします。対応プランでは、マネージド設定を利用できます。自社でサーバーを運用せずに、管理コンソールの Agent security でデフォルト値を設定し、要件を適用できます。
ユーザーが ChatGPT アカウントで Codex にサインインしない場合は、自社で運用する HTTPS サーバーから Codex CLI とデスクトップアプリに設定を配信できます。ユーザーがモデルプロバイダーに直接接続する場合も、ゲートウェイ経由で接続する場合も、Codex は起動時に設定を読み込みます。
クライアントの制限事項
デスクトップアプリでは、設定サーバーへのサインインを求める画面を表示できません。サーバーへのサインインが改めて必要な場合は、同じコンピューターのターミナルで codex login を実行してから、アプリを開き直してください。必須設定を読み込めない場合、アプリの起動処理は一時停止します。
Codex の接続先サーバーの設定
テスト用のコンピューターで、システムの requirements.toml を作成または更新します。[config_server] テーブルを追加し、設定サーバーのベース URL を指定します。Linux と macOS では /etc/codex/requirements.toml、Windows では %ProgramData%\OpenAI\Codex\requirements.toml を使用します。macOS では、管理対象の環境設定を通じてこのテーブルを配布することもできます。
[config_server]
base_url = "https://codex-config.example.com/team"
サーバーを指定できるのは、管理者が管理するローカルの要件設定だけです。ポリシーのほかの部分をエンドポイントに移す際も、このテーブルはコンピューターに残してください。
設定サーバーへのアクセス認証(任意)
デフォルトでは、Codex は認証情報を使わずに設定の取得を試みます。サーバーへのサインインが必要な場合は、[config_server.oauth] を同じ requirements.toml ファイルに追加します。Codex は Proof Key for Code Exchange(PKCE)を使用する OAuth 認可コードフローに従います。
[config_server.oauth]
authorization_url = "https://login.example.com/oauth/authorize"
token_url = "https://login.example.com/oauth/token"
client_id = "codex-policy"
redirect_port = 43127
この例のリダイレクト URI は http://127.0.0.1:43127/callback です。プロバイダーが任意の空きポートでループバックコールバックを受け付ける場合は、redirect_port を省略できます。Codex は Authorization ヘッダーにアクセストークンを含めて送信します。サーバーはバンドルを返す前に、このトークンを検証する必要があります。
Codex 設定の配信
マネージド設定を HTTPS エンドポイントでホストします。Codex CLI はバンドルを取得する際、ローカルの requirements.toml に指定されたベース URL を使って、次の GET リクエストを送信します。
GET {config_server.base_url}/codex/config/bundle
前述の初期設定例の base_url を使用すると、Codex は次のリクエストを送信します。
GET https://codex-config.example.com/team/codex/config/bundle
ステータス 200 OK を返し、レスポンスボディに JSON 形式の設定バンドルを含めます。
設定バンドルの形式
バンドルでは、TOML のエントリを次の 2 つの配列に分けます。
config_toml.enterprise_managedには、適用するデフォルト設定を格納します。各エントリのcontentsには、config.toml形式のテキストを指定します。requirements_toml.enterprise_managedには、適用を必須とする要件を格納します。各エントリのcontentsには、requirements.toml形式のテキストを指定します。
各配列のエントリには、id、name(表示名)、contents の 3 つの文字列フィールドがあります。不要なカテゴリには空の配列を指定します。
次の例では、ウェブ検索のデフォルト値を disabled に設定し、allowed_web_search_modes でその値だけを許可します。
{
"config_toml": {
"enterprise_managed": [
{
"id": "search-default",
"name": "Default web search",
"contents": "web_search = 'disabled'"
}
]
},
"requirements_toml": {
"enterprise_managed": [
{
"id": "search-policy",
"name": "Allowed web search modes",
"contents": "allowed_web_search_modes = ['disabled']"
}
]
}
}
Codex での設定の確認
- テスト用のコンピューターで、プロジェクトディレクトリを作業ディレクトリとしてターミナルを開き、
codexを実行します。サインインを求められた場合は、会社のアカウントでサインインします。 - Codex CLI の対話型プロンプトに
/debug-configと入力し、Enter キーを押します。 - デフォルト設定を配信している場合は、Config layer stack で各設定の名前と ID を確認します。上記の例では、
enterprise-managed (Default web search, search-default) (enabled)を探します。 - 要件を配信している場合は、Requirements で適用を必須とした設定を探し、その横に表示されるポリシーの取得元を確認します。
Codex はキャッシュされた設定で起動し、バックグラウンドで設定を更新できます。サーバー上のポリシーを変更したら、Codex が設定を更新するまで待ちます。その後、新しいセッションを開始してもう一度設定を確認してから、ほかのコンピューターに展開してください。