"Vaults" (cofres) e "credentials" (credenciais) são primitivas de autenticação que permitem registrar credenciais para serviços de terceiros uma única vez e referenciá-las por ID na criação da sessão. Isso significa que você não precisa executar seu próprio armazenamento de segredos, transmitir tokens em cada chamada ou perder o controle de em nome de qual usuário final um agente atuou.
A referência ao vault é um parâmetro por sessão, então você pode gerenciar seu produto na granularidade do recurso agent e seus usuários na granularidade do recurso session.
Um vault é a coleção de credentials associada a um usuário final. Dê a ele um display_name e, opcionalmente, marque-o com metadata para que você possa mapeá-lo de volta aos seus próprios registros de usuário.
VAULT_ID=$(ant beta:vaults create --transform id --raw-output < alice.vault.yaml)
echo "$VAULT_ID" # "vlt_01ABC..."display_name: Alice
metadata:
external_user_id: usr_abc123A resposta é o registro completo do vault:
{
"type": "vault",
"id": "vlt_01ABC...",
"display_name": "Alice",
"metadata": { "external_user_id": "usr_abc123" },
"created_at": "2026-03-18T10:00:00Z",
"updated_at": "2026-03-18T10:00:00Z",
"archived_at": null
}Duas categorias de credenciais são suportadas:
mcp_oauth, static_bearer): cada credencial é identificada por um mcp_server_url. Quando o agente se conecta a um servidor nessa URL em tempo de execução da sessão, o token é injetado automaticamente.environment_variable): cada credencial é identificada por um secret_name (o nome da variável de ambiente) e armazenada no sandbox como um placeholder opaco. Quando o agente inicia uma requisição de saída, o placeholder opaco é substituído pelo segredo real na saída (egress). O agente nunca vê o valor do segredo. Use isso para qualquer serviço que autentique por meio de uma variável de ambiente, como CLIs, SDKs ou chamadas diretas de API.Os valores reais de credenciais que você fornece (token, access_token, refresh_token, client_secret, secret_value) são tratados como campos sensíveis, somente de escrita, e nunca são retornados nas respostas da API.
Use mcp_oauth quando o servidor MCP usa OAuth 2.0. Se você fornecer um bloco refresh, a Anthropic atualiza o access token em seu nome quando ele expira.
O campo refresh.token_endpoint_auth.type indica como autenticar a chamada de refresh:
none: cliente públicoclient_secret_basic: autenticação HTTP Basic com o client secretclient_secret_post: client secret no corpo do POSTCREDENTIAL_ID=$(ant beta:vaults:credentials create \
--vault-id "$VAULT_ID" \
--display-name "Alice's Slack" \
--transform id --raw-output <<'YAML'
auth:
type: mcp_oauth
mcp_server_url: https://mcp.slack.com/mcp
access_token: xoxp-...
expires_at: "2099-12-31T23:59:59Z"
refresh:
token_endpoint: https://slack.com/api/oauth.v2.access
client_id: "1234567890.0987654321"
scope: channels:read chat:write
refresh_token: xoxe-1-...
token_endpoint_auth:
type: client_secret_post
client_secret: abc123...
YAML
)As credenciais são armazenadas conforme fornecidas e não são validadas até o tempo de execução da sessão. Uma credencial inválida aparece como um erro de autenticação ou erro downstream durante a sessão, que é emitido mas não impede a sessão de continuar.
Restrições:
mcp_server_url (credenciais MCP) e secret_name (credenciais de variável de ambiente) devem ser únicos entre as credenciais ativas em um vault. Criar uma duplicata retorna um 409.mcp_server_url ou secret_name, arquive a credencial e crie uma nova.Passe vault_ids ao criar uma sessão:
SESSION_ID=$(ant beta:sessions create \
--agent "$AGENT_ID" \
--environment-id "$ENVIRONMENT_ID" \
--vault-id "$VAULT_ID" \
--title "Alice's Slack digest" \
--transform id --raw-output)Comportamento em tempo de execução:
mcp_server_url, a conexão é tentada sem autenticação e resultará em erro se o servidor exigir autenticação.Valores de segredo, display_name e (em credenciais de variável de ambiente) injection_location podem ser atualizados. Atualizações de injection_location são mescladas por campo, conforme descrito na aba Variável de ambiente de Adicionar uma credencial. Para uma sessão em execução, uma atualização de injection_location se propaga da mesma forma que uma rotação de segredo: as credenciais da sessão são re-resolvidas sem reinicialização, conforme descrito em Ciclo de vida da credencial, e os locais atualizados se aplicam às requisições de saída subsequentes da sessão. Campos estruturais (mcp_server_url, secret_name, token_endpoint, client_id) são bloqueados após a criação. Para alterá-los, arquive a credencial e crie uma nova.
ant beta:vaults:credentials update \
--vault-id "$VAULT_ID" \
--credential-id "$CREDENTIAL_ID" <<'YAML'
auth:
type: mcp_oauth
access_token: xoxp-new-...
expires_at: "2099-12-31T23:59:59Z"
refresh:
refresh_token: xoxe-1-new-...
YAMLAs credenciais são re-resolvidas periodicamente, tanto durante uma sessão quanto durante o ciclo de vida do vault. Isso garante que a rotação, arquivamento ou exclusão de credenciais se propague para sessões em execução sem reinicialização.
Para ser notificado se uma credencial for arquivada, excluída ou falhar ao atualizar, você pode se inscrever nos webhooks de vault e credencial associados a essas mudanças de ciclo de vida.
| Evento | Gatilho |
|---|---|
vault.archived | Vault arquivado. Um evento vault_credential.archived também é emitido para cada credencial subjacente. |
vault.deleted | Vault excluído. Um evento vault_credential.deleted também é emitido para cada credencial subjacente. |
vault_credential.archived | Credencial arquivada, seja diretamente ou como resultado do arquivamento do vault. |
vault_credential.deleted | Credencial excluída, seja diretamente ou como resultado da exclusão do vault. |
vault_credential.refresh_failed | Uma credencial mcp_oauth não pode ser atualizada (refresh token inválido ou erro irrecuperável do servidor OAuth). |
Para credenciais mcp_oauth, a re-resolução também atualiza o access token se ele tiver expirado. Se o refresh falhar, um evento vault_credential.refresh_failed é emitido.
Para diagnosticar por que um refresh falhou, chame POST /v1/vaults/{vault_id}/credentials/{credential_id}/mcp_oauth_validate (ou client.beta.vaults.credentials.mcp_oauth_validate(...) no SDK). Isso permite que você decida como lidar com a falha; a ação correta depende do tipo de erro.
O status de nível superior indica o que fazer a seguir:
valid: o token funciona; nenhuma ação necessária.invalid: o grant foi perdido ou o servidor OAuth rejeitou o refresh com um 4xx. Solicite ao usuário final que reautorize.unknown: um erro transitório (5xx, 429 ou falha de rede). Aguarde e tente novamente.ant beta:vaults:credentials mcp-oauth-validate \
--vault-id "$VAULT_ID" \
--credential-id "$CREDENTIAL_ID" \
--transform status --raw-output # "valid", "invalid", or "unknown"A resposta é um objeto vault_credential_validation. mcp_probe inclui a etapa de handshake MCP que falhou; refresh inclui o resultado da tentativa de refresh.
{
"type": "vault_credential_validation",
"credential_id": "vcrd_01ABC...",
"vault_id": "vlt_01XYZ...",
"validated_at": "2026-04-29T17:12:00Z",
"has_refresh_token": false,
"status": "invalid",
"mcp_probe": {
"method": "initialize",
"http_response": {
"status_code": 401,
"content_type": "application/json",
"body": "{\"error\":\"invalid_token\"}",
"body_truncated": false
}
},
"refresh": {
"status": "no_refresh_token",
"http_response": null
}
}include_archived=true para incluí-los).POST /v1/vaults/{id}/archive. Propaga em cascata para todas as credenciais. Segredos são eliminados; registros são retidos para auditoria. Sessões futuras que referenciam este vault falham; sessões em execução continuam.POST /v1/vaults/{id}/credentials/{cred_id}/archive. Elimina o payload do segredo; a chave da credencial (mcp_server_url ou secret_name) permanece visível e é liberada para uma credencial substituta.Was this page helpful?