Vault dan kredensial adalah primitif autentikasi yang memungkinkan Anda mendaftarkan kredensial untuk layanan pihak ketiga satu kali dan mereferensikannya berdasarkan ID saat pembuatan sesi. Ini berarti Anda tidak perlu menjalankan penyimpanan rahasia sendiri, mengirimkan token pada setiap panggilan, atau kehilangan jejak pengguna akhir mana yang diwakili oleh agen saat bertindak.
Referensi vault adalah parameter per sesi, sehingga Anda dapat mengelola produk Anda pada granularitas sumber daya agent dan pengguna Anda pada granularitas sumber daya session.
Vault adalah kumpulan credentials yang terkait dengan pengguna akhir. Berikan display_name dan secara opsional tandai dengan metadata agar Anda dapat memetakannya kembali ke catatan pengguna Anda sendiri.
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_abc123Responsnya adalah catatan vault lengkap:
{
"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
}Dua kategori kredensial didukung:
mcp_oauth, static_bearer): setiap kredensial dikunci oleh mcp_server_url. Ketika agen terhubung ke server pada URL tersebut saat runtime sesi, token diinjeksikan secara otomatis.environment_variable): setiap kredensial dikunci oleh secret_name (nama variabel lingkungan) dan disimpan di sandbox sebagai placeholder buram. Ketika agen memulai permintaan keluar, placeholder buram tersebut disubstitusi dengan rahasia sebenarnya saat egress. Agen tidak pernah melihat nilai rahasia tersebut. Gunakan ini untuk layanan apa pun yang mengautentikasi melalui variabel lingkungan, seperti CLI, SDK, atau panggilan API langsung.Nilai kredensial aktual yang Anda berikan (token, access_token, refresh_token, client_secret, secret_value) diperlakukan sebagai field sensitif yang hanya dapat ditulis dan tidak pernah dikembalikan dalam respons API.
Gunakan mcp_oauth ketika server MCP menggunakan OAuth 2.0. Jika Anda menyediakan blok refresh, Anthropic akan me-refresh access token atas nama Anda ketika token tersebut kedaluwarsa.
Field refresh.token_endpoint_auth.type menunjukkan cara mengautentikasi panggilan refresh:
none: public clientclient_secret_basic: autentikasi HTTP Basic dengan client secretclient_secret_post: client secret dalam body 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
)Kredensial disimpan sebagaimana diberikan dan tidak divalidasi hingga runtime sesi. Kredensial yang tidak valid muncul sebagai error autentikasi atau error downstream selama sesi, yang dipancarkan tetapi tidak memblokir sesi untuk melanjutkan.
Batasan:
mcp_server_url (kredensial MCP) dan secret_name (kredensial variabel lingkungan) harus unik di antara kredensial aktif dalam sebuah vault. Membuat duplikat mengembalikan 409.mcp_server_url atau secret_name, arsipkan kredensial dan buat yang baru.Teruskan vault_ids saat membuat sesi:
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)Perilaku runtime:
mcp_server_url, koneksi dicoba tanpa autentikasi dan akan error jika server memerlukan autentikasi.Nilai rahasia, display_name, dan (pada kredensial variabel lingkungan) injection_location dapat diperbarui. Pembaruan injection_location digabungkan per field, seperti dijelaskan di tab Variabel lingkungan pada Menambahkan kredensial. Untuk sesi yang sedang berjalan, pembaruan injection_location dipropagasi dengan cara yang sama seperti rotasi rahasia: kredensial sesi diselesaikan ulang tanpa restart, seperti dijelaskan di Siklus hidup kredensial, dan lokasi yang diperbarui berlaku untuk permintaan keluar sesi berikutnya. Field struktural (mcp_server_url, secret_name, token_endpoint, client_id) dikunci setelah pembuatan. Untuk mengubahnya, arsipkan kredensial dan buat yang baru.
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-...
YAMLKredensial diselesaikan ulang secara berkala, baik selama sesi maupun selama siklus hidup vault. Ini memastikan bahwa rotasi, pengarsipan, atau penghapusan kredensial dipropagasi ke sesi yang sedang berjalan tanpa restart.
Untuk mendapatkan notifikasi jika kredensial diarsipkan, dihapus, atau gagal di-refresh, Anda dapat berlangganan webhook vault dan kredensial yang terkait dengan perubahan siklus hidup tersebut.
| Event | Pemicu |
|---|---|
vault.archived | Vault diarsipkan. Event vault_credential.archived juga dipancarkan untuk setiap kredensial yang mendasarinya. |
vault.deleted | Vault dihapus. Event vault_credential.deleted juga dipancarkan untuk setiap kredensial yang mendasarinya. |
vault_credential.archived | Kredensial diarsipkan, baik secara langsung maupun sebagai akibat dari pengarsipan vault. |
vault_credential.deleted | Kredensial dihapus, baik secara langsung maupun sebagai akibat dari penghapusan vault. |
vault_credential.refresh_failed | Kredensial mcp_oauth tidak dapat di-refresh (refresh token tidak valid, atau error yang tidak dapat dipulihkan dari server OAuth). |
Untuk kredensial mcp_oauth, penyelesaian ulang juga me-refresh access token jika telah kedaluwarsa. Jika refresh gagal, event vault_credential.refresh_failed dipancarkan.
Untuk mendiagnosis mengapa refresh gagal, panggil POST /v1/vaults/{vault_id}/credentials/{credential_id}/mcp_oauth_validate (atau client.beta.vaults.credentials.mcp_oauth_validate(...) di SDK). Ini memungkinkan Anda memutuskan cara menangani kegagalan tersebut; tindakan yang tepat bergantung pada jenis error.
status tingkat atas memberi tahu Anda apa yang harus dilakukan selanjutnya:
valid: token berfungsi; tidak ada tindakan yang diperlukan.invalid: grant telah hilang atau server OAuth menolak refresh dengan 4xx. Minta pengguna akhir untuk mengotorisasi ulang.unknown: error sementara (5xx, 429, atau kegagalan jaringan). Tunggu dan coba lagi.ant beta:vaults:credentials mcp-oauth-validate \
--vault-id "$VAULT_ID" \
--credential-id "$CREDENTIAL_ID" \
--transform status --raw-output # "valid", "invalid", or "unknown"Responsnya adalah objek vault_credential_validation. mcp_probe menyertakan langkah handshake MCP yang gagal; refresh menyertakan hasil dari refresh yang dicoba.
{
"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 untuk menyertakannya).POST /v1/vaults/{id}/archive. Berlaku secara cascade ke semua kredensial. Rahasia dihapus; catatan dipertahankan untuk audit. Sesi mendatang yang mereferensikan vault ini gagal; sesi yang sedang berjalan tetap berlanjut.POST /v1/vaults/{id}/credentials/{cred_id}/archive. Menghapus payload rahasia; kunci kredensial (mcp_server_url atau secret_name) tetap terlihat dan dibebaskan untuk kredensial pengganti.Was this page helpful?