For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
メインナビゲーション

ボールト

MCP の認証情報を保存し、エージェントのセッションに関連付けます。

ボールトは、OpenAI からの MCP 接続に使用する認証情報を保存します。セッションに関連付けると、エージェントはシークレット値を受け取ることなく、認証が必要なツールを使用できます。

ボールトは Bearer トークンと既存の OAuth 認可グラントに対応しています。お使いの環境から接続する場合は、その他の MCP 認証オプションを使用してください。

権限

制限付きアプリケーションキーには、次の権限を付与します。

  • api.vaults.read:ボールトと認証情報の一覧表示と取得
  • api.vaults.write:ボールトと認証情報の作成、更新、削除

ボールトの作成と使用

API クライアント、MCP サーバーの URL(mcp_url)、そのサーバーのアクセストークン(access_token)を使用します。以下の例では GitHub のツールを使用します。

まず、ボールトを作成します。

ボールトの作成
const vault = await client.beta.agents.vaults.create({
  name: "GitHub credentials",
  metadata: {
    external_user_id: "user_123",
  },
});

ボールトの ID を vault_id として保存し、トークンを追加します。mcp_server_url は認証情報をそのサーバーに関連付けます。

Bearer トークンの保存
// Replace the illustrative IDs and URLs below with your own resource values.
const vaultId = "vault_123";
const mcpUrl = "https://api.githubcopilot.com/mcp/";
const accessToken = process.env.GITHUB_TOKEN;

const credential = await client.beta.agents.vaults.credentials.create(vaultId, {
  name: "GitHub access token",
  auth: {
    type: "static_bearer",
    mcp_server_url: mcpUrl,
    token: accessToken,
  },
});

後で更新する際に使用できるように、認証情報の ID を credential_id として保存します。

セッションを作成する際に、保存した ID を vault_ids に渡します。MCP の構成には同じサーバー URL を使用します。

セッションへのボールトの関連付け
// Replace the illustrative IDs and URLs below with your own resource values.
const mcpUrl = "https://api.githubcopilot.com/mcp/";
const vaultId = "vault_123";

const session = await client.beta.agents.sessions.create({
  agent: {
    model: "gpt-6-astra",
    tools: [
      {
        type: "mcp",
        server_label: "github",
        transport: {
          type: "http",
          server_url: mcpUrl,
        },
        allowed_tools: ["search_issues", "issue_read"],
        required: true,
        connection_origin: "service",
      },
    ],
  },
  environment: {
    type: "none",
  },
  input: "Find open bugs reported in the last week.",
  vault_ids: [vaultId],
});

Agents API は、サーバー URL に一致する認証情報を選択します。関連付けられた認証情報が複数一致する場合は、MCP ツールの credential_id を設定して 1 つを選択します。ボールトや認証情報を取得しても、シークレット値は返されません。

OAuth 認証情報の使用

プロバイダーの認可と同意のフローは、アプリケーション側で処理します。その結果得られた認可グラントを auth.type: "mcp_oauth" で保存します。アクセストークンの有効期限がわかっている場合は、RFC 3339 形式のタイムスタンプとして expires_at に設定します。

次の例では、プロバイダーの OAuth フローで得られた値を使用します。Agents API がトークンをリフレッシュできるように、refresh を含めます。

OAuth 認可グラントの保存
// Replace the illustrative expiry with your access token's actual expiry.
// Replace the illustrative IDs and URLs below with your own resource values.
const vaultId = "vault_123";
const mcpUrl = "https://mcp.example.com/mcp";
const accessToken = process.env.OAUTH_ACCESS_TOKEN;
const expiresAt = "2030-01-01T00:00:00Z";
const tokenEndpoint = "https://auth.example.com/oauth/token";
const clientId = "example-client-id";
const refreshToken = process.env.OAUTH_REFRESH_TOKEN;

const credential = await client.beta.agents.vaults.credentials.create(vaultId, {
  name: "Example MCP OAuth credential",
  auth: {
    type: "mcp_oauth",
    mcp_server_url: mcpUrl,
    access_token: accessToken,
    expires_at: expiresAt,
    refresh: {
      token_endpoint: tokenEndpoint,
      client_id: clientId,
      refresh_token: refreshToken,
      token_endpoint_auth: {
        type: "none",
      },
    },
  },
});

プロバイダーが要求するトークンエンドポイントの認証方式を使用します。この例では none を使用していますが、client_secret_basicclient_secret_post にも対応しています。各フィールドについては、認証情報の作成リファレンスを参照してください。

期限切れのトークンをリフレッシュできない場合は、有効なトークンに置き換えてください。トークンの有効期限が切れても、認証情報やそのボールトは削除されません。

認証情報のローテーションと削除

認証情報を更新すると、ID、認証タイプ、サーバー URL を変更せずにトークンを置き換えられます。OAuth の場合は、保存した vault_idcredential_id を、置き換え用のトークンと有効期限とともに使用します。

OAuth トークンのローテーション
// Replace the illustrative expiry with your access token's actual expiry.
// Replace the illustrative IDs and URLs below with your own resource values.
const credentialId = "cred_123";
const vaultId = "vault_123";
const accessToken = process.env.OAUTH_ACCESS_TOKEN;
const expiresAt = "2030-01-01T00:00:00Z";

const credential = await client.beta.agents.vaults.credentials.update(
  credentialId,
  {
    vault_id: vaultId,
    ...{
      auth: {
        type: "mcp_oauth",
        access_token: accessToken,
        expires_at: expiresAt,
      },
    },
  }
);

置き換え用のトークンに有効期限がある場合は、expires_at を含めます。有効期限を指定せずに新しいアクセストークンを渡すと、保存済みの有効期限がクリアされます。明示的に null を指定した場合もクリアされます。

認証情報が不要になったら、認証情報を削除します。ボールトを削除すると、ボールトとその中のすべての認証情報が削除されます。

保存済みの認証情報を削除しても、プロバイダー側で元のトークンが失効したり、実行中のセッションが停止したりすることはありません。プロバイダー側でのトークンの失効とセッションのキャンセルは、アプリケーション側で処理します。