For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal
Theme

Cofres

Armazene segredos para conexões MCP ou requisições feitas pelo sandbox.

Um cofre armazena credenciais fora das instruções e da configuração do agente. Vincule o cofre a uma sessão usando vault_ids para que ela possa usar essas credenciais.

Escolha o tipo de credencial de acordo com a origem da requisição:

Requisição Tipo de credencial Como a sessão usa a credencial
Conexão MCP iniciada pela OpenAI static_bearer ou mcp_oauth A OpenAI se autentica no servidor MCP configurado.
Requisição de API feita por um sandbox hospedado pela OpenAI environment_variable O código usa uma variável de ambiente que contém um valor substituto. Nas requisições para hosts autorizados, um proxy de rede troca esse valor pelo segredo.

Por exemplo, um sandbox pode usar um segredo do cofre para chamar a API REST do GitHub. Siga as instruções em Usar segredos do cofre em requisições de API feitas pelo sandbox.

Quando você consulta um cofre ou uma credencial, a API não retorna os valores dos segredos. Para outras conexões MCP, consulte as opções de autenticação MCP.

Permissões

Para uma chave de aplicativo com acesso restrito, conceda as seguintes permissões:

  • api.vaults.read para listar e consultar cofres e credenciais.
  • api.vaults.write para criar, atualizar ou excluir cofres e credenciais.

Criar e usar um cofre para segredos de conexões MCP

Use seu cliente de API, a URL do servidor MCP (mcp_url) e um token de acesso a esse servidor (access_token). Os exemplos usam ferramentas do GitHub.

Primeiro, crie um cofre:

Criar um cofre
const vault = await client.beta.agents.vaults.create({
  name: "GitHub credentials",
  metadata: {
    external_user_id: "user_123",
  },
});

Salve o ID do cofre como vault_id e adicione o token. O campo mcp_server_url vincula a credencial ao servidor:

Armazenar um token 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,
  },
});

Salve o ID da credencial como credential_id para atualizá-la depois.

Ao criar uma sessão, passe o ID do cofre em vault_ids. Use a mesma URL do servidor na configuração do MCP:

Vincular o cofre a uma sessão
// 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],
});

A API de Agentes seleciona uma credencial que corresponde à URL do servidor. Se várias credenciais vinculadas à sessão corresponderem à URL, defina o campo credential_id da ferramenta MCP para selecionar uma delas.

Usar segredos do cofre em requisições de API feitas pelo sandbox

Use uma credencial do tipo environment_variable para fornecer um segredo em requisições de API feitas por um sandbox hospedado pela OpenAI. O sandbox recebe um valor substituto na variável de ambiente indicada. O segredo real permanece fora do sandbox.

Esse fluxo exige um ambiente do tipo openai_hosted. Ele não fornece credenciais a ambientes de hospedagem própria nem a ferramentas de função executadas pelo aplicativo.

Armazenar o token da API

Crie um cofre conforme as instruções acima. Em seguida, envie uma requisição de criação de credencial para POST /v1/vaults/{vault_id}/credentials com os seguintes campos:

Campo Valor para um token da API do GitHub
name GitHub API token
auth.type environment_variable
auth.secret_name GITHUB_TOKEN
auth.secret_value O token que o aplicativo lê de uma variável de ambiente secreta.
auth.networking.type limited
auth.networking.allowed_hosts ["api.github.com"]

secret_name identifica a variável de ambiente que o código lê no sandbox. secret_value contém a credencial real. Mantenha esse valor fora de prompts, arquivos de código-fonte e logs.

Em allowed_hosts, use os nomes exatos dos hosts, sem esquema, caminho, porta ou curinga. O proxy fornece segredos apenas a destinos HTTPS na porta 443 ou 8443.

Vincular o cofre a uma sessão hospedada

Inclua os campos abaixo junto com agent ao criar uma sessão. Substitua vault_123 pelo ID do cofre retornado pela API:

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

As duas listas de hosts têm funções diferentes. A lista allowed_domains permite que o sandbox se conecte a um host. A lista allowed_hosts da credencial permite que o proxy forneça o segredo a esse host.

Se o acesso à rede for restrito, inclua em allowed_domains todos os hosts das credenciais. Não defina network.access como disabled em uma sessão com credenciais de ambiente.

Cada credencial de ambiente vinculada à sessão precisa ter um secret_name exclusivo. Não defina esse mesmo nome em environment.env.

Chamar a API a partir do sandbox

Envie uma mensagem ao agente pedindo que execute este comando no sandbox:

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

O comando lê o valor substituto de GITHUB_TOKEN. O proxy troca esse valor pelo token real antes de enviar a requisição para api.github.com. Se a requisição for bem-sucedida, a API retornará os dados da conta do usuário autenticado no GitHub em formato JSON. Ao exibir o conteúdo da variável dentro do sandbox, você verá apenas o valor substituto.

Passe o valor substituto sem alterações no cabeçalho da requisição HTTPS. Esse valor não dá acesso ao segredo real para operações locais, como assinar uma requisição. Para essas tarefas, mantenha a credencial no aplicativo e disponibilize a operação por meio de uma ferramenta de função.

Usar credenciais OAuth

Seu aplicativo gerencia o fluxo de autorização e consentimento do provedor. Armazene a autorização obtida com auth.type: "mcp_oauth". Se souber quando o token de acesso expira, informe a data e a hora em expires_at no formato RFC 3339.

O exemplo a seguir usa valores do fluxo OAuth do seu provedor. Inclua refresh para permitir que a API de Agentes renove o token:

Armazenar uma autorização 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",
      },
    },
  },
});

Use o método de autenticação exigido pelo provedor para o endpoint de token. O exemplo usa none. A API também aceita client_secret_basic e client_secret_post. Consulte os campos na referência de criação de credenciais.

Se não for possível renovar um token expirado, forneça outro token válido. A expiração do token não exclui a credencial nem o cofre que a contém.

Substituir segredos ou remover credenciais

Atualize uma credencial para substituir o segredo sem alterar o ID nem o tipo de autenticação. Para credenciais MCP, a URL do servidor também permanece a mesma. Para OAuth, use os valores salvos de vault_id e credential_id com o novo token e sua data de expiração:

Substituir um 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,
      },
    },
  }
);

Se o novo token tiver data de expiração, inclua expires_at. Ao fornecer um novo token de acesso sem data de expiração, você remove a data armazenada. Enviar null explicitamente tem o mesmo efeito.

Para uma credencial de ambiente, envie auth.type: "environment_variable" e o novo valor de auth.secret_value para POST /v1/vaults/{vault_id}/credentials/{credential_id}. Crie uma nova sessão para usar o novo valor. Atualizar o cofre não altera a credencial já configurada em um sandbox existente.

Para alterar secret_name ou networking, crie uma nova credencial.

Exclua uma credencial quando não precisar mais dela. Exclua um cofre para remover o cofre e todas as suas credenciais.

Excluir credenciais armazenadas não revoga os tokens originais nos respectivos provedores nem interrompe uma sessão em andamento. Cabe ao aplicativo revogar os tokens no provedor e cancelar a sessão.