サービスアカウントを使うと、従業員のアカウントに依存せずに、組織全体でヘッドレスの Codex ワークフローを実行し、規模を拡大できます。継続的インテグレーション(CI)のランナー、スケジュール済みジョブ、共有の連携機能には、それぞれ専用の ChatGPT ワークスペース上のアイデンティティが割り当てられます。人間のユーザーと同じグループ、ロール、アクセス制御、監査の仕組みが適用されます。
ワークスペースのオーナーと管理者だけがサービスアカウントを作成できます。他のユーザーやグループに、アカウントの管理、プラグインの設定、アクセストークンの作成を許可することもできます。
サービスアカウントは、人間ではない主体を表すワークスペースのアイデンティティです。個人用アクセストークンは、それを作成したワークスペースメンバーを表します。API プラットフォームのプロジェクト用サービスアカウントと API キーでは、プロジェクトへのアクセスと課金が別に管理されます。
サービスアカウントの作成と設定
この対話型チュートリアルでは、GitHub を例に、アカウントの作成、プラグインの設定、トークンの作成、グループとロールの割り当てを行います。
操作を試せるチュートリアル
プラスボタンを選択してサービスアカウントに名前を付け、「作成」を選択します。
サービスアカウント
個別のアクセス権限を必要とする自動化ワークフロー向けに、ワークスペース所有のアカウントを作成します。
| 名前 | 稼働状況 | 作成者 | 追加日 | 操作 |
|---|---|---|---|---|
| 有効 | Alex Kim alex@example.com | Jul 23, 2026 | ||
| 有効 | Jordan Lee jordan@example.com | Jul 18, 2026 | ||
| 有効 | Sam Patel sam@example.com | Jul 8, 2026 |
- ワークスペースの設定でサービスアカウントを開きます。
- プラス(+)ボタンを選択し、
release-automationのような用途がわかる名前を入力します。 - 作成を選択します。
プラグインの接続
サービスアカウント自体にプラグインを設定します。作成者のプラグインや接続済みアプリは引き継がれません。
- アカウントの プラグイン セクションを開き、 プラグインを追加を選択します。
- プラグインを選択し、設定済みまたは有効と表示されることを確認します。
設定 ロールと マネージャー ロールでは、プラグインを設定できます。 ユーザー ロールでは設定できません。
アクセストークンの作成
サービスアカウントの詳細ページからトークンを作成します。このトークンは、作成者ではなくサービスアカウントを表します。
- アカウントを開き、 アクセストークンで トークンを作成 を選択します。
- トークンに名前を付け、 Codex スコープを確認して、有効期限を選択します。
- 作成 を選択し、トークンをシークレットマネージャーに保存します。
トークン全体が表示されるのは一度だけです。選択できる有効期限はワークスペースのポリシーによって決まります。
ロールとグループの割り当て
人間のワークスペースメンバーと同様に、サービスアカウントにもワークスペースのロールを割り当てたり、グループに参加させたりできます。作成者の権限は引き継がれないため、アクセス権を直接割り当てます。
個人やグループがアカウントを管理できるようにするには、 共有、 ユーザーまたはグループを追加の順に選択し、ロールを割り当てます。
| 共有アカウントのロール | アカウントとそのプラグインの設定 | サービスアカウントのアクセストークンの作成 |
|---|---|---|
| ユーザー | いいえ | はい |
| 設定 | はい | いいえ |
| マネージャー | はい | はい |
これらのロールは、アカウントを管理するユーザーに適用されます。サービスアカウントに割り当てられるワークスペースのロールやグループとは別のものです。
設定 ロールと マネージャー ロールでは、アカウントを有効または無効にできます。アカウントの作成、削除、共有ができるのは、ワークスペースのオーナーと管理者のみです。オペレーターは自身の ChatGPT アカウントにサインインした状態で共有アカウントを管理します。
ワークスペースの権限について詳しくは、ロールとワークスペースの権限を参照してください。
サインインせずに Codex を実行
サービスアカウントのアクセストークンを使用するには、Codex CLI バージョン 0.142.0 以降が必要です。CODEX_ACCESS_TOKEN を設定し、ブラウザを開かずに Codex を実行します。
export CODEX_ACCESS_TOKEN="<service-account-access-token>"
codex exec --json "Inspect this repository and summarize its current state."
CI では、シークレットマネージャーまたはランナーのシークレットを通じてトークンを渡します。
信頼できるマシンにログイン情報を保存するには、標準入力を通じてトークンを渡します。
printf '%s' "$CODEX_ACCESS_TOKEN" | codex login --with-access-token
codex exec "Summarize the changes in the current branch."
これにより、認証情報がローカルに保存されます。共有ランナーや一時的なランナーでは、ログイン情報を保存せずに CODEX_ACCESS_TOKEN を使用します。
SCIM によるサービスアカウントのプロビジョニング
ワークスペースが System for Cross-domain Identity Management(SCIM)プロトコルによるサービスアカウントのプロビジョニングに対応している場合は、アイデンティティプロバイダーで userType を ServiceAccount に設定します。
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"userName": "svc-codex-release@company.example",
"displayName": "Codex release automation",
"active": true,
"userType": "ServiceAccount"
}
アイデンティティをワークスペースと必要なグループに割り当て、同期します。アカウント名、所属グループ、ライフサイクルはアイデンティティプロバイダーが管理します。SCIM で管理されているアカウントは、ChatGPT で名前を変更したり削除したりできません。グループとプロビジョニングを参照してください。
Admin API によるサービスアカウントの管理
ワークスペースで Admin API を利用できる場合は、ChatGPT Admin API キーを使用してアカウント、トークン、共有を管理します。読み取り操作には chatgpt.enterprise.service_account.read が必要で、変更操作には chatgpt.enterprise.service_account.write が必要です。サービスアカウントのトークンでは Admin API リクエストを認証できません。
利用可能な操作と現在のリクエストパスについては、Admin API リファレンスを確認してください。
アカウント
| 操作 | メソッド | 処理内容 |
|---|---|---|
| アカウント一覧の取得 | GET | ワークスペースのサービスアカウントを返します。 |
| アカウントの作成 | POST | 名前を指定してサービスアカウントを作成します。 |
| アカウントの取得 | GET | サービスアカウントを 1 件返します。 |
| アカウントの有効化または無効化 | PATCH | アカウントの enabled の値を更新します。 |
| アカウントの削除 | DELETE | アカウントを削除し、そのトークンを失効させます。 |
POST /v1/manage/workspaces/{workspace_id}/service-accounts を使用してアカウントを作成します。アカウントの更新で変更できるのは enabled のみです。
トークン
| 操作 | メソッド | 処理内容 |
|---|---|---|
| トークン一覧の取得 | GET | アカウントのトークンに関するメタデータを返します。 |
| トークンの作成 | POST | スコープを設定したアクセストークンを作成します。 |
| トークンの失効 | DELETE | 1 つのトークンを恒久的に失効させます。 |
たとえば、30 日後に有効期限が切れる Codex トークンを作成します。
{
"name": "production-release-runner",
"ttl": 2592000,
"scopes": ["chatgpt.workspace.feature.allow-codex-local-access.access"]
}
ttl はトークンの有効期間を秒単位で表します。有効期限を設定する場合は、期間を 1 年未満とし、ワークスペースの有効期限ポリシーに従う必要があります。access_token の完全な値が返されるのは、トークンの作成時のみです。
Admin API では、共有アカウントへのアクセス権の一覧取得、追加、更新、削除も行えます。ロールの値は manager、configurer、user です。configurer は ChatGPT では 設定 と表示されます。
サービスアカウントの保護と管理
- ロール、グループ、プラグイン、接続は、ワークフローに必要なものだけを許可してください。
- トークンはシークレットマネージャーに保存し、信頼できるランナーを使用してください。
- ログ、チャットメッセージ、ソースコード管理に認証情報を含めないでください。
- 有効期限を設け、アカウントへのアクセスとアクティビティを定期的に確認してください。
- トークンをローテーションするには、代わりのトークンを作成し、ワークフローを更新してアクセスを確認した後、ワークスペースまたは Admin API で古いトークンを失効させてください。
- 漏洩したトークンは直ちに失効させ、アカウントの最近のアクティビティを調査してください。
- 使用していないアカウントは、ワークスペースまたは Admin API で無効化または削除してください。どちらの操作でも、有効なトークンはすべて失効します。無効化したアカウントは再度有効化し、新しいトークンで利用できますが、削除は取り消せません。
各実行はサービスアカウントに紐付けられます。利用可能なワークスペースの分析や監査記録から、トークンの作成者やアカウント設定の変更者も特定できます。対象となるイベントは、Admin API リファレンスで確認してください。