For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal
Theme

Bóvedas

Almacena secretos para conexiones MCP o solicitudes que se originan en el sandbox.

Una bóveda almacena credenciales fuera de las instrucciones y la configuración de tu agente. Vincúlala a una sesión mediante vault_ids para que la sesión pueda usar esas credenciales.

Elige el tipo de credencial según el origen de la solicitud:

Solicitud Tipo de credencial Cómo usa la credencial la sesión
Conexión MCP desde OpenAI static_bearer o mcp_oauth OpenAI se autentica ante el servidor MCP configurado.
Solicitud a una API desde un sandbox alojado en OpenAI environment_variable El código usa una variable de entorno que contiene un marcador de posición. Un proxy de red sustituye el marcador por el secreto en las solicitudes a los hosts autorizados.

Por ejemplo, un sandbox puede usar un secreto de una bóveda para llamar a la API REST de GitHub. Sigue los pasos de Usar secretos de una bóveda para enviar solicitudes a una API desde un sandbox.

Al consultar una bóveda o una credencial, la respuesta no incluye los valores secretos. Para otras conexiones MCP, consulta las opciones de autenticación de MCP.

Permisos

Para una clave de aplicación restringida, otorga estos permisos:

  • api.vaults.read para listar y consultar bóvedas y credenciales.
  • api.vaults.write para crearlas, actualizarlas o eliminarlas.

Crear y usar una bóveda para secretos de MCP

Usa tu cliente de API, la URL del servidor MCP (mcp_url) y un token de acceso para ese servidor (access_token). Los ejemplos usan herramientas de GitHub.

Primero, crea una bóveda:

Crear una bóveda
const vault = await client.beta.agents.vaults.create({
  name: "GitHub credentials",
  metadata: {
    external_user_id: "user_123",
  },
});

Guarda el ID de la bóveda como vault_id y luego agrega el token. El campo mcp_server_url vincula la credencial a ese servidor:

Almacenar un token de portador
// 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,
  },
});

Guarda el ID de la credencial como credential_id para futuras actualizaciones.

Pasa el ID de la bóveda en vault_ids al crear una sesión. Usa la misma URL del servidor en la configuración de MCP:

Vincular la bóveda a una sesión
// 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],
});

La API de agentes selecciona una credencial cuya URL coincide con la del servidor. Si varias credenciales vinculadas coinciden, asigna el ID de la que quieras usar al campo credential_id de la herramienta MCP.

Usar secretos de una bóveda para enviar solicitudes a una API desde un sandbox

Usa una credencial de tipo environment_variable para proporcionar un secreto en las solicitudes a una API desde un sandbox alojado en OpenAI. El sandbox recibe un marcador de posición en la variable de entorno especificada. El secreto real permanece fuera del sandbox.

Este flujo de trabajo requiere un entorno de tipo openai_hosted. No proporciona credenciales a entornos que alojas por tu cuenta ni a herramientas de función que ejecuta tu aplicación.

Almacenar el token de la API

Crea una bóveda como se muestra arriba. Luego, envía una solicitud de creación de credencial a POST /v1/vaults/{vault_id}/credentials con estos campos:

Campo Valor para un token de la API de GitHub
name GitHub API token
auth.type environment_variable
auth.secret_name GITHUB_TOKEN
auth.secret_value El token que tu aplicación lee de una variable de entorno secreta.
auth.networking.type limited
auth.networking.allowed_hosts ["api.github.com"]

secret_name identifica la variable de entorno que lee el código del sandbox. secret_value contiene la credencial real. No la incluyas en prompts, archivos de código fuente ni registros.

Especifica los nombres exactos de los hosts en allowed_hosts, sin esquema, ruta, puerto ni comodines. El proxy solo proporciona secretos a destinos HTTPS que usan el puerto 443 o el 8443.

Vincular la bóveda a una sesión alojada en OpenAI

Incluye los siguientes campos junto con agent al crear una sesión. Reemplaza vault_123 por el ID de la bóveda que devolvió la API:

{
  "vault_ids": ["vault_123"],
  "environment": {
    "type": "openai_hosted",
    "network": {
      "access": "restricted",
      "allowed_domains": ["api.github.com"]
    }
  }
}

Las dos listas de hosts tienen funciones distintas. allowed_domains permite que el sandbox se conecte a un host. El campo allowed_hosts de la credencial permite que el proxy proporcione el secreto a ese host.

Si el acceso a la red está restringido, incluye en allowed_domains todos los hosts de cada credencial. No establezcas network.access en disabled para una sesión con credenciales de entorno.

Cada credencial de entorno vinculada debe tener un secret_name único. No definas ese mismo nombre en environment.env.

Llamar a la API desde el sandbox

Envía un mensaje al agente y pídele que ejecute este comando en el sandbox:

curl https://api.github.com/user \
  -H "Authorization: Bearer $GITHUB_TOKEN"

El comando lee el marcador de posición de GITHUB_TOKEN. El proxy lo reemplaza por el token real antes de enviar la solicitud a api.github.com. Si la solicitud tiene éxito, la respuesta contiene los datos de la cuenta del usuario autenticado de GitHub en formato JSON. Si imprimes la variable dentro del sandbox, solo verás el marcador de posición.

Pasa el marcador de posición sin modificarlo en el encabezado de la solicitud HTTPS. El marcador no permite obtener el secreto real para operaciones locales como firmar una solicitud. Para esas tareas, conserva la credencial en tu aplicación y expón la operación mediante una herramienta de función.

Usar credenciales OAuth

Tu aplicación gestiona el flujo de autorización y consentimiento del proveedor. Almacena la autorización obtenida con auth.type: "mcp_oauth". Si sabes cuándo vence el token de acceso, indica ese momento en expires_at con una marca de tiempo en formato RFC 3339.

El siguiente ejemplo usa valores del flujo OAuth de tu proveedor. Incluye refresh para que la API de agentes pueda renovar el token:

Almacenar una autorización 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",
      },
    },
  },
});

Usa el método de autenticación que exige tu proveedor para el punto de acceso de tokens. El ejemplo usa none. También se admiten client_secret_basic y client_secret_post. Consulta los campos en la referencia de creación de credenciales.

Si no es posible renovar un token vencido, reemplázalo por uno válido. El vencimiento del token no elimina la credencial ni su bóveda.

Rotar o eliminar credenciales

Actualiza una credencial para reemplazar su secreto sin cambiar su ID ni su tipo de autenticación. En el caso de las credenciales MCP, la URL del servidor también se mantiene. Para OAuth, usa los valores de vault_id y credential_id que guardaste, junto con el nuevo token y su fecha de vencimiento:

Rotar un token 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,
      },
    },
  }
);

Incluye expires_at si el nuevo token tiene fecha de vencimiento. Si proporcionas un nuevo token de acceso sin fecha de vencimiento, se borra la fecha almacenada. También puedes borrarla si envías null de forma explícita.

Para una credencial de entorno, envía auth.type: "environment_variable" y el nuevo valor de auth.secret_value a POST /v1/vaults/{vault_id}/credentials/{credential_id}. Crea una sesión nueva para usar el nuevo secreto. Actualizar la bóveda no modifica la credencial ya configurada en un sandbox existente.

Para cambiar secret_name o networking, crea una credencial nueva.

Elimina una credencial cuando ya no la necesites. Elimina una bóveda para borrar tanto la bóveda como todas sus credenciales.

Eliminar las credenciales almacenadas no revoca los tokens originales ante sus proveedores ni detiene una sesión en curso. Tu aplicación se encarga de revocar los tokens ante el proveedor y de cancelar la sesión.