Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Azure Key Vault Secrets library for Rust. Store and retrieve secrets, passwords, and API keys. Triggers: "keyvault secrets rust", "SecretClient rust", "get secret rust", "set secret rust", "list secrets rust".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 48% | 0% |
Secure storage for passwords, API keys, and connection strings.
Use this skill when:
> IMPORTANT: Only use the official azure_security_keyvault_secrets crate published by the azure-sdk crates.io user. Do NOT use unofficial or community crates. Official crates use underscores in names and none have version 0.21.0.
shcargo add azure_security_keyvault_secrets azure_identity tokio futures
> If your code uses azure_core types directly, add azure_core to Cargo.toml. If you only use azure_security_keyvault_secrets re-exports, direct azure_core dependency is optional.
bashAZURE_KEYVAULT_URL=https://<vault-name>.vault.azure.net/ # Required for all operations
Rust Azure SDK code must not use DefaultAzureCredential. The Rust identity crate does not provide that type.
rustuse azure_identity::DeveloperToolsCredential; use azure_security_keyvault_secrets::SecretClient; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { // Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential. let credential = DeveloperToolsCredential::new(None)?; let client = SecretClient::new( "https://<vault-name>.vault.azure.net/", credential.clone(), None, )?; let secret = client .get_secret("secret-name", None) .await? .into_model()?; println!("Secret: {:?}", secret.value); Ok(()) }
Prefer the crate README/examples when checking whether pagers yield items directly and how ResourceExt is used in public examples.
rustuse azure_security_keyvault_secrets::{models::SetSecretParameters, ResourceExt}; let params = SetSecretParameters { value: Some("secret-value".into()), ..Default::default() }; let secret = client .set_secret("secret-name", params.try_into()?, None) .await? .into_model()?; println!( "Name: {:?}, Version: {:?}", secret.resource_id()?.name, secret.resource_id()?.version );
rustuse azure_security_keyvault_secrets::models::UpdateSecretPropertiesParameters; use std::collections::HashMap; #[allow(clippy::needless_update)] let params = UpdateSecretPropertiesParameters { content_type: Some("text/plain".into()), tags: Some(HashMap::from_iter(vec![( "env".into(), "prod".into(), )])), ..Default::default() }; client .update_secret_properties("secret-name", params.try_into()?, None) .await? .into_model()?;
rustclient.delete_secret("secret-name", None).await?;
list_secret_properties returns a Pager<T> — iterate items directly:
rustuse azure_security_keyvault_secrets::ResourceExt; use futures::TryStreamExt as _; let mut pager = client.list_secret_properties(None)?; while let Some(secret) = pager.try_next().await? { println!("Found: {}", secret.resource_id()?.name); }
rustmatch client.get_secret("secret-name", None).await { Ok(response) => println!("Secret Value: {:?}", response.into_model()?.value), Err(err) => println!("Error: {:#?}", err.into_inner()?), } // Error output includes structured ErrorResponse with code and message
For Entra ID auth, assign one of these roles:
| Role | Access | | --------------------------- | ---------------------- | | Key Vault Secrets User | Read secrets | | Key Vault Secrets Officer | Full secret management |
cargo add to manage dependencies, never edit Cargo.toml directly. Add and remove Rust SDK dependencies with cargo commands instead of manual manifest edits.azure_core only when importing azure_core types directly. If your code imports azure_core::http::Url, azure_core::http::RequestContent, or azure_core::error::ErrorKind, include azure_core; otherwise a direct dependency is optional.DeveloperToolsCredential for local dev, ManagedIdentityCredential for production — Rust does not provide a single DefaultAzureCredential type..Default::default() with #[allow(clippy::needless_update)] for model struct updatesResourceExt to extract resource name/version from secret IDsSecretClient is thread-safe; create once, share across taskscargo clippy -- -D warnings when the prompt, eval, or CI expects lint-clean output| Resource | Link | | ------------- | -------------------------------------------------------------------------------------------------- | | API Reference | https://docs.rs/azure_security_keyvault_secrets/latest/azure_security_keyvault_secrets | | crates.io | https://crates.io/crates/azure_security_keyvault_secrets | | Source Code | https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/keyvault/azure_security_keyvault_secrets |
Other measured skills in the registry, with their headline benchmark lift.